当前位置:文档之家› c语言习题.doc

c语言习题.doc

1.C语言中,int型数据在计算机内部是由()表示的。

答:int型数据在计算机内部是由16位补码表示的。

2.下列可以作为C语言用户标识符的是()。

A) _123 B) a1b2c3 C) int D) 123abc答:A)和B)C语言标识符必须是以英文字母(a到z)、或者下划线_开头的字符串。

字符串中只能包含英文字母、下划线和数字(0到9)。

但字符串不能是C语言中的32个保留字(例如int,short,long,unsigned,float,char,if,switch,for,while等)。

3.在C语言中,如果下面的变量都是int类型,则输出的结果是()。

sum=pad=5,pAd=sum++,pAd++,++pAd;printf("%d\n",pad);答:输出结果是5。

因为C语言是字母大小写敏感的,也就是说区分大小写字母。

pad和pAd是两个不同的变量。

4.以下程序的输出结果是( )。

#include<stdio.h>main(){printf("%d\n",NULL);}答:0因为stdio.h头文件中NULL的定义如下:#define NULL 05.下面程序的输出是()。

main(){ int x=10,y=3;printf("%d\n",y=x/y);}答:3因为两个同类型的数据作算术运算,其结果仍为该类型。

即整数除以整数,商仍为整数。

10/3的商为3。

6.下面程序的输出是()。

main(){ int x=023;printf("%d\n",--x);}答:18因为023是一个八进制数,表达式--x的值为022,按照%d带符号的十进制数输出,结果为18。

注意:023是八进制数;23是十进制数;0x23是十六进制数。

7.在C语言中,不正确的int类型的常数是()。

A)32768 B)0 C)037 D)0xAF答:A)8.执行下面程序中的输出语句后a的值是()。

main(){ int a;printf("%d\n",(a=3*5,a*4,a+5));}答:15因为在计算逗号表达式a=3*5,a*4,a+5时,依次计算下面3个表达式:a=3*5(结果变量a的值为15,该赋值表达式的值也为15)a*4(该算术表达式的值为60)a+5(该算术表达式的值为20,输出函数printf输出20)逗号表达式的值为20,但变量a的值认为15。

9.以下程序的输出结果是()。

#include<stdio.h>main(){int a=2,c=5;printf("a=%%d,b=%%d\n",a,c);}A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d答:D)因为%%是格式说明符,输出%,其它原样输出。

如果输出函数语句改成printf("a=%%%d,b=%%%d\n",a,c);,那么输出结果为A)。

10.以下程序的输出结果是()。

#include<stdio.h>main(){ int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}A)6,1 B)2,1 C)6,0 D)2,0答:B)241/100的值为2,2%9的值为2。

(-1)&&(-1)的值为1。

在逻辑运算中,非0的值为真,真“与”真结果为真,关系和逻辑运算的结果如果为真用“1”表示,如果为假用“0”表示。

11.请选出以下语句的输出结果()。

printf("%d\n",strlen("\t\"\065\xff\n"));答:5函数strlen的功能是计算字符串长度。

那么字符串"\t\"\065\xff\n"包含多少个字符呢?\t是横向跳格字符;\”是字符”;\065是ASCII码值为八进制数065的字符;\xff是ASCII码值为十六进制数0xff的字符;\n是换行字符。

该字符串共有5个字符。

注意:记住常用的转义字符。

12.下面程序的输出结果是()。

int i = 65536;printf("%d\n", i);答:-1因为int型变量i在C语言中是用16位补码表示的,而65535变成二进制数为1111111111111111,因此i的值为1111111111111111,按照带符号的十进制数%d输出-1,因为1111111111111111是-1的补码。

13.若有说明和语句:int a=5;a++;此处表达式a++的值是()。

答:5表达式a++的值是5表达式计算后,变量a的值是6。

14.若k为int变量,则以下语句()。

k=8567;printf("|%-06d|\n",k);答:|8567 |两个|原样输出,格式符%-06d说明输出变量k的值长度为6且左对齐。

