2013.11.C语言半期考试卷讲评(一、二题)_第1页
2013.11.C语言半期考试卷讲评(一、二题)_第2页
2013.11.C语言半期考试卷讲评(一、二题)_第3页
2013.11.C语言半期考试卷讲评(一、二题)_第4页
2013.11.C语言半期考试卷讲评(一、二题)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*1.int a = 0 xA1, 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=161c=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);

2、printf(v=%.4f, v);*2.解答解答5/9是整数相除,值为0所以c=0*(f-32)=0f=41.0*(2.0+1.0)=123.0t=t+2.0=5.14159v=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的二进制补码:00000001|00000000b的二进制补码为a的低八位:00000000故b=0128的二进制补码为:10000000c默认为signed cha

3、r,最高位为符号位,故为负数其绝对值的原码是:10000000-1=01111111 再取反=10000000,十进制为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()输入一个字符输入一个字符1a=0;b=23;c=.;d=45输出为:输出为:a=0,b=23,c=.,d

4、=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)

5、;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+2a + i =A+2=Cz-i =z-2=x输出为:输出为:Cx*8.int i, j;for(i=1;i4;i+)for(j=0;j

6、=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

7、循环循环2:tn=a/(a+1)=0 sn=1*10+0=10 a=a/2=2 count=3循环循环3: tn=a/(a+1)=0 sn=10*10+0=100 a=2/2=1 count=4循环结束循环结束输出:输出:100.000000*10.int p6=1,2,3,5,8,13,i=1;while (pi%2 | +i6)printf(%d, pi+);*10.解答解答5/9是整数相除,值为是整数相除,值为0循环循环1:p1%2=2%2=0 i=+i=2 pi+=p2=3,i=3循环循环2:p3%2=5%2=1 p3=5,i=4循环循环3:p4%2=8%2=0 i=+i=5 pi+=

8、p5=13,i=6结束结束输出:输出:3,5,13 *11.int a,b,temp=1,r=1;scanf(%d,%d,&a,&b);if(ab)temp=a;a=b;b=temp;while(r!=0)r=a%b;a=b;b=r;printf(%d,a);假设程序段的输入为:假设程序段的输入为:60,24*11.解答解答执行执行a=b; a=24;执行执行b=temp; b=1;r!=0满足,执行满足,执行r=a%b=0执行执行a=b; a=1;执行执行b=r; b=0;输出:输出:1*12.int x=1, y=2, z=3;while (y=x) switch(y+) case 1:

9、x+;case 2: x+=2; break;case 3: x+=z; break;default: x=x%2; continue; z+;printf(%d,%d,y,z);*12.解答解答循环循环1:y=x为赋值表达式为赋值表达式, y=1switch(1) y=2执行执行x+ ; x=2执行执行x+=2; x=4执行执行z+; z=4循环循环2: y=x=4switch(4) y=5执行执行x=x%2=0; 循环循环3:y=x=0 循环结束循环结束输出:输出:0,4*以下程序实现:从键盘输入整数以下程序实现:从键盘输入整数n,计算,计算1!+2!+n!的值(的值(n的范围的范围1=n

10、16)。)。程序程序12行之前存在行之前存在6个错误,其余部分存个错误,其余部分存在若干错误,指出所有错误所在位置并在若干错误,指出所有错误所在位置并改正。改正。 (程序代码如下)(程序代码如下)int main() /*第1行*/ 增加include /*第2行*/ int i, n; /*第3行*/ double fac; /*第4行*/ int sum = 0; /*第5行*/ int改为double scanf(“%d”, n); /*第6行*/ 增加int j的定义 n之前加& if (n=0) /*第7行*/ =改为= printf(n不能为0!n); /*第8行*/ else if (n16)的判断 else; /*第11行*/ 删掉行尾的; /*第12行*/ for (j=1, j=n, j+) /*第13行*/ 两个,均改为; /*第14行*/ i=1; /*第15行*/ 增加fac=1 while (ij) /*第16行*/ 改为=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论