c语言习题doc.docx
- 文档编号:25318827
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:34
- 大小:25.73KB
c语言习题doc.docx
《c语言习题doc.docx》由会员分享,可在线阅读,更多相关《c语言习题doc.docx(34页珍藏版)》请在冰豆网上搜索。
c语言习题doc
1.C语言中,int型数据在计算机内部是由()表示的。
答:
int型数据在计算机内部是由16位补码表示的。
2.下列可以作为C语言用户标识符的是()。
A)_123B)a1b2c3C)intD)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
main()
{
printf("%d\n",NULL);
}
答:
0
因为stdio.h头文件中NULL的定义如下:
#defineNULL0
5.下面程序的输出是()。
main()
{intx=10,y=3;
printf("%d\n",y=x/y);
}
答:
3
因为两个同类型的数据作算术运算,其结果仍为该类型。
即整数除以整数,商仍为整数。
10/3的商为3。
6.下面程序的输出是()。
main()
{intx=023;
printf("%d\n",--x);
}
答:
18
因为023是一个八进制数,表达式--x的值为022,按照%d带符号的十进制数输出,结果为18。
注意:
023是八进制数;23是十进制数;0x23是十六进制数。
7.在C语言中,不正确的int类型的常数是()。
A)32768B)0C)037D)0xAF
答:
A)
8.执行下面程序中的输出语句后a的值是()。
main()
{inta;
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
main()
{inta=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d
答:
D)
因为%%是格式说明符,输出%,其它原样输出。
如果输出函数语句改成printf("a=%%%d,b=%%%d\n",a,c);,那么输出结果为A)。
10.以下程序的输出结果是()。
#include
main()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
A)6,1B)2,1C)6,0D)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.下面程序的输出结果是()。
inti=65536;
printf("%d\n",i);
答:
-1
因为int型变量i在C语言中是用16位补码表示的,而65535变成二进制数为111111*********1,因此i的值为111111*********1,按照带符号的十进制数%d输出-1,因为111111*********1是-1的补码。
13.若有说明和语句:
inta=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.83
16.若x为double变量,则以下语句()。
x=213.82631;
printf("%-6.2e\n",x);
答:
2.14e+02
17.若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=%d
18.若有以下定义:
chars=’\092’;
则该语句()。
A).使s的值包含1个字符
B).定义不合法,s的值不确定
C).使s的值包含4个字符
D).使s的值包含3个字符
答:
B)
因为字符’\092’中的092应该是八进制数,但八进制数中不可能出现9。
19.执行以下语句后,输出结果是()。
inta=1;
printf("%d,%d",a,a++);
答:
2,1
因为C语言中函数的实参计算顺序是从右至左。
即首先计算a++,然后计算a。
20.以下程序的输出结果是()。
#include
main()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
A)11,10B)9,10C)010,9D)10,9
答:
B)
010是八进制数。
21.已知字母A的ASCII码为65,以下程序的输出结果是()。
#include
main()
{
charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
}
答:
65,89
22.以下语句
inta=110,b=017;
printf("%x,%d\n",a++,++b);
输出结果是()
答:
6e,16
110的十六进制数为6e,八进制数017加1为020,等于十进制数16。
23.以下程序
main()
{inti=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,3
24.请读程序
#include
main()
{
inta;floatb,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f",a,b,c);
}
若运行时从键盘上输入9876543210
答:
a=98,b=765.000000,c=4321.000000
25.请读程序片段(字符串内没有空格字符):
printf("%d\n",strlen("AST\n012\1\\"));
上面程序的输出结果是()。
答:
9
字符串中包含9个字符,分别是AST\n012\1\\。
26.以下程序的输出结果是()
main()
{inti=-1;
printf("%d,%u\n",i,i);
}
答:
-1,65535
1.判断型char变量c1是否为小写字母的正确表达式为()。
A)'a'<=c1<='z'
B)(c1>=a)&&(c1<=z)
C)('a'>=c1)||('z'>=c1)
D)(c1>='a')&&(c1<='z')
答:
D)
2.程序的运行结果是()。
main()
{
inta=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的值为()。
inta,b,c;
a=b=c=1;
++a||++b&&++c;
答:
a的值为2;b的值为1。
4.程序的运行结果是()。
main()
{
intx=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()
{
intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);
}
答:
6
因为表达式m++>5的值为假,m的值为6,执行语句printf("%d\n",m--);时输出6,m的值又变为5。
6.程序的运行结果是()。
main()
{
inta=100,x=10,y=20,m=5,n=0;
if(x if(y! =m) a=1; else if(n)a=10; a=-1; printf("%d\n",a); } 答: -1 在if嵌套中,else总是与它上面最近的if结合,因此本程序变为: if(x {if(y! =m) a=1; else if(n)a=10; } a=-1; 最后变量a的值为-1。 7.若有条件表达式(exp)? a++: b--;则以下表达式中能完全等价于 表达式(exp)的是() A)(exp==0)B)(exp! =0) C)(exp==1)d)(exp! =1) 答: B) 因为表达式(exp)的意义是: 当变量exp的值为0时表示假;当变量exp的值为非0时表示真。 因此它与(exp! =0)等价。 8.程序的运行结果是()。 main() { intk=4,a=3,b=2,c=1; printf("%d\n",k k: c c: a); } 答: 1 因为运算符? 的结合性是自右至左。 因此首先计算c c:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 doc