1.在 C 语言中,以下非法的赋值语句是( )。
A.j++; B.++(i+1); C.x=j>0; D.k=i==j;
【答案】B。解析:自增运算符只能跟单个变量。
2..以下程序的输出结果是( )。
main()
{ int i=10,j=1;
printf("%d,%d\n",i--,++j);}
A.9,2 B.10,2 C.9,1 D.10,1
【答案】B。解析:i--为后置运算,先取值输出再进行计算,++j 为前置运算,先运算在取
值输出,所以输出 10 和 2。
3.运行时从键盘上输入 9876543210<CR>(<CR>表示回车),则该程序的输出结果是(
main()
{ int a;float b,c;
scanf("%2d%3f%4f\n",&a,&b,&c);
printf("a=%d,b=%f,c=%f\n",a,b,c);}
A.a=98,b=765,c=4321 B.a=10,b=432,c=8765
C.a=98,b=765.000000,c=4321.000000 D.a=98,b=765.0,c=4321.0
【答案】C。解析:%md 和%mf 的 m 为限制宽度。%f 要保留六位小数。
4.设变量均已正确定义,若要通过 scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量 a1
和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是
(注:□代表空格字符)( )。
A.10□X□20□Y<回车> B.10□X20□Y<回车>
C.10□X<回车> D.10X<回车>
20□Y<回车> 20Y<回车>
【答案】D。解析:%d 不读空格,%c 读空格。
以下程序段的输出结果是( )。
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{ int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A15 B.100 C.10 D.150
【答案】A。解析:宏定义原样替换,因为*的优先级大于<,所以先算10*10。10*(10)<(15)?(10):(15)=15。
6.以下叙述中正确的是( )。
A.构成 C 程序的基本单位是函数
B.可以在一个函数中定义另一个函数
C.main()函数必须放在其它函数之前
D.所有被调用函数一定要在调用之前进行定义
【答案】A。解析:B 中函数不能嵌套定义只能嵌套调用。C 中 main()函数可以放在任意位
置。D 中在 C 语言函数库中定义过的函数不需要进行定义即可调用。
7.以下程序的输出结果是( )。
main()
{ char str[]="ABCD",*p=str;
printf("%d\n",*(p+4)); }
A. 68 B. 'D' C. 0 D. '0'
【答案】C。解析:p+4 指 p 指针指向了'\0','\0'的 ASCII 码为 0。
8.以下程序的输出结果是( )。
main()
{ char str[]="aeiou",*p=str;
printf("%c\n",*p+4)); }
A.o B.u C.e D.f
【答案】C。解析:p 指向数组第一个元素的位置,*p+4='a'+4='e'。