C语言书后习题 下载本文

习题

第1部分 表达式及三种基本结构

1、单项选择题

1)在C语言中,int、char和float三种类型数据所占用的内存 。

A、均为2个字节 B、分别为1、2、4个字节 C、分别为2、1、4个字节 D、由变量的大小决定

2)在C语言中,错误的int类型的常数是 。 A、32768 B、 -32766 C、 037 D、 0xAF 3)下列可以表示字符型常数的是 。

A、 \ B、 '\\t' C、 \ D、 297 4)下列错误的转义字符是 。

A、 '\\\\' B、 '\\\ C、 '\\81' D、 '\\0' 5)已知char a; int b; float c; double d; 执行语句c=a+b+c+d;后,变量c的数据类型是 。 A、 int B、 char C、 float D、 double 6)已知int i=5;执行语句i+=++i;后,i的值是 。

A、6 B、 10 C、 12 D、 11 7)若w=1,x=2,y=3,z=4;则条件表达式w>x?w:y

A、4 B、 3 C、 2 D、 1 8)已知int x;则使用逗号运算符的表达式(x=4*5,x*5),x+25的结果为 。

A、20 B、 100 C、 125 D、 45 9)已知a、b、c的值都为1,且均为int类型变量,则执行以下语句:++a||++b&&++c;变量b的值为 。

A、1 B、 2 C、3 D、 0 10)若要求在if后一对圆括号中表示条件“a不等于0成立”,则能正确表示这一关系的表达式是 。

A、a<>0 B、 !a C、a=0 D、 a 11)C语言对嵌套if语句的规定是:else总是和 配对。 A、其之前最近的if B、第一个if

C、缩进位置相同的if D、其前面最近的且尚未配对的if

12)已知x、a、b均为整型变量,则下列选项中错误的if语句是 。

A、if(a=b) x++; B、if(a=

B、在switch语句中可以根据需要,使用或不使用break语句 C、在switch语句中必须使用break语句 D、break语句不能用于switch语句

14)在C语言中,判断一个量是否为\真\时,通常这个量必须是 才表示逻辑值“真”。

A、1 B、非0整数 C、大于0的整数 D、非0值 15)以下四条语句中,有语法错误的是 。

A、if(a>b) m=a; B、if(a=b) m=b; C、if((a=b)>=0) m=a; D、if((a=b;)>=0) m=a; 16)程序main() {int x=5; if(x++>10) printf(\printf(\的输出是 。

A、4 B、5 C、6 D、7 17)在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三条语句不等价,它是 。

A、if (a) s1; else s2; B、if (a==0) s2; else s1; C、if (a!=0) s1; else s2; D、if (a==0) s1; else s2; 18)在循环语句的循环体中使用break和continue语句的作用分别是 。

A、都是结束循环 B、结束本次循环和结束循环 C、都是结束本次循环 D、结束循环和结束本次循环 19)设i和s是整型变量,执行如下的语句,则输出的i和s的值为 。 for (i=0,s=0;i<10;i++,s++); printf(\

A、0,0 B、10,0 C、10,10 D、9,9 20)语句while(!x);中的条件等价于 。

A、x==0 B、x!=0 C、~x D、x!=1 21)在while(x)语句中的x与下面条件表达式等价的是 。

A、x==0 B、x==1 C、x!=1 D、x!=0 22)若int x=3;且有下面的程序片段,则输出结果是 。 do

{ printf (\ } while (!(--x));

A、1 B、3 0 C、1 -2 D、死循环

23)若i,j均为整型变量,则关于循环for(i=0,j=-1;j==1;i++,j++)printf(\正确的说法是 。

A、循环体只执行一次 B、循环体一次也不执行 C、判断循环结束的条件不合法 D、是无限循环

24)以下不是死循环的语句为 。

A、for ( ; ; x+=i ); B、while (1) {x++;}

C、for (i=10; ; i--) D、for ( ; (c=getchar())!='\\n';) sum+=i; printf(\25)设有如下程序段,则以下叙述中正确的是 。 int x=2002,y=2003; printf(\;

A、输出语句中格式说明符的个数少于输出项的个数 B、输出语句中格式说明符必须再增加一个%d C、输出值为2002 D、输出值为2003

2、填空题

1)设有如下说明:int i=3,j=5,m;

执行语句m=(i++)-(--j);后,m的值是 ,j的值是 。

2)设有如下程序:void main() { int a=3,b=3,c;

c=a++ +b;printf(\ %d\\n\

c=a- --b;printf(\ %d\\n\减号之间有无空格结果是不同的*/ c=a++ +b; printf(\ %d\\n\

该程序执行后的三行输出分别是 , , 。 3)设x=2.5;a=7;y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为 。 4)以下程序运行的结果是 。

#include void main()

{int i,j,m,n; i=8; j=10; m=++i; n=j++;

printf (\,%d,%d,%d\,i,j,m,n); }

5)若int x=600; 则执行下列程序后,变量y的值是 。