1、(3>4?3:4)<5?5:3>4?3:4的输出值为( ).
A) 3
B) 4
C) 5
D) 无值
答案:C
先算第一个括号里的,再从右到左算。
===================================================
2、程序填空:打印出2至99之间的所有素数( ).
#inlcude
#include
Void main()
{int i,n;
for(n=2;[1] ;n++)
{
int temp=int(srqt(n));//求出n的平方根并取整
for(i=2;(2) ;i++)
if(n%i==0) (3) ;
if(i>temp)cout<}
Cout<<’\n’;
}
A) (1) n<99 (2) i (3)break
B) (1) n<=99 (2) i (3)break
C) (1) n<=99 (2) i<=temp (3)break
D) (1) n<99 (2) i<=temp (3)break
答案:D
===================================================
3、下列语句段中,不是死循环的是( ).
A) int i=100;while (1){i=i%100+1;if (i= =20) break;}
B) int i=100,sum=0;for (i=1;;i++) sum=sum+1;
C) int k=0;do{++k;}while(k>=0);
D) int s=100;while (s++%3+5%3) ++s;
答案:A
A中注意,小数求余大数等于它自己。例如1%100=1.
===================================================
4、在switch语句中,每个语句所含关键字case后面必须是( )表达式.
A) 整型
B) 常量
C) 字符型
D) 枚举型
答案:B
===================================================
5、有一段程序:
int a,b;
char c,d;
cin>>a>>b;
cin.ignore(2);
cin>>c>>d;
cout<输入:34 3452 2345输出为( ).
A) 34, 3452, 3 ,4
B) 34, 3452, 4,5
C) 34, 3452, 2,3
D) 34, 3452, ,2
答案:A
cin.ignore(2)会把:空格2 这两个忽略,char c,d分别接收2后面的3和4
===================================================
6、设"int a=15,b=26;",则"cout<<(a,b);"的输出结果是( ).
A) 15
B) 26,15
C) 15,26
D) 26
答案:D
逗号运算符中整个表达式的值是最后一个表达式的值。
===================================================
7、语句while(w) … 中的表达式w的等价表示是( ).
A) w==0
B) w==1
C) w!=0
D) w!=1
答案:C
只要不等于0就是真,不一定要等于1.
===================================================
8、语句:I = strlen(“abc\0ABC”) 执行后,I的值为( ).
A) 8
B) 7
C) 4
D) 3
答案:D
strlen()函数,其功能是求字符串的长度,即字符串中包含的有效字符的个数(不包括字符 ‘\0’ )所以遇到\0就结束了
===================================================
9、应该如何用字符数组接收一串空格字符?( )
A) 用cin>>
B) 用cin.get()
C) 用cin.getline()
D) 上述方法都可以
答案:C
cin.get()是接收一个字符(包括空格和换行符和回车符等等),cin.getline()可以接收一串字符包括空格和换行符。
===================================================
10、下列给字符数组进行初始化中,( )是正确的.
A) char s1[ ]=“12345abcd”;
B) char s2[3]=“xyz”;
C) char s3[][3]={ ‘a’, ‘x’, ‘y’};
D) char s4[2[3]={“xyz”,“mnp”};
答案:A
A中:可以省略花括号。
B中:“xyz”实际是xyz\0,长度为4。
C中:这种情况需要参数来确定有几行数据。
而目前的参数列表无法确定是几行,只能确定有三个元素。
下面是几种合法的定义
char s3[][3]={{ ‘a’, ‘x’, ‘y’}}; //这个代表有一行
char s3[][3]={ {‘a’, ‘x’}, {‘y’}}; //这个是两行
char s3[][3]={ {‘a’}, {‘x’}, {‘y’}};//这个是三行
D中:2行3列,每行有三个元素,但是初始化的字符串“xyz”看起来是三个字母,但还有一个隐藏的字符串结束符\0,也就是"xyz"实际上是4个元素。于是溢出了。
===================================================
11、要求定义包含8个int类型元素的一维数组,以下错误的定义语句是( )
A) int N=8; int a[N];
B) #define N 3 int a[2*n+2];
C) int a[]={0,1,2,3,4,5,6,7};
D) int a[1+7]={0}
答案:A
int N=8,这里的N是个变量,定义数组时中括号里面不能是变量。
=========================================================
12、若有说明:int a[3][4]={0};则下面正确的叙述是( ).
A) 只有元素a[0][0]可得到初值0
B) 此说明语句不正确
C) 数组a中各元素都可得到初值,但其值不一定为0
D) 数组a中每个元素均可得到初值0
答案:D
===================================================
13、判断字符串s1是否大于字符串s2,应当使用( ).
A) if(s1>s2)
B) if(strcmp(s1,s2))
C) if(strcmp(s2,s1)>0)
D) if(strcmp(s1,s2)>0)
答案:D
strcmp()函数比较:
如果第一个字符串等于第二个字符串:返回0;
如果第一个字符串大于第二个字符串:返回1;
如果第一个字符串小于第二个字符串:返回-1;
===================================================
14、What would be output by the following section of C++?( )
char szSource[] = “Copy this!”;
char szDest[4];
strcpy(szDest, szSource);
cout << szDest;
A) Copy
B) Cop
C) Copy this!
D) buffer overflow!
答案:D
strcpy中字符数组1的长度必须大于字符数组2的长度。
===================================================
15、What would be output by the following section of C++?( )
char s1[3]=“AB”;
strcat(s1, “EF”);
cout<
A) AB
B) ABE
C) ABEF
D) buffer overflow!
答案:D
===================================================
16、struct student
{
char name[10];
……
}std;
对name的操作错误的是( ),
A) cin>>std.name;
B) cin.getline(std.name,80)
C) std.name=“li”;
D) strcpy(std.name,“li”);
答案:C
字符数组不能直接赋值,要用strcpy()函数。
===================================================
17、定义共同体变量时对它初始化:union {int i; char c ; float f;}
A) a={10,‘A’,1.8}
B) a={10}
C) a={10,‘A’}:
答案:B
定义共用体时对它初始化,只允许有一个数赋给第一个成员。
===================================================
18、已知学生记录描述为:
struct student
{ int no;
char name [20];
char set;
struct {
int year;
int month;
int day;
}birth;
};
struct student s;
设变量s中的"生日"应是"1984年11月11日",下列对生日的正确赋值方式是( ).
A) year=1984;month=11;day=11;
B) birth.year=1984;birth.month=11;birth.day=11;
C) s.year=1984;s.month=11;s.day=11;
D) s.birth.year=1984;s.birth.month=11;s.birth.day=11;
答案:D
===================================================
19、下列那种数据类型占用空间最小( ).
A) 结构体
B) 共用体
C) 枚举体
D) 不确定
答案:D
===================================================
20、enum a {sum=9,mon=-1,tue};定义了( ).
A) 枚举变量
B) 3个标识符
C) 枚举数据类型
D) 整数9和-1
答案:C
定义一个枚举变量之前,必须先定义一个枚举类型。例如enum a a1,a2,a3 此时a1,a2,a3才是枚举变量。
===================================================
21、在下列程序段中,枚举变量c1,c2的值依次是( ).
enum color {red,yellow,blue=4,green,white} c1,c2;
c1=yellow;c2=white;
cout<
A) 1,6
B) 2,5
C) 1,4
D) 2,6
答案:A
每个枚举常量在默认的情况下第一个为0,第二个为1,以此类推。但是被赋值之后,后面一个枚举常量总是前面一个枚举常量+1.
===================================================
22、以下对C语言中共用体类型数据的叙述正确的是( ).
A) 可以对共用体变量名直接赋值
B) 一个共用体变量中可以同时存放其所有成员
C) 一个共用体变量中不能同时存放其所有成员
D) 共用体类型定义中不能出现结构体类型的成员
答案:C
===================================================
23、一个函数体中可以有多个return,可以通过( )执行返回操作.
A) 二个
B) 一个
C) 三个
D) 多个
答案:B
===================================================
24、C++作用域有:块作用域,文件作用域,还有( ).
A) 全局作用域、函数作用域、类作用域
B) 函数原型作用域、函数作用域、类作用域.
C) 函数作用域、文件作用域
D) 函数作用域、类作用域.
答案:B
===================================================
25、( )是C++程序的构成基础
A) 函数
B) 数据
C) 图像
D) 表格
答案:A
==================================================
26、内联函数的定义方法很简单,只要在函数定义前加上关键字( )即可
A) inline
B) online
C) offline
D) line
答案:A
==================================================
27、执行C++程序时内存分配状况如下( )
A) 程序区、静态存储区、动态存储区.
B) 静态存储区、动态存储区.
C) 程序区、动态存储区.
D) 程序区、静态存储区.
答案:A
==================================================
28、局部变量可分配在( )
A) 程序区、静态存储区、动态存储区
B) 静态存储区、动态存储区
C) 程序区、动态存储区
D) 程序区、静态存储区
答案:B
==================================================
29、函数原型声明,是将函数定义的头部搬到声明处并在尾部加分号,以下正确的是()
A) 可以省略参数名及类型
B) 可以省略参数类型
C) 只可以省略参数名
D) 可以省略返回值类型
答案:C
==================================================
30、全局变量要想在其它文件中使用应该( )
A) 在其它文件中用extern进行说明.
B) 在其定义文件中用extern进行说明.
C) 不用说明
D) 用static进行说明
答案:A
==================================================
31、若有下面的程序段char s[]=“china”;char *p; p=s; 则下列叙述正确的是( ).
A) s和p完全相同
B) 数组s中的内容和指针变量p中的内容相等
C) s数组长度和p所指向的字符串长度相等
D) *p与s[0]相等
答案:D
==================================================
32、若有语句int point,a=4;和 point=&a;下面均代表地址的一组选项是( ).
A) a,point,&a
B) &*a,&a,*point
C) *&point,*point,&a
D) &a,&*point,point
答案:D
point存放地址, * point=a
==================================================
33、下列关于指针变量赋空值的说法错误的是( ).
A) 当赋空值的时候,变量指向地址为0的存储单元
B) 赋值语句可以表达为变量名=′\0′;
C) 赋值语句可以表达为变量名=0;
D) 一个指针变量可以被赋空值
答案:A
当给指针赋空值的时候,是无效指针,不指向任何量。
===================================================
34、文本文件和二进制文件哪个占用存储更多( )
A) 二进制文件
B) 文本文件.
C) 一样多.
D) 不一定.
答案:A
===================================================
35、现有如下定义:int*p,s[20],i; p=s;表示数组元素s[i]的表达式不正确的是( ).
A) *(s+i)
B) *(p+i)
C) *(s=s+i)
D) *(p=p+i)
答案:C
===================================================
36、设p是double *指针变量,若p的值为1000,则p++的值为( ).
A) 1001
B) 1004
C) 1008
D) 1010
答案:C
double类型占8个字节,p指向地址,p++则增加八个字节,变成1008。即p+=n为:原地址+sizeof(double)×n
===================================================
37、希望定义指针p不能被改变,而它所指向的变量可以被改变,其定义形式为( ).
A) const int *p;
B) const int *const p;
C) int *const p;
D) int *p;
答案:C
===================================================
38、若有int m; int *p=&m; 则后一句是将( ).
A) m的值赋给p
B) m的值赋给p指向的空间
C) m的地址赋给p
D) m的地址赋给p指向的空间
答案:C
===================================================
39、若有说明:char c=‘9’,*sp1,*sp2;,以下均正确的一组一组赋值语句是( )
A) sp1=&c; sp2=sp1;
B) sp1=&c; sp2=&sp1;
C) sp1=&c; sp2=*sp1;
D) sp1=&c; *sp2=*sp1;
答案:A
===================================================
40、设有说明语句:char *str="\t’c\Language\n";,则指针str所指字符串的长度为( ).
A) 13
B) 15
C) 17
D) 说明语句不合法
答案:A
要注意转义字符,像\t和\\就只算一个字符。同时题目求的是字符串的长度,那么就是13。如果str[]是个字符数组,题目要求字符数组的长度,那就是14(字符数组长度要算上那个’\0’)
===================================================
41、下列选项中,全部都是C++关键字的选项为( ).
A) while IF static
B) break char go
C) sizeof case extern
D) switch float integer
答案:C
A中IF不是 ;B中go不是(goto是);D中integer不是(register是)
还有一些关键字很容易错:this、do、new、protected、typedef、virtual、volatile
===================================================
42、已知i=0,j=1,k=2,则逻辑表达式 ++i||–j&&++k的值为( ).
A) 0
B) 1
C) 2
D) 3
答案:B
++和- -的优先级大于逻辑运算与和或的优先级,且结合性从右到左,所以得到i=1;j=0;k=3。然后&&的优先级大于||的优先级。即1||0&&3
===================================================
43、C++程序从上机到得到结果的几个操作步骤依次是( ).
A) 编译、编辑、连接、运行
B) 编辑、编译、连接、运行
C) 编译、运行、编辑、连接
D) 编辑、运行、编辑、连接
答案:B
===================================================
44、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是( )。
A) 有零个或多个输入
B) 有零个或多个输出
C) 有穷性
D) 可行性
答案:B
算法特性:有穷性、确定性、可行性、有零个或多个输入、有一个活=或多个输出
===================================================
45、设变量a是整型,f是实型,i是双精度型,则表达式10+ ‘a’+i*f值的数据类型为( ) .
A) int
B) float
C) double
D) 不确定
答案:C
由低类型到高类型:char、short——>int——>unsigned——>long——>float——>double
===================================================
46、以下4个选项中,不能看作一条语句的是( )。
A.;
B.a=0,b=0,c=0;
C.if(a>0);
D.if(b==0)m=1;n=2;
答案:D
C语言的语句都用“;”结束。
如果只有一个分号,称为“空语句”。
用一对花括号把若干语句括起来构成一个语句组,称为“复合语句”,在语法上视为一条语句。
因此选项A是一条语句。
选项B是逗号表达式加分号构成的语句。
选项C是一条if语句,该语句的if子句是一条空语句。
选项D中“if(b==0)m=1;n=2;”是两个表达式语句。
所以,4个选项中选项D符合题意。
===================================================
47、下列常量中,( )不是字符常量.
A) ‘\005’
B) ‘\n’
C) ‘c’
D) “a”
答案:D
“”的是字符串,‘’的是一个字符。
===================================================
48、在下列double型常量表示中,( )是错误的.
A) E15
B) .35
C) 3.00E+05
D) 3.00E-05
答案:A
记得e前一定要有数字,像A中这个应该写1e15
===================================================
49、C语言中,字符型数据在内存中存储形式是( ) .
A) 原码
B) 反码
C) 补码
D) ASCII码
答案:D
===================================================
50、系统头文件内容不包括:( )
A) 对标准库函数的原型声明
B) 函数的调用顺序
C) 符号常量定义
D) 类型定义
答案:B
===================================================
51、带参数的宏定义常用内联函数实现,那么它与一般函数相比,哪一个更快?( )
A) 内联函数
B) 一般函数
C) 一样快
D) 不确定
答案:A