您的当前位置:首页正文

计算机2级C++试题(附答案)

2020-05-25 来源:好走旅游网
计算机2级C++试题(附答案)

试卷⼀

⼀、理论题(20分,每⼩题1分)

(1)【单选题】下⾯程序的输出结果是_________。#includefun(int x){ int p;

if(x==0||x==1) return(3);p=x-fun(x-2);return p;}

void main(){cout(2)【单选题】下⾯程序运⾏时,若从键盘上输⼊2.0并回车,则输出结果是_________。#includevoid main(){ float x,y;cin>>x;if(x<0.0) y=0.0;

else if((x<10.0)&&(x!=2.0))y=1.0/(x+2.0);else if(x<5.0) y=1.0/x;else y=5.0;cout<}A) 0.5B) 1.0C) 0.0D) 0.25参考答案:A

(3)【单选题】C++源程序⽂件的默认扩展名为_________。A) c++B) cppC) ccD) c参考答案:B

(4)【单选题】下⾯程序的输出结果是_________。#include

{ char *p[ ]={\"mop\int i;

for(i=3;i>=0;i--,i--) cout<<*p[i];cout<}A) sbB) spbookC) spD) swb参考答案:A

(5)【单选题】下⾯定义的共⽤体类型的长度是_________字节。union MyData{ long x;char ch;bool flag;float y;};A) 8B) 4C) 2D) 6参考答案:B

(6)【单选题】以下程序段中的循环体被执⾏的次数是_________。for(i=4;i;i-=2)for(j=1;j<4;j++){……};A) ⽆限多次

B) 8C) 6D) 2参考答案:C

(7)【单选题】下⾯程序的输出结果是_________。#includevoid main(){ int x[ ]={2,4,6,8},i;int *p=x;

for(i=0;i<4;i++) x[i]=*p++;cout<}A) 6B) 4C) 8D) 2

(8)【单选题】C++的字符串\"\\\1026\\\\'\"中包含_________个可见的字符。A) 10B) 5C) 4D) 6参考答案:C

(9)【单选题】以下程序段运⾏时,若从键盘上输⼊Open the door并回车,则输出结果是_________。char fun(char *c)

{ if(*c<='z' && *c>='a') *c-='a'-'A';return *c;}

void main(){ char s[81],*p=s;gets(s);while(*p)

{*p=fun(p);putchar(*p);p++;}putchar('\\n');}

A) open the door

B) OPEN THE DOORC) Open the doorD) oPEN THE DOOR参考答案:B

(10)【单选题】若有以下程序段,则变量v的值是_________。int m=1,n=2,v;v=m/n;A) 0B) 1/2C) 0.5D) 1参考答案:A

(11)【单选题】若m和n都是整型变量,且m=3,n=5,则以下语句输出的结果是_________。cout<<(m+=n,n)B) 语句格式有错,⽆输出结果C) 3D) 8,5参考答案:A

(12)【单选题】下⾯程序的输出结果是_________。#include

#define sub(x,y) (x)*x+yvoid main(){ int a=3,b=4;cout<}A) 6B) 13C) 21D) 20参考答案:B

(13)【单选题】下⾯程序的输出结果是_________。#includevoid main(){ int num=1;

while(num<=2){num++;cout<}A) 123B) 23C) 12D) 1参考答案:B

(14)【单选题】下⾯程序的输出结果是_________。#includevoid main()

{ int x=0,y=1,a=0,b=0;switch(x){ case 0:switch(y)

{ case 0:a++;break;case 1:b++;break;}case 1:a++;b++;break;}cout<}A) 2,1B) a,1C) 1,2D) 1,0参考答案:C

(15)【单选题】若有下⾯的程序⽚段:int a[12]={0},*p[3],i;for(i=0;i<3;i++) p[i]=&a[i*4];

则对数组元素的错误引⽤是_________。B) p[0]C) *(*p+0)D) a[0]

参考答案:B

(16)【单选题】下⾯程序的输出结果是_________。#include#includevoid main()

{ char *x1=\"abcdef\x1++;x2++;cout<}A) -1

B) 不确定的值C) 1D) 0参考答案:C

(17)【单选题】下⾯程序运⾏时,若从键盘上输⼊3.6 2.4并回车,则输出结果是_________。#include#includevoid main(){ float x,y,z;cin>>x>>y;z=x/y;while(1)

{ if(fabs(z)>1.0){x=y;y=z;z=x/y;}else break;}cout<}A) 2.0B) 1.5C) 1.6D) 2.4参考答案:C

(18)【单选题】下⾯程序的输出结果是_________。#includef(int a[ ],int n)

{ int i,x;x=1;

for(i=0;i<=n;i++) x=x*a[i];return x;}

{ int y,x[ ]={1,2,3,4,5};y=f(x,3);cout<}A) 120B) 6C) 24D) 12参考答案:C

(19)【单选题】以下关于函数的说法中,正确的是_________。A) 如果形参与实参类型不⼀致,以实参类型为准

B) 如果函数值的类型与返回值类型不⼀致,以函数值类型为准C) 形参的类型说明可以放在函数体内,以实参类型为准D) return后边的值不能为表达式参考答案:B

(20)【单选题】有关类和对象的说法不正确的是_________。A) 任何⼀个对象只能属于⼀个具体的类B) 对象是类的⼀个实例C) ⼀个类只能有⼀个对象

D) 类与对象的关系与数据类型和变量的关系相似参考答案:C⼆、操作题(80分)

