资源描述
一、选择题
1. 在每个C++程序中都必须包含有这样一个函数,该函数的函数名为 A 。
A. main B. MAIN C. name D. function
2. 假设a,b均为int型变量,为了将10赋给a,将20赋给b,那么对应以下cin语句的正确输入方式为 B 。(<CR>代表回车换行,_代表空格)。
cin >> a >> b;
A.1020<CR> B.10_20<CR> C.10,20<CR> D.20_10<CR>
3. 在以下关于C++语言的注释的表达中,不正确的选项是 C 。
A.C++程序中,注释可用"/*"、"*/"形式表示,也可用"//"形式表示
B.C++编译器在编译一个程序时,将跳过注释,不对其进展处理
C.C++编译器在编译一个程序时,可发现注释中的单词拼写错误
D.程序中注释的多少不会影响所生成的可执行文件的长度
4. 以下表达不正确的选项是 C 。
A.在C++程序中,严格区分大小写字母
B.一个C++源程序有且仅有一个main函数
C.在C++程序中,注释只能位于一条语句的后面
D.一个C++程序总是从main函数开场执行
5. C++语言对C语言做了很多改良,C++语言相对于C语言的最根本的变化是 D
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类与对象的概念
6. C++是 C
A. 面向对象的程序设计语言
B. 构造化程序设计语言
C. 既是面向对象的程序设计语言又是构造化程序设计语言
D. 非构造化程序设计语言
7. 以下合法的标识符为 D
A. abde+ B. #KDJF C. 67KDJ D. DK3_
8. 关于字符串与字符的关系正确的选项是 C
A. “A〞与’A’是一样的
B. 字符串是常量,字符是变量
C. “A〞与’A’是不同的
if (x>y)
{z=x; s=z*z;}
else
{z=y;s=1/(z*z);}
if (x>y)
z=x; s=z*z;
else
z=y;s=1/(z*z);
D. “A 〞与“A〞是一样的
9. 下面关于语句的说法正确的选项是 B
A. 下面这两段程序的执行效果是一致的
B. 空语句是只有一个分号的语句,它其实什么也不干
C. 语句的构成不一定需要分号
D. 语句的书写对程序的运行不起作用,因此可以随便写都可以
10. 以下各标识符中,合法的用户标识符组为 D 。
A. PAd,P#d,b-b,abc,_0123,ssiped
B. cin,a10,CPP,float,del_word,signed
C. void,max,hiy,<fr>,list,*jer
D. a,temp,_isw,INT,keep,wind
11. 在VC++中,以下语句的输出为 D 。
short int k= -1;
cout << k << ',' << (unsigned short) k <<endl;
A.-1,-1 B.-1,32767 C.-1,32768 D.-1,65535
12. 假设给出以下程序,其输出为 B 。
#include <iostream>
using namespace std;
int main ( )
{ int a=4,b=7;
cout << (a=a+1,b+a,b+1) << endl;
return 0;
A.5 B.8 C.11 D.程序有错误,无法运行
13. 字符串“\〞EOF= -\61\〞〞的长度是 A 。
A. 8 B. 9 C. 12 D. 非法字符串
14. 数学式在C++程序中对应正确的表达式为 B 。
A.sqrt(sin(x)>0sin(x):-sin(x)) B.sqrt(fabs(sinx))
C.sqrt(sqrt(sinx*sinx)) D.fabs(sqrt(sin(x)))
15. 以下 A 是C++语言的有效标识符
A._No1 B. C.12345 D.int
16. C++语言中,表示一条语句完毕的标号是 B
A.# B.; C.// D.}
17. 每个C++程序中都必须有且仅有一个 C
A.类 B.预处理命令 C.主函数 D.语句
18. 以下数据类型不是C++语言根本数据类型的是 D 。
A.字符型 B.整型 C.实型 D.数组
19. 以下字符列中,可作为C++语言程序自定义标识符是 B 。
A.switch B.file C.break D.do
20. 运算符 +、<=、=、% 中,优先级最低的运算符是 C 。
A. + B.<= C.= D.%
21. 以下字符列中,可以作为“字符串常量〞的是 B 。
A. ABC B.″xyz″ C.′uvw′ D. ′a′
22. 设变量m,n,a,b,c,d均为0,执行(m = a= =b)||(n=c= =d)后,m,n的值是 D 。
A.0,0 B. 0,1 C. 1,0 D. 1,1
23. 字符串"vm\x43\\\np\102q"的长度是 A 。
A. 8 B. 10 C. 17 D. 16
24. 在C++语言中,自定义的标识符 D 。
A.能使用关键字并且不区分大小写
B.不能使用关键字并且不区分大小写
C.能使用关键字并且区分大小写
D.不能使用关键字并且区分大小写
25. 设有代码“int a = 5;〞,那么执行了语句“a + = a - = a*a;〞后,变量a的值是 C 。
A.3 B. 0 C. -40 D. –12
26. 设a为5,执行以下代码后,b的值不为2的是 C 。
A.b = a/2 B.b = 6-(--a)
C.b = a%2 D.b = a < 3 3: 2
27. 设x与y均为bool量,那么x && y为真的条件是 A 。
A. 它们均为真 B. 其中一个为真
C. 它们均为假 D. 其中一个为假
28. 假设给定条件表达式(m)(a++): (a--),那么其中表达式m C 。
A. 与(m= =0)等价 B. 与(m= =1)等价
C. 与(m!=0)等价 D. 与(m!=1)等价
29. 在C++语言的if语句中,用作判断的表达式为 D 。
A. 关系表达式 B. 逻辑表达式
C. 算术表达式 D. 任意表达式
30. 设i与k都是int类型,那么以下for循环语句 B 。
for ( i=0, k= -1; k=1; i++, k++ ) cout << "****\n";
A. 判断循环完毕的条件不合法 B. 是无限循环
C. 循环体一次也不执行 D. 循环体只执行一次
31. 假设有以下语句,那么输出结果为 A 。
int a=2,b=1;
cout << a>b"a大于b":"a小于b" << endl;
A. a大于b B. a小于b C. 1 D. 输出语句有错
32. int k=10;
while(k=0) k=k-1;
那么下面描述正确的选项是 C 。
A. while循环执行10次 B. 循环是无限循环
C. 循环体语句一次也不执行 D. 循环体语句执行一次
33. int a=1,b=2,c=2,t;
while(a<b) {t=a;a=b;b=t;c--;}
cout<<a<<〞,〞<<b<<〞,〞<<c;
运行结果为 D 。
A. 1,2,0 B. 2,1,0 C. 1,2,1 D. 2,1,1
34. int x=-1;
do
{x=x*x;}
while(!x);
以下说法正确的选项是 C 。
A. 是死循环 B. 循环执行两次
C. 循环执行一次 D. 有语法错误
35. 以下能正确计算1*2*3*…*10的程序段是 C 。
A. do {i=1;s=1; B. do {i=1;s=0;
s=s*i; i++;} s=s*i;i++;}
while(i<=10); while(i<=10);
C. i=1;s=1; D. i=1;s=0;
do {s=s*i; do{s=s*i;
i++;} i++;}
while(i<=10); while(i<=10);
36. 以下描述正确的选项是 C 。
A. 由于do-while循环中循环体语句只是一条可执行语句,所以循环体内不能使用复合语句
B. do-while循环由do开场,用while完毕,在while(表达式)后面不能写分号
C. 在do-while循环体中,一定要有能使while后面表达式的值变为零〔“假〞〕的操作
D. do-while循环中,根据情况可以省略while
37. C++中while与do-while循环的主要区别是 A 。
A. do-while的循环体至少无条件执行一次
B. while的循环控制条件比do-while的循环控制条件严格
C. do-while允许从外部转到循环体内
D. do-while的循环体不能是复合语句
38. 下面有关for循环的正确描述是 D 。
A. for循环只能用于循环次数已经确定的情况
B. for循环是先执行循环体语句,后判断表达式
C. for循环中,不能用break语句跳出循环体
D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
39. 对for(表达式1; ;表达式3)可理解为 B 。
A. for(表达式1;0;表达式3)
B. for(表达式1;1;表达式3)
C. for(表达式1;表达式1;表达式3)
D. or(表达式1;表达式3;表达式3)
40. for(i=2;i= =0;) printf(“%d〞,I--);
循环执行的次数是 B 。
A. 无限次 B. 0次 C. 1次 D. 2次
41. 在C++编程语言中,以下正确的描述是 B 。
A. continue语句的作用是完毕整个循环的执行
B. 只能在循环体内与switch语句体内使用break语句
C. 在循坏体内使用break语句或continue语句的作用一样
D. 从多层循环嵌套中退出,只能使用goto语句
42. 下面程序段 D 。
for(t=1;t<=100;t++)
{cin>>x;
if(x<0) continue;
cout<<t;}
A. 当x<0时整个循环完毕 B. x>=0时什么也不输出
C. cout永远也不执行 D. 最多允许输出100个非负整数
43. 定义一个函数实现交换x与y的值,并将结果正确返回。能够实现此功能的是 C 。
A. s x, int y){ int t; t=x; x=y; y=t; }
B. s *x, int *y){ int t; t=x; x=y; y=t; }
C. s *x, int *y){ int t; t= *x; *x = *y; *y=t; }
D. s *x, int *y){ int *t; t=x; x=y; y=t; }
44. 说明语句"int (*p) ( );"的含义是 C 。
A. p是一个指向一维数组的指针变量
B. p是指针变量, 指向一个整型数据
C. p是一个指向函数的指针,该函数的返回值是一个整型
D. 以上都不对
45. 设有说明int (*p) [4 ]; 其中的标识符p是 C 。
A. 4个指向整型变量的指针变量
B. 指向4个整型变量的函数指针
C. 一个指向具有4个整型元素的一维数组的指针
D. 具有4个指向整型变量的指针元素的一维指针数组
46. 假设有如下声明,以下说法错误的选项是 C 。
struct em
{ char a;
char b;
A. struct是构造体类型关键字 B. em是构造体类型名
C. em 是用户声明的构造体变量 D. a,b是构造体成员名
47. 假设有以下定义,那么对构造体变量的成员引用错误的选项是 C 。
struct date
{ int year;
int month;
int day;
struct student
{ int no;
char name[16];
date birthday;
} stud;
A. stud.no
B. stud.name
C. stud.birthday
D.
48. 以下表达中,不正确的选项是 B 。
A. 类的构造函数可以重载
B. 类的析构函数可以重载
C. 一个类可以不定义构造函数
D. 一个类可以不定义析构函数
49. 宏定义:
#define N 3
#define Y(n) ((N+1)*n)
〔〔N+1〕*5+1〕
执行语句z=2*(N+Y(5+1)); 后,变量z的值是 B 。
A. 42 B. 48 C. 52 D. 出错
50. 类的构造函数的作用是 C
A〕一般成员函数的初始化
B〕类的初始化
C〕对象的初始化
D〕删除类创立的对象
51. 以下说法正确的选项是 B
A〕内置函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B〕内置函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C〕类的内置函数必须在类体内定义
D〕类的内置函数必须在类体外通过加关键字inline定义
二、填空题
1. 程序的三种根本的控制构造是: 顺序构造 、 选择构造 、 选择构造
2. 假定一个构造类型定义为:
“struct D { int a ; union { int b ; double c ; } ; D * d[2] ; } ;〞 ,那么该类型的大小为 20 字节。
3. C++语言中的每条根本语句以 ; 作为完毕符,每条复合语句以 } 作为完毕符。
4. 关系表达式x+y>5的相反表达式为 x+y<=5 。
5. 下面的程序段中循环体的执行次数是 3 。
a=10;b=0;
do{b+=2;a-=2+b;} while(a>=0);
6. 下面程序段的运行结果为 ** 。
x=2;
do{cout<<“*〞;x--; } while(!x==0);
7. 定义内置函数的方法是在函数的返回值类型之前增加关键字 inline 。
8. 假定a为一个整型数组名,那么元素a[4]的字节地址为 a+16 。
9. 假定一个一维数组的定义为“char a[8] ;〞,那么该数组所含元素的个数为 8 ,所占存储空间的字节数为 32 。
10. int a[3][2]={3, 2, 1}; 那么表达式“a[0][0]/a[0][1]/a[0][2]〞的值是 1 。
11. 假设用数组名作为函数调用时的实参,那么实际上传递给形参的是 数组首地址 。
12. 如果一个函数无返回值,定义它时函数类型应是 void 。
13. 预处理命令以 # 开头。
14. 假定a是一个二维数组,那么a[i][j]的指针访问方式为 *(a[i]+j) 或 *(*(a+i)+j) 。
15. C++在编译时,可以将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为 内置函数 。
16. 使用内置函数可以节省运行时间,但却增加了 目标函数 的长度。
17. C++允许用同一函数名定义多个函数,这些函数的参数个数与参数类型不同。这就是 函数的重载 。
18. 利用C++编程语言可以建立一个通用函数,其函数类型与形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为 函数模板 。
19. 对一个类中的数据成员的初始化可以通过构造函数中的 初始化表 实现,也可以通过构造函数中的 函数体 实现。
20. 假定AB为一个类,那么执行“AB a[10];〞语句时,系统自动调用该类的构造函数的次数为 10 。
三、填空完成下面的程序
1. #include <iostream>
using namespace std;
int main( )
{ int a, b, c, x;
cin>>a;
cout<<"a="<<a<<endl;
cin>>b;
cout<<"b="<<b<<endl;
cin>>c;
cout<<"c="<<c<<endl;
if (a==b&&b==c) cout<<"the three numbers are eauql"<<endl;
else
{ if(a>b && a>c) x=a;
else if (b>c) x=b;
else x=c;
cout<<"the greatest number is:"<<x<<endl;
return 0;
2. 下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符完毕循环,请填空完成程序。
int n=0,c;
c=getchar( );
while( c!='\n' )
{ if( c>='A'&&c<='Z'||c>='a'&&c<='z' ) n++;
c=getchar( );
3. 鸡、兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,x代表有多少只鸡,y代表有多少只兔子,请填空完成程序。
for(x=1;x<=29;x++)
{y=30-x;
if( 2*x+4*y==90 ) cout<<x<<" "<<y;
4. 下面的程序是求2个或3个正整数中的最大数,用带有默认参数的函数实现。请填空完成程序。
#include <iostream>
using namespace std;
int main()
{int max(int a,int b, int c=0 );
int a,b,c,m1,m2;
cin>>a>>b>>c;
m1= max(a,b,c);
m2= max(a,b);
cout<<"a,b,c三个正整数中的最大数为:"<<m1<<endl;
cout<<"a,b两个正整数中的最大数为:"<<m2<<endl;
return 0;
int max(int a, int b, int c)
{if(b>a) a=b;
if(c>a) a=c;
return a;
四、给出以下程序运行后的输出结果
1. # include <iostream>
using namespace std;
void SB(char ch)
{ switch(ch)
{ case 'A': case 'a':
cout <<"well!"; break;
case 'B': case 'b':
cout <<"good!"; break;
case 'C': case 'c':
cout <<"pass!"; break;
default:
cout <<"bad!"; break;
int main( )
{ char a1='B',a2='c',a3='f';
SB(a1);SB(a2);SB(a3);SB('A');
cout <<endl;
return 0;
答案:good! pass! bad! well!
2. #include<iostream>
using namespace std;
int main()
{int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20) break;
if(b%3= =1)
{b+=3;continue;}
b- =5;
cout<<a<<endl;
return 0;
答案:8
3. #include<iostream>
using namespace std;
main( )
{int i,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if (j%2) continue;
x++;
x++;
cout<<“x=〞<<x<<endl;
答案:x=8
4. #include<iostream>
using namespace std;
main( )
{int i;
for(i=1;i<=5;i++)
{if(i%2) cout<<“*〞;
else continue;
cout<<“#〞;
cout<<“$\n〞;
答案:*#*#*#$
5. #include<iostream>
using namespace std;
void main( )
{ int I,j,a=0;
for(I=0;I<2;I++)
{ for(j=0;j<4;j++)
{ if(j%2) break;
a++;
a++;
cout<<a<<endl;
答案:4
6. 运行以下程序时,从键盘键入right请给出回车后运行的结果。
#include<iostream>
using namespace std;
void main()
{char c;
while((c=getchar())!='') putchar(++c);
答案:sjhiu
7. #include<iostream.h>
void main( )
{int I;
for(I=1;I<=5;I++)
switch(I%2)
{case 0:I++; cout<<"#";break;
case 1:I+=2; cout<<"*";
default: cout<<"\n";
答案:*
8. #include <iostream>
using namespace std;
int a=5;
int main ( )
{ int a=10, b=20;
{ int a=0,b=0;
for (int i=1; i<6; i++) {a+=i ; b+=a;}
cout <<a<<' '<<b<<endl;
return 0;
答案:10 20
9. #include<iostream>
using namespace std;
int k=1;
void f(int m)
{m+=k; k+=m;
{char k='B'; cout<< k - 'A' <<'\n'; }
cout<<m<<','<<k<<'\n';
int main()
{int i=4;
f(i);
cout<<i<<','<<k<<'\n';
return 0;
程序的输出第一行是 1 ,第二行是 5,6 ,第三行是 4,6 。
10. # include <iostream.h>
# include <string.h>
int main( )
{ char a[5]={"student", "worker", "cadre", "soldier", "peasant"};
char p1, p2;
p1=p2=a[0];
for (int i=0; i<5; i++)
{ if (strcmp(a[i],p1)>0) p1=a[i];
if (strcmp(a[i],p2)<0) p2=a[i];
cout <<p1<<' '<<p2<<endl;
return 0;
答案:worker cadre
11. #include<iostream>
using namespace std;
int m[3][3]={ {1}, {2}, {3} }, n[3][3]={ 1, 2, 3 };
int main()
{ cout<<m[1][0]+n[0][0]<<'\n'<<m[0][1]+n[1][0]<<'\n';
return;
程序的输出第一行是 3 ,第二行是 0 。
12. #include<iostream>
using namespace std;
void f (int s[ ])
{static int j;
do{s[j]+=s[j+1]; } while(++j<2);
int main()
{int k, a[10]={1, 2, 3, 4, 5};
for(f(a),k=0; k<5; k++) cout<<a[k];
cout<<endl;
for(f(a),k=0; k<5; k++) cout<<a[k];
cout<<endl;
return 0;
程序输出的第一行是 35345 ,程序输出的第二行是 35745 。
五、编程题
第 19 页
展开阅读全文