c:
d 的值为D
A. 4
B. 2
C. 3
D. 1
4为表示关系x大于等于y,y大于等于z,正确的C++语言表达式A
A. x>=y&&y>=z
B. (x>=y)AND(y>=z) C. x>=y>=z
D. (x>=y)&(y>=z)
5下列ASCII码值最小的字符是A
A. ‘\n’
B. ‘b’
C. ‘A’
D. ‘6’
6若执行语句:
intb,a=12,n=5;表达式a%=(b=2,n%=b)+4结果是A
A. 2
B. 4
C. 1
D. 16
7设m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m、n的值是 B
A. 0,0
B. 1,0
C. 0,1
D. 1,1
8设有语句inta=3;则执行了语句a+=a-=a*a;后,变量a 的值是 C
A. 0
B. 9
C. -12
D. 3
9下列变量定义及初始化中,错误D
A. inta=0xFF
B. longa=2L
C. chara=’\72’
D. doublea=1.2e0.5
10逗号表达式(a=4*5,a*2),a+15的值C
A. 20
B. 40
C. 35
D. 55
11哪一个不是面向对象方法特征B
A. 封装性
B. 开放性
C. 继承性
D. 多态性
12设 charch; 错误的赋值语句C
A. ch=68;
B. ch='\xef';
C. ch="\\";
D. ch='\123';
13设intx=-1;执行表达式++x||++x||++x后,x的值是D
A. 2
B. 0
C. 3
D. 1
14C++源程序文件扩展名的 B
A. obj
B. cpp
C. exe
D. c
15假设下面所有的变量均已定义为double型,下列赋值表达式不正确的是 C
A. z*=2.8/4
B. x=y=z
C. x=3.5%2
D. x=--x
A是复合赋值运算符,先计算右边的除法,当两个数据的类型不同的时候,先将4转化为4.0再进行运算得结果0.7,再执行z=z*0.7的赋值运算,正确;B先对右边的部分进行运算,变量x先执行自减,将表达式的结果赋值给x,实际上直接写成--x能达到同样的效果,这种用法不常见,但是语法上是正确的;C是连续赋值,按从右到左的顺序执行,最终效果是x、y和z三个变量的值相等,也是正确的;D的错误在赋值号右边,运算符“%”要求两个运算对象都必须为整数,3.5不是整数。
16在 C++语言中int,long,unsigned 和 char这四种类型数据的转换规律是C
a. char->int->long->unsigned
b. char->unsigned->long->int
c. char->int->unsigned->long
d. int->unsigned->long->char
17以下选项中可作为C++语言合法整数A
A. 0Xafb
B. 11010B
C. x2b2
D. 0583
18在C++语言中,设shortint型占两个字节,下列不正确的shortint型常数A
A. 32768
B. 0xfa
C. 032770
D. -32768
19关系运算符对两侧的运算对象的要求B
A. 只能是0或1
B. 可以是任意合法的表达式,两者类型不一定相同
C. 两个运算对象必须属于同一种数据类型
D. 只能是0或非0值
20下列哪一个是合法的实型字面常量 C
A. 8E3.1
B. E5
C. 234
D. 234.
复杂数据及运算
1下列程序段运行后,i的正确结果为C
inti=0;char*s=“a\041#041\\b”;while(*s++)i++;
A. 12
B. 5
C. 8
D. 11
2以下一维数组 a 的正确定义是 D
A. intn;cin>>n;inta[n];
B. intn=10,a[n];
C. inta(10);
D. #defineSIZE10inta[SIZE];
3下面判断字符串str1是否大于str2,正确的表达式是 C
A. if(str1>str2)
B. if(strcmp(str1,str2)) C. if(strcmp(str1,str2)>0)
D. if(strcmp(str2,str1)>0)
4设变量定义为“intx,*p=&x;”,则&*p相当于__。
D
A. x
B. *p
C. *&x
D. &x
5设int*ptr,x,array[5]={5,2,4,3,1}; ptr=array; 能使x的值为2的语句A
A. x=*(array+1);
B. array++;x=*array;
C. x=*(ptr+2);
D. x=array[2];
6下列正确的一维数组初始化是 C
A. inta[2]={1,2,3,4,5};
B. inta[5]={,,1,2};
C. inta[5]={1,2};
D. int*a={1,2,3,4,5};
7以下程序给数组所有元素输入数据,填入__能完成该功能。
C
#include
usingnamespacestd;
intmain( )
{
intarray[5],i=0;
while(i<5)
cin>>__;
return0;
}
A. &array[i+1]
B. &array[++i]
C. array+(i++)
D. array+i
8strlen(”a\012b\xab\\bcd\n”)的值A
A. 9
B. 10
C. 11
D. 13
9设charstr[100];inti=5;则下列哪一个能正确表示数组的某一个元素 C
A. *((str++)+i)
B. (str+i)
C. *(str+i-1)
D. str[i+95]
10设 int*p,i; 以下正确的语句B
A. i=p;
B. p=&i;
C. i=*p;
D. *p=10;
11设intx[]={1,2,3,4,5,6},*p=x; 则值为3的表达式是 B
A. p+=2;*++p;
B. p+=2;*p++
C. p+=2;++*p;
D. p+=3;*p;
12若有语句 int*point,i=4;和 point=&i; 下面均代表地址的一组选项是 B
A. &*i,&i,*point
B. &a,&*point,point
C. *&point,*point,&i
D. i,point,*&i
13若有说明:
inta[]={15,12,-9,28,5,3},*p=a,则下列哪一种表达错误A
A. *(a=a+3)
B. *(p=p+3)
C. *(a+*(a+5))
D. p[p[4]]
14若定义intm[10]={9,4,12,8,2,10,7,5,1,3};则m[m[4]+m[8]]的值是D
A. 7
B. 12
C. 10
D. 8
15以下二维数组a的正确说明是 A
A. doublea[2][4]
B. floata(3)(4)
C. inta[3][]
D. floata(3,4)
16假设已定义chara[10]; char*p;下面的赋值语句中,正确的是 A
A. p=a;
B. *p=”abcdef”;
C. a=”abcdef”;
D. p=*a;
17下列对指针p的操作,正确的B
A. inta[5]={1,2,3,4,5},*p=&a;*p=5;
B. inta,*p=&a; C. int*p;*p=2;
D. floata[5];int*p=a; 18若有以下定义和语句,错误C
inta=4,b=3,*p,*q,*w;
p=&a;q=&b;w=q;q=NULL;
A. *p=b;
B. *p=*w;
C. *q=0;
D. w=p;
19设int *p,x,a[5]={1,2,3,4,5}; p=a;能使x的值为2的语句是 B
A. x=a[2];
B. x=*(a+1);
C. x=*(p+2);
D. a++;x=*a;
20若有说明:
int*p1,*p2,m=5,n; 以下均是正确赋值语句的选项是 A
A. p1=&m;p2=p1;
B. p1=&m;p2=&p1;
C. p1=&m;*p1=*p2;
D. p1=&m;*p2=*p1;
21设 int s[10];*p=s; 错误A
A. s=p+s;
B. p=s+5;
C. s[2]=p[4];
D. *p=s[0];
22执行下面的程序段后,ab的值B
int*var,ab;
ab=100; var=&ab; *var+=10;ab+=10;
A. 0
B. 120
C. 110
D. 100
23以下对二维数组a进行正确初始化 A
A. intarray[][3]={1*6}; B. intarray[2][3]={{1,2},{3,4},{5,6}};
C. intarray[2][3]={{},