1 C语言基础和顺序程序设计习题 一、填空。 1、C语言中,double型数据在内存中占用 个字节来存储。 2、已知:char ch=’A’;,则下列表达式的值是 。 ch=(ch>=’A’ && ch<=’Z’)?(ch+32):ch; 3、在C语言中,规定标识符只能由字母、数字或下划线三类字符组成,且第一个字符必须为 或 。 4、下列代数式写成C表达式为: 。 (sinx)(a+b)/(a-b) 5、i为int型变量,且初值为3,有表达式i++-3,则该表达式的值是 ,变量i的值是 。 6、i为int型变量,且初值为2,有表达式++i-3,则该表达式的值是 ,变量i的值是 。 7、若x=1,y=2,z=3,则表达式z+=++x+y++之值为 。 8、若有定义int y=3;float z=5.2,x=4.8;则表达式y+=int(x)+x+z之值为 。 9、若x=2,y=3,则x%=y+3之值为 。 10、表达式a=(b=8)/(c=2)之值为 。 11、若a=1,b=2,c=3,则执行表达式(a>b)&& (c++)后,c的值为 。 12、说明变量为双精度的关键字是 。 13、一个C语句的最后至少应有一个 。 14、在16位PC机环境下,字符常量’a’在内存中占 个字节,字符串”a”占 个字节。 15、在16位PC机环境下,int类型数据占 字节,short类型数据占 个字节,long类型数据占 个字节,double类型数据占 个字节。 16、077的十进制数是 ,0111的十进制数是 ,0X29的十进制数是 ,0XAB的十进制数是 。17、若有说明char s1=’077’,s2=’\\’;则s1中包含 个字符,s2中包含 个字符。 1 2答 案 1、8 2、a或97 3、字母 下划线 4sin(x)*sin(x)*(a+b)/(a-b) 5、0 ,4 6、0 ,3 7、7 8、17 9、2 10、4 11、3 12、double 13、; 14、1,2 15、2,2,4,8 16、63,73,41,171 17、1 ,1
习 题 内 容 18、若有说明int x=10,y=20;请写出各printf语句的输出结果。 printf(“%3x\\n”,x+y); printf(“%3o\\n”,x*y); printf(“%3o\\n”,x%y,x,y); printf(“%3x\\n”,(x%y,x-y,x+y)); 19、01234 答 案 18、1E 310 12 1E 19、设有说明int a=1234;,请写出各printf语句的输出结果。 1234 printf(“d\\n”,a); printf(“%-05d\\n”,a); 01234 d 20、(1) printf(“d\\n”,a++); a=%d,b=%d,x+y=%4.1f\\n printf(“%d\\n”,--a); a,b,x+y 20、设a,b为int型变量,x,y为float型变量,c1,c2为char(2) x-y=%4.1f a-b=%d\\n 型变量,且设a=5,b=10,x=3.5,y=10.8,c1=’A’,c2=’B’。为了x-y,a-b 得到以下的输出格式和结果,请写出对应的printf语句。 (1)a=5,b=10,x+y=14.3 21、1 22、1234,1234,% ,printf(“”, ); 67 (2)x-y=-7.3 a-b=-5 printf(“ ”, ); (3)c1=’A’or 65(ASCII) c2=’B’or 66(ASCII) printf(“ c1=’%c’or %d(ASCII)c=’%c’or %d(ASCII)\\n ”, c1,c1,c2,c2 ); 21、在C语言中,用 表示逻辑“真”值。 22、若执行下列语句时,输入数据:1234 01234g 1234<回车>,则变量a的值为 ,b的值为 ,s的值为 ,c的值为 。 int a; float b,c; char s;scanf(“%d%f%c%f\\n”,&a,&b,&s,&c); 2
习 题 内 容 二、在以下每一题的四个选项中,请选择一个正确的答案。 23、在C语言中,不同类型数据混合运算时,要先转换成同一类型后再进行运算,设一表达式中包含有int、long、unsigned、char类型的变量和数据,则表达式最后的运算结果是 类型数据。 A、int B、char C、unsigned D、long 24、若int型数据占2个字节,则以下语句的输出为 。 int k=-1; printf(“%d,%u\\n”,k,k); A、-1,-1 B、-1,32767 C、-1,32768 D、-1,65535 25、若a,b均为int型变量,x,y均为float型变量,正确的输入函数调用是 。 A、scanf(“%d%d”.&a,&b); B、scanf(“%d%f”,&a,&b); C、scanf(“%d%d”,a,b); D、scanf(“%f%f”,x,y); 26、若x,y均为double型变量,正确的输入函数调用是 。 A、scanf(“%f%f”,&x,&y); B、scanf(“%d%d”,&x,&y); C、scanf(“%lf%lf”,&x,&y); D、scanf(“%lf%lf”,x,y); 27、若x为char型变量,y为int型变量,x,y均有值,正确的输出函数调用是 。 A、printf(“%c%c”,x,y); B、printf(“%c%s”,x,y); C、printf(“%f%c”,x,y); D、printf(“%f%d”,x,y); 28、若a,b,c,d都是int型变量且初值均为10,不正确的赋值语句是 。 A、a=b=c=d; B、a=b++; C、a+b++; D、d=(a=b=125)-c++; 29、若x,y均为int型变量且有值,要输出x,y的值,正确的输出函数调用是 。 A、printf(“%d%d”,&x,&y); B、printf(“%f%f”,x,y); C、printf(“%f%d”,x,y); D、printf(“%d%d”,x,y); 30、x为int型变量,且值为2345,不正确的输出函数调用是 。 A、printf(“%d”,x); B、printf(“=”,x); C、printf(“%c”,x); D、printf(“%s”,x); 3 答 案 23、D 24、D 25、B 26、A 27、A 28、C 29、D 30、D
习 题 内 容 31、设x和y均为int型变量,则执行以下语句后的输出为 。 答 案 31、A x=15; y=5; printf(“%d\\n”,s%=(y%=2)); A、0 B、1 C、6 D、12 32、B 32、若m为float型变量,则执行以下语句后的输出为 。 m=1234.123; printf(“%-8.3f\\n”,m); printf(“.3f\\n”,m); A、1234.123 B、1234.123 C、1234.123 D、1234.123 33、A 1234.123 1234.123 001234.123 001234.123 33、若n为int型变量,则执行以下语句后的输出为 。 n=32767; printf(“0d\\n”,n); printf(“d\\n”,n); 34、D A、0000032767 B、32767 C、32767 D、输出格式说明符不合法 32767 0000032767 32767 32767 34、若x为unsigned int型变量,则执行以下语句后的x的值为 。 x=65535; 35、B printf(“%d\\n”,x); A、65535 B、1 C、无定值 D、-1 35、若x为int型变量,则执行以下语句后的输出为 。 x=0xDEF; printf(“M\\n”,x); printf(“%4o\\n”,x); printf(“%4x\\n”,x); A、3567 B、3567 C、3567 D、3567 6757 6757 06757 6757 4
习 题 内 容 Def def 0xdef 0def 36、若x,y,z均为int型变量,则执行以下语句后的输出为 。 x=(y=(z=10)+5)-5; printf(“x=%d,y=%d,z=%d\\n”,x,y,z); y=(z=x=0,x+10); printf(“x=%d,y=%d,z=%d\\n”,x,y,z); A、x=10, y=15, z=10 B、x=10, y=10, z=10 x=0, y=10, z=0 x=0, y=10, z=0 C、x=10, y=15, z=10 D、x=10, y=10, z=10 x=10, y=10, z=0 x=0, y=10, z=0 37、若x是int型变量,y是float型变量,所用的scanf调用语句格式为:scanf(“x=%d,y=%f”,&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应当是 。 A、x=10,y=66.6 <回车> B、10 66.6 <回车> C、10<回车>66.6<回车> D、x=10 <回车>y=66.6<回车> 38、若w,x,y,z均为int型变量,则为了使以下语句的输出为:1234+123+12+1,正确的输入形式应当是 。 scanf(“M+=+-+”,&x,&y,&z,&w); printf(“M+=+-+\\n”,x,y,z,w); A、1234123121<回车> B、1234123412341234<回车> C、1234+1234+1234+1234<回车> D、1234+123+12+1<回车> 39、若x,y均为int型变量,z为double型变量,则以下不合法的scanf函数调用语句为 。 A、scanf(“%d,%lx,%le”,&x,&y,&z); B、scanf(“-*%d%lf”,&x,&y,&z); C、scanf(“%x%*d%o”,&x,&y); D、scanf(“%x%o%6.2f”,&x,&y,&z); 40、设a,b均是int型变量,则以下不正确的函数调用为 。 5 答 案 36、A 37、A 38、D 39、D 40、A