- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2013.11.C语言半期考试卷讲评(一、二题)
C语言期中试卷讲评
一、写出以下程序段的运行结果
1.
int a = 0xA1, b = 4;
int c = a++, d = ++b;
printf(a=%d,b=%d,, a, b);
printf(c=%d,d=%d, c, d);
1.解答
a=16*10+1=161
c=161 a=162 d=5 b=5
输出为:
a=162,b=5,c=161,d=5
一、写出以下程序段的运行结果
2.
float f = 41.0, c;
double t = 3.14159, v;
c = 5 / 9 * (f - 32);
f *= 2.0 + 1.0;
t += 2.0;
v = t / 10;
printf(f=%f,, f);
printf(c=%f,, c);
printf(t=%f,, t);
printf(v=%.4f, v);
2.解答
5/9是整数相除,值为0
所以c=0*(f-32)=0
f=41.0*(2.0+1.0)=123.0
t=t+2.0=5.14159
v=t/10=0.514159
输出为:
f=123.000000,c=0.000000,t=5.141590,v=0.5142
一、写出以下程序段的运行结果
3.
int a=256;
char b=a;
char c=128;
printf(%d,,b);
printf(%d,c);
3.解答
a的二进制补码:00000000
b的二进制补码为a的低八位故b=0
128的二进制补码为c默认为signed char,最高位为符号位,故为负数
其绝对值的原码是:1再取反十进制为128
故c=-128
输出为:
0,-128
一、写出以下程序段的运行结果
4.
char a, c;
int b, d;
getchar();
scanf(%c%d%c%d, a,b,c,d);
printf(a=%c,, a);
printf(b=%d,, b);
printf(c=%c,, c);
printf(d=%d,, d);
假设程序段的输入为:
1023.45回车
4.解答
getchar()输入一个字符1
a=‘0’;b=23;c=‘.’;d=45
输出为:
a=0,b=23,c=.,d=45,
一、写出以下程序段的运行结果
5.
float f=2.345;
int b=5;
double a;
a = (double)((int)f+5);
f = a||(5-b++);
printf(a=%lf,, a);
printf(b=%d, b);
5.解答
a=2+5=7;
f= a||(5-b++);
该项表达式根据a的值即可判断值为1,没有执行(5-b++)的判断
f=1, b=5值不变
输出为:
a=7.000000,b=5
一、写出以下程序段的运行结果
6.
int a = 20, b = 10;
if (a=b)
printf(1,);
else
printf(2,);
if (0=ab)
printf(3);
else
printf(4);
6.解答
a=b为赋值表达式, a=20,表达式的值为20,为真,故执行:
printf(1,);
0=a为真,故值为1,1b为真,
故0=ab表达式的值为1,
执行printf(3);
输出为:
1,3
一、写出以下程序段的运行结果
7.
char a=a, z=Z;
int i=D-b;
putchar(a+i);
putchar(z-i);
7.解答
i = ‘D’ - ’b’ =‘D’-’d’+2
a + i =‘A’+2=‘C’
z-i =‘z’-2=‘x’
输出为:
Cx
一、写出以下程序段的运行结果
8.
int i, j;
for(i=1;i4;i++)
{
for(j=0;j=i;j++)
{
if (j%2==0)
continue;
if (i%2==0)
break;
printf(%d,%d, i, j);
}
}
8.解答
只有当i和j都有奇数时才输出,且j=i
输出为:
1,13,13,3
一、写出以下程序段的运行结果
9.
int a,n,count=1;
double sn=0,tn=0;
scanf(%d,%d,a,n);
do
{
tn=a%2?1:a/(a+1);
sn=sn*10+tn;
a=a/2;
}while(++countn);
printf(%f, sn);
假设程序段的输入为:
9,4回车
9.解答
循环1:
tn=1,sn=1,a=4,count=2
循环2:tn
文档评论(0)