C语言复习题.docx
- 文档编号:30119682
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:39
- 大小:33.48KB
C语言复习题.docx
《C语言复习题.docx》由会员分享,可在线阅读,更多相关《C语言复习题.docx(39页珍藏版)》请在冰豆网上搜索。
C语言复习题
第一章C语言与程序设计初步
1.下列标识符中,合法的标识符是()
A.-abc1B.1abcC._abc1D.for
答案:
C
注解:
基本概念。
C语言的合法标识符要满足:
由字母、数字、下划线组成;以字母或下划线开头;不能是C语言的关键字。
2.C语言程序的基本单位是()
A.语句B.程序行C.函数D.字符
答案:
C
注解:
C语言程序是由函数构成的。
一个C源程序至少包含一个主函数,故函数是C程序的基本单位。
3.以下叙述正确的是()
A、可以把define和if定义为用户标识符
B、可以把define定义为用户标识符,但不能把if定义为用户标识符
C、可以把if定义为用户标识符,但不能把define定义为用户标识符
D、define和if都不能定义为用户标识符
答案:
B
注解:
if是C语言的关键字,define不是,而#define才是C语言的关键字。
第二章基本数据类型
1.以下选项中属于C语言的数据类型是()
A.复数型B.逻辑型C.双精度型D.集合型
答案:
C
注解:
基础知识,C语言中基本数据类型有四种:
整形、单精度型、双精度型、字符型。
2.在C语言中,不正确的int类型的常数是()
A.32768B.0C.037D.0xAF
答案:
A
注解:
注意int类型数据的表示范围为-32768~32767(十进制),选项C为八进制数表示,选项D为十六进制数表示。
3.设有说明语句:
chara='\72';则变量a()
A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法
答案:
A
注解:
将转义字符\72的表示的字符赋给变量a,所以a包含一个字符。
4.以下所列的C语言常量中,错误的是()
A.0xFFB.1.2e0.5C.2LD.'\72'
答案:
B
注解:
A为十六进制整型常量,C为长整型常量,D为字符常量。
5.以下选项中合法的字符常量是()
A."B"B.'\010'C.-268D.D
答案:
B
注解:
A为字符串,C为整型常量,D不是C语言的合法字符,字符要有单引号。
6.在C语言中,合法的长整型常数是()
A、0LB、4962710C、324562&D、216D
答案:
A
注解:
选项C、D的后缀不正确,选项B没有长整型的后缀L(或l),则认为是标准整型,而数值已经超过了范围,所以B也非法。
第3章运算符与表达式
1.设x,y,z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32)后,x的值为()
A、4B、16C、32D、52
答案:
C
注解:
x所得到的数值是括号中逗号表达式的值,而逗号表达式是取最后一个表达式的值。
2.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是()
A、c=b=a;B、(a=c)||(b=c);
C、(a=c)&&(b=c);D、a=c=b;
答案:
C
注解:
A、D明显错误,在c的值不为0的情况下,选项B中表达式计算时发生“短路”,或运算符右侧的表达式并不计算。
在&&和||运算时,要注意各自的运算规则,可能发生“短路”运算。
如&&运算符左侧表达式的值为0,则右侧表达式并不计算,整个表达式的值为0;如||运算符左侧表达式的值为1,则右侧表达式并不计算,整个表达式的值为1。
3.能正确表示a和b同时为正或同时为负的逻辑表达式是()
A、(a>=0||b>=0)&&(a<0||b<0)
B、(a>=0&&b>=0)&&(a<0&&b<0)
C、(a+b>0)&&(a+b<=0)
D、a*b>0
答案:
D
4.语句:
printf("%d",(a=2)&&(b=-2));的输出结果是()
A、无输出B、结果不确定C、-1D、1
答案:
D
注解:
所要输出的表达式的值即为2&&-2的值,两个非0的数值做与运算,值为1。
5.设有intx=11;则表达式(x++*1/3)的值是()
A、3B、4C、11D、12
答案:
A
注解:
先计算x++,然后再做乘法,最后做整除。
6.设intx=1,y=1;表达式(!
x||y--)的值是()
A、0B、1C、2D、-1
答案:
B
注解:
表达式先计算!
x,值为0,然后计算y--,值为1,最后0||1,结果为1。
7.C语言中运算对象必须是整型的运算符是()
A、%=B、/C、= D、〈=
答案:
A
9.若有以下程序段
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是()
A、0B、0.5C、1D、2
答案:
A
10.能正确表示逻辑关系:
“a》10或a《0”的C语言表达式是( )
A、a>=10ora<=0B、a>=0|a<=10C、a>=10&&a<=0D、a>=10‖a<=0
答案:
D
11.有如下程序段
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为()
A、tureB、falseC、0D、1
答案:
D
注解:
表达式(a&&b)&&(c<'B')先计算左边括号,a&&b的值为1,再计算右边括号,c<'B'的值为1,最后计算1&&1的值为1。
12.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( )a=a+(a-=a*a)a=a+(a=a-a*a)a=a+(a=-6)
A、-3B、9C、-12D、6
答案:
C
注解:
表达式a+=a-=a*a的计算步骤是,因为赋值表达式是右结合的,所以先计算a-=a*a,则a的值为-6,然后计算a+=a,则a的值为-12。
13.设x、y、t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后y的值为()
A、不定值B、4C、3D、1
答案:
C
注解:
表达式++x||++y的计算步骤是:
先计算++x,此表达式的值为4,||的左边为1,则右边的表达式无需再计算,整个表达式++x||++y的值为1,故表达式++y不做,变量y的值保留不变,仍为3。
14.若变量c为char类型,能正确判断出c为小写字母的表达式是()
A、'a'<=c<='z'B、(c>='a')||(c<='z')
C、('a'<=c)and('z'>=c)D、(c>='a')&&(c<='z')
答案:
D
15.假定x和y为double型,则表达式x=2,y=x+3/2的值是()
A、3.500000B、3C、2.000000D、3.000000
答案:
D
注解:
3/2的值为1,而变量x和y是双精度浮点型变量,所以表达式x+3/2的值为3,根据赋值运算的规则,最后y的值为3.000000。
16.以下合法的赋值语句是()
A、x=y=100B、d--;C、x+y;D、c=int(a+b);
答案:
A
注解:
选项B、C不是赋值语句,选项D若要正确则应改为c=(int)(a+b)。
17.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值位为( )
A、0B、1C、2D、3
答案:
C
注解:
逻辑表达式(m=a>b)&&(n=c>d)的运算顺序是:
先计算赋值表达式m=a>b,值为0,则逻辑与运算发生短路,后半部分不计算,变量n的值不变为2。
18.若有定义:
inta=8,b=5,c;,则执行语句c=a/b+0.4;后,c的值为()
A、1.4B、1C、2.0D、2
答案:
B
注解:
表达式a/b的值为1,a/b+0.4的值为1.4,因为变量c为整型,则根据赋值表达式的运算规则,变量c的取值为1。
19.若变量a是int类型,并执行了语句:
a='A'+1.6;,则正确的叙述是()
A、a的值是字符CB、a的值是浮点型
C、不允许字符型和浮点型相加D、a的值是字符'A'的ASCII值加上1
答案:
D
注解:
a的值是表达式'A'+1.6值,'A'+1.6的计算是取字符'A'的ASCII的值,加上1。
20.以下程序的输出结果是( )
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A、1B、0C、非0的数D、-1
答案:
A
注解:
输出变量d的值,即是表达式!
a&&!
b|||!
c的值,表达式的运算是先计算!
a的值为0,则!
a&&!
b的值为0,然后即计算0||!
c,而!
c的值为1,则表达式0||!
c的值为1,则整个表达式的值为1。
第4章顺序结构程序设计
1.以下程序的输出结果是()
A、17,021,0x11B、17,17,17
C、17,0x11,021D、17,21,11
main()
{intk=17;
printf("%d,%o,%x\n"k,k,k);
}
答案:
D
注解:
数值17以十进制,八进制,十六进制三种不同的格式输出,即把十进制数的17转化为八进制和十六进制。
2.下列程序执行后的输出结果是(小数点后只写一位)()
A、666.06.0B、666.76.7C、666.06.7D、666.76.0
main()
{doubled;floatf;longl;inti;
i=f=1=d=20/3;
printf("%d%ld%f%f\n",i,l,f,d);
}
答案:
A
注解:
20/3的值为6,变量d和f为浮点型,则赋值以后d和f得到的值为6.0(一位小数);变量l和i是整型变量,则赋值以后l和i的值为6。
3.下列程序执行后的输出结果是()
A、GB、HC、ID、J
main()
{intx='f';printf("%c\n",'A'+(x-'a'+1));}
答案:
A
注解:
表达式x-'a'+1的值为6,则表达式'A'+6表示字符G.,则输出为字符G。
4.下列程序执行后的输出结果是()
A、-32767B、FFFEC、-1D、-32768
main()
{intx=0xFFFF;printf("%d\n",x--);}
答案:
C
注解:
整型变量x的初值为十六进制数,在机器中负数以二进制补码存储,以有符号十进制数输出时,进制转换后的值为-1。
5.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是( )
A、a\bre\'hi\'y\\\bouB、a\bre\'hi\'y\bou C、re'hi'you D、abre'hi'y\bou
(说明:
'\b'是退格符)
答案:
C
注解:
"a\bre\'hi\'y\\\bou\n"中的字符分别为a、\b(退格符,删掉前面的字符a)、r、e、'、h、i、'、y、\、\b(退格符,删掉前面的字符\)、o、u、\n(回车换行),所以最后的输出是re'hi'you。
6.有如下程序
main()
{inty=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);}
运行该程序的输出结果是()
A、34B、42C、43D、33
答案:
D
注解:
分别输出(++x,y++)、z+2两个表达式的值,(++x,y++)是逗号表达式,取最后一个表达式的值为3,z+2的值为3,所以最后的输出为33。
7.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:
()
A、10<回车>22<回车>33<回车>B、10.0,22.0,33.0<回车>
C、10.0<回车>22.0 33.0<回车>D、10 22<回车>33<回车>
答案:
B
注解:
B选项对应的输入语句是scanf("%f,%f,%f",&a,&b,&c);
8.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()
A、INPUTx、y、z;B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);D、read("%d%d%d",&x,&y,&z);
答案:
B
注解:
只有选项B、C是C语言的输入语句,而在用scanf()函数输入时,变量前要有取地址运算符。
9.以下程序段的输出结果是()
inta=1234;
printf("%2d\n",a);
A、12B、34C、1234D、提示出错、无结果
答案:
C
注解:
在输出语句中,格式字串的附加格式字符2,小于数据的实际位数,则按实际位数输出1234。
11.以下程序的输出结果是()
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
A、5B、4C、6D、不确定
答案:
C
注解:
输出的值是表达式a>b?
(a>c?
a:
c):
(b)的值,对条件表达式,先判断条件a>b为真,则取表达式a>c?
a:
c的值,类似的先判断条件a>c为假,则取后一个变量c的值6,故最后输出的值是6。
第5章选择结构程序设计
1.下程序的输出结果是()
A、-11B、01C、10D、00
main()
{inta=-1,b=1,k;
if((++a<0)&&!
(b--<=0))printf("%d%d\n",a,b);
else
printf("%d%d\n",b,a);
}
答案:
C
注解:
if语句中的条件表达式运算过程中,与运算短路,变量b的值并不发生改变,表达式的值计算为0,则执行else后的子句,分别输出1和0,所以答案为C。
3.如下程序
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是()
A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2
答案:
A
注解:
x的值为1,第二个case子句符合条件,从此入口执行后面的语句,因为没有break,所以第三个case子句同样执行,即a自增两次,最后的值为2,b自增一次,最后的值为1。
4.有如下程序
main()
{floatx=2.0,y;
if(x<0.0) y=0.0;
elseif(x<10.0) y=1.0/x;
else y=1.0;
printf("%f\n",y);}
该程序的输出结果是()
A、0.000000B、0.250000C、0.500000D、1.000000
答案:
C
注解:
外层if语句的条件不满足,执行后面的else子句,判断内层if语句的条件满足,执行if后的语句:
y=1.0/x;所以y的值为0.500000。
5.有如下程序
main()
{inta=2,b=-1,c=2;
if(a
if(b<0) c=0;
elsec++;
printf("%d\n",c);
}
该程序的输出结果是()
A、0B、1C、2D、3
答案:
D
6.若执行以下程序时从键盘上输入9,则输出结果是()
A、11B、10C、9D、8
main()
{intn;
scanf("%d",&n);
if(n++<10)printf("%d\n",n);
elseprintf("%d\n",n--);
}
答案:
B
注解:
if语句的条件n++<10,输入9,则表达式n++值为9(n的值为10),条件为真,输出n的值10。
7.阅读以下程序:
main()
{intx;
scanf("%d",&x);
if(x--<5) printf("%d",x);
else printf("%d",x++);}
程序运行后,如果从键盘上输人5,则输出结果是()
A、3B、4C、5D、6
答案:
B
注解:
从键盘输入5后,if语句的条件表达式x--<5为假,变量x的值为4,执行else后的子句,输出表达式x++的值,表达式x++的取x自增之前的值4,x的值为5。
第6章循环结构程序设计
1.以下叙述正确的是()
A、do-while语句构成的循环不能用其它语句构成的循环代替。
B、do-while语句构成的循环只能用break语句退出。
C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D、用do-while语句构成的循环,在while后的表达式为零时结束循环。
答案:
D
2.以下程序的输出结果是()
A、10,19,2B、9,87,6C、10,99,0D、10,109,1
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d,%d",x--,y);
}
答案:
D
注解:
循环执行2次,由x控制循环的执行次数;输出值为两次循环过程中x每次的自减值和y在for语句的第三个表达式中得到的i自增变化后的值。
3.以下程序的输出结果是()
A、20B、31C、321D、210
main()
{intn=4;
while(n--)printf("%d",--n);
}
答案:
A
4.以下程序的输出结果是()
A、#*#*#B、#####C、*****D、*#*#*
main()
{inti;
for(i=1;i<6;i++)
{if(i%2){printf("#");continue;}
printf("*");
}
printf("\n");
}
答案:
A
注解:
循环控制变量i的值从1变化到5,i为1、3、5时,i%2为1,if语句的条件为真,则执行if后的子句,输出#,然后执行continue语句,终止本次循环的执行,进入下一轮循环,i为2、4时,i%2为0,if语句的条件为假,则if后的子句并不执行,直接输出*,所以最后的输出为#*#*#。
5.以下程序的输出结果是()
A、编译不通过,无输出B、aceg
C、acegiD、abcdefghi
main()
{inti;
for(i='A';i<'I';i++,i++)printf("%c",i+32);
printf("\n");
}
答案:
B
注解:
循环控制变量i的取值为A、C、E、G,将它们转化为小写字母的格式输出。
6.以下循环体的执行次数是()
A、3B、2C、1D、0
main()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d\n",i);
}
答案:
D
注解:
循环执行过程如下:
(1)i=0,j=1时,i<=j+1条件成立,执行循环体一次;
(2)i+=2,j--,则i=2,j=0,i<=j+1条件不成立,循环结束,所以循环次数为1次。
7.以下程序段的执行结果是()
A、a=12y=12B、a=12y=12
a=14y=16 a=16y=28
a=16y=20 a=18y=24
C、a=12y=12 D、a=12y=12
a=16y=28a=14y=44
inta,y;
a=10;y=0;
do
{a+=2;y+=a;
printf("a=%dy=%d\n",a,y);
if(y>20) break;
}while(a=14);
答案:
C
注解:
程序段的执行过程如下:
进入循环,执行循环体,输出a=12y=12,判断if语句的条件y>20,不成立,循环的条件是赋值表达式,一直为真;再次进入循环,执行循环体,输出a=16y=28,判断if语句的条件y>20,条件成立,则执行break;语句,跳出整个循环的执行。
8.有如下程序
main()
{inti,sum;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是()
A、6B、3C、死循环D、0
答案:
C
注解:
在for循环中,循环终止的条件是i<=3,而i的初值是1,在循环体中并没有改变i的值,所以是死循环。
9.有如下程序
main()
{intx=23;
do
{printf("%d",x--);}while(!
x);}
该程序的执行结果是()
A、321B、23C、不输出任何内容D、陷入死循环
答案:
B
注解:
对do-while循环,首先执行循环体,输出23,然后再判断条件,执行一次循环后x的值为22,!
x的值为0,条件为假,退出循环的执行。
10.有如下程序
main()
{intn=9;
while(n>6){n--;printf("%d",n);}
}
该程序段的输出结果是()
A、987B、876C、8765D、9876
答案:
B
注解:
循环执行的条件是n>6,n的初值是9,执行一次循环体,n的值自减1,输出自减后的值,循环体执行三次后,n的值减为6时,条件不满足,退出循环的执行,所以输出876。
11.有以下程序段
intk=0;
while(k=1) k++;
while循环执行的次数是()
A、无限次B、有语法错,不能执行C、一次也不执行D、执行1次
答案:
A
注解:
while循环的条件是赋值表达式x=1,此表达式的值恒为1,则此循环是一个死循环,所以执行的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习题