15.若x 为float型变量,则以下语句()。

x=213.82631;printf("%-4.2f\n",x);答:213.8316.若x为double变量,则以下语句()。

x=213.82631;printf("%-6.2e\n",x);答:2.14e+0217.若ch为char型变量,k为int型变量(已知字符a的ASCII十进制代码为97),则执行下列语句ch='a';k=12;printf("%x,%o,",ch,ch,k);printf("k=%%d\n",k);输出为()。

答:61,141,k=%d18.若有以下定义:char s=’\092’;则该语句()。

A).使s的值包含1个字符B).定义不合法,s的值不确定C).使s的值包含4个字符D).使s的值包含3个字符答:B)因为字符’\092’中的092应该是八进制数,但八进制数中不可能出现9。

19.执行以下语句后,输出结果是()。

int a =1;printf("%d,%d",a,a++);答:2,1因为C语言中函数的实参计算顺序是从右至左。

即首先计算a++,然后计算a。

20.以下程序的输出结果是()。

#include<stdio.h>main (){int i=010,j=10;printf("%d,%d\n",++i,j--);}A)11,10 B)9,10 C)010,9 D)10,9答:B)010是八进制数。

21.已知字母A的ASCII码为65,以下程序的输出结果是()。

#include <stdio.h>main( ){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);}答:65,8922.以下语句int a=110,b=017;printf("%x,%d\n",a++,++b);输出结果是()答:6e,16110的十六进制数为6e,八进制数017加1为020,等于十进制数16。

23.以下程序main(){int i=3,j=2,a,b,c;a=(--i==j++)?--i:++j;b=i++;c=j;printf("%d,%d,%d\n",a,b,c);}输出结果是()答:1,1,324.请读程序#include <stdio.h>main(){int a; float b, c;scanf("%2d%3f%4f", &a, &b, &c);printf("\na=%d,b=%f,c=%f",a,b,c);}若运行时从键盘上输入9876543210<CR>(<CR>表示回车),则上面程序的输出结果是()。

答:a=98,b=765.000000,c=4321.00000025.请读程序片段(字符串内没有空格字符):printf("%d\n",strlen("AST\n012\1\\"));上面程序的输出结果是()。

答:9字符串中包含9个字符,分别是A S T \n 0 1 2 \1 \\。

26.以下程序的输出结果是()main(){int i=-1;printf("%d,%u\n",i,i);}答:-1,655351.判断型char 变量c1 是否为小写字母的正确表达式为()。

A) 'a'<=c1<='z'B) (c1>=a)&&(c1<=z)C) ('a'>=c1)||('z'>=c1)D) (c1>='a')&&(c1<='z')答:D)2.程序的运行结果是()。

main(){int a=1,b=2,c=3,d=4,m=2,n=2;(m=a>b)&&(n=c>d);printf("%d",n);}答:2首先计算m=a>b,因为关系运算符>优先级高于赋值运算符=,a>b的结果为假(0),赋值后m 的值为0。

因为C语言计算逻辑表达式0&&(n=c>d)时,已经知道结果为0,因此n=c>d就不计算了。

N的值仍为2。

3.执行以下语句后a 的值为();b 的值为()。

int a,b,c;a=b=c=1;++a||++b&&++c;答:a的值为2;b的值为1。

4.程序的运行结果是()。

main(){int x=10,y=20,z=30;if(x>y)z=x;x=y;y=z;printf("%d,%d,%d",x,y,z);}答:20,30,30因为if(x>y)z=x;x=y;y=z;是三条语句,即:if(x>y)z=x;x=y;y=z;而不是:if(x>y){ z=x;x=y;y=z; }5.程序的运行结果是()。

main(){int m=5;if(m++>5)printf("%d\n",m);else printf("%d\n",m--);}答:6因为表达式m++>5的值为假,m的值为6,执行语句printf("%d\n",m--);时输出6,m的值又变为5。

相关主题