1、【简单操作题】(注:以下⽂件均保存在试题盘shiti\\pro\\4000247⽂件夹中)打开proj1.cpp,将⼀维数组按升序排列,请在提⽰处填上正确的代码,要求:补充语句处只写⼀条语句。(题分:15分)参考答案:

//程序功能:将⼀维数组按升序排列后输出

//注意:请在提⽰处填上正确的代码,要求:补充语句处只写⼀条语句#include

void sort ( int *p,int n){ int i,j,temp;for (i=0;i

//请在两条星线之间填⼊相应的代码,内层循环:实现每趟两两⽐较的次数/**************************************************/for(j=1;j

/***************************************************/if(p[j-1]>p[j]){

temp=p[j-1];

//请在两条星线之间填⼊相应的代码,实现两个数的交换/**************************************************/p[j-1]=p[j];

/***************************************************/p[j]=temp;}}

void main( void){

int a1[6]={34,13,22,53,4,46},*pi,i;

//请在两条星线之间填⼊相应的代码,实现指针指向数组/**************************************************/pi=a1;

/***************************************************/sort (pi,6) ;

for (i=0;i<6;i++) cout2、【简单应⽤题】(注:以下⽂件均保存在试题盘shiti\\pro\\4000248⽂件夹中)打开proj2.cpp,编写Count函数,计算个⼈所得税,⽉收⼊的5000元以上部分需缴纳20%的税,800元以上5000元之间部分需缴纳3%的税,800元以下的部分免税。在两条星线之间填⼊相应的代码,使程序完成该功能。(题分:20分)参考答案:

//编写代码完成Count函数功能:计算个⼈所得税,并使⽤return语句把结果返回主函数。//例如,⼩张⽉收⼊为6000元,则她需缴税(6000-5000)×20%+(5000-800)×3%=326元。

//注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。补充语句不限⼀句,可多句。#include

double Count(float temf){

//请在两条星线之间填⼊相应的代码,完成应缴税款的计算/***********************************************/

int tax;

if(temf>5000)tax=(temf-5000)*0.2+(5000-800)*0.03;else if(temf>800)tax=(temf-800)*0.03;else tax=0;return tax;

/************************************************/}

void main(){

float tax,income;

cout<<\"请输⼊你的收⼊:\";cin>>income;tax=Count(income);cout<<\"应缴税:\"<}

3、【简单操作题】(注:以下⽂件均保存在试题盘shiti\\pro\\4000249⽂件夹中)打开proj3.cpp,输⼊⼀⾏字符串,要求将每个单词中的第⼀个字母改成⼤写字母(如果已经是⼤写则不变)。(提⽰:读⼀⾏字符⽤cin.getline()。)(题分:20分)参考答案:

//程序功能:输⼊⼀⾏字符串,要求将每个单词中的第⼀个字母改成⼤写字母(如果已经是⼤写则不变)//注意:补充语句不限⼀句,可多句。//提⽰:读⼀⾏字符⽤cin.getline( )#include#includevoid main(){

char str[100],*p=str;int k=0;

//k为新单词标识,若为新单词k为0,否则k为1

//请在两条星线之间填⼊相应的代码(必须使⽤while循环语句)/******************************************/cin.getline(p,100,'\\n');while(*p!='\\n'){

if(*p==' ')k=0;else if(k==0){

if(*p>='a' && *p<='z')*p=*p-32;k=1;}p++;}

cout<<\"结果:\"<

/******************************************/}

4、【简单操作题】(注:以下⽂件均保存在试题盘shiti\\pro\\4000250⽂件夹中)已知⼀个源程序⽂件proj4.cpp,其中定义了学⽣类Student,但类Student的定义并不完整,请按要求完成下列操作,将类Student的定义补充完整:

(1)定义私有数据成员chinese、math和english分别⽤于表⽰语⽂、数学和英语的成绩,它们都是float型的数据。(2)完成学⽣类Student的构造函数的定义,把数据成员chinese、math和english分别初始化为参数c,m,e的值。(3)完成成员函数sum的类定义,求Student对象的总分并输出到屏幕上。(4)完成成员函数average的类定义,求Student对象的平均分并输出到屏幕上。程序运⾏结果如下图所⽰。(题分:25分)

参考答案:

//注意:除在指定位置添加语句之外,请不要改动程序中的其他内容,补充语句不限⼀句,可多句#includeclass Student{public:

Student(int c,int m,int e){

//请在两条星线之间填⼊相应的代码

//补充完成学⽣类Student的构造函数的定义, 把数据成员chinese、math和english 分别初始化为参数c,m,e的值/***********************************************************************/ chinese=(float)c;math=(float)m;english=(float)e;

/***********************************************************************/ }void sum(){

//请在两条星线之间填⼊相应的代码

//补充完成成员函数sum的定义,求Student对象的总分并输出到屏幕上

/***********************************************************************/ float sum;sum=chinese+math+english;cout<<\"总分:\"<

/***********************************************************************/ }void average();private:

//请在两条星线之间填⼊相应的代码

//定义私有数据成员chinese、math和english分别⽤于表⽰语⽂、数学和英语的成绩,它们都是float型的数据/***********************************************************************/ float chinese,math,english;/***********************************************************************/ };//请在两条星线之间填⼊相应的代码

//完成成员函数average的类外定义,求Student对象的平均分并输出到屏幕上

/***********************************************************************/ void Student::average(){float avg;

avg=(chinese+math+english)/3;cout<<\"平均分:\"<}

/***********************************************************************/ int main(){

Student stud(65.3,78,90);stud.sum();stud.average();return 0;}

因篇幅问题不能全部显示,请点此查看更多更全内容