




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2014年春C语言程序设计复习分数分布:题号一二三四五满分2030201218得分题型:得分评卷人一、填空题(每空2分,共20分)得分评卷人二、选择题(每小题2分,共30分)得分评卷人三、给出下列程序运行后的输出结果(每小题5分,共20分)得分评卷人四、程序填空题(每空2分,共12 分)得分评卷人五、编写程序(共18分)注:以下答案仅为个人理解的方法所出。同学们帮核对一下若有错误还请同学们指正。如有哪个同学有更好更快更准更简的方法做题或编程序,还望其能指点一二、多探讨多交流。同学们可以直接把程序复制到VC6.0编译器上编译。此外我发有个编译器在群共享文件里是中文版的哦,本人觉得挺好用的同学们也可以下载来用用看好不好用。给出程序运行结果:1. 该程序运行后的输出结果是_8、1、1_。# include “stdio.h”void main( ) int a=9,b=17;printf(“%dn”,b%a); /17余9=8printf(“%dn”,!ab); /!9=0 017 为真 所有真的值为=1printf(“%dn”,a&b); /9&7相当于 真&真=真=1 2. 若执行下述程序时,若从键盘输入10和5时,结果为_100_注意程序没有预处理头文件#include不知道题目是省略还是故意弄。如果加了头文件程序如下。 main() int a,b,s; scanf(%d%d,&a,&b); /从键盘上分别输入10和5 分别放到地址a 和地址b去。 s=a; /此时 S的值=10 if(ab) /判断105吗? s=b; /不小于跳出这条语句 s=s*s ; /执行10*10的值赋给S=100 printf(%d,s); /输出S 的值=100列表解析:分别输入10和5循环列表值值值表达式运行次数abs=s=s*s110510010*1010比5大所以跳过s=b这条语句此时然后再执行s*s=10*10=100如果分别输入5和10循环列表值值值表达式表达式运行次数abs=s=bs=s*s1510100s=1010*105比10大所以执行s=b这条语句此时s的值=b=10然后再执行s*s=10*10=1003. 以下程序执行后,sum的值是 45 。#include void main( ) int i,sum=0; for(i=1;i10;i+) sum=sum+i; printf(%dn,sum);解析表值:如下循环列表运行次数值值表达式i=i+sum=sum+i1110+12231+23363+344106+4551510+5662115+6772821+7883628+8994536+94. 程序段:for (i=1; iy) t=x; x=y; y=-t; printf(%d %dn,x,y); 解析: 注题目也是没有预处理命令头文件那样编译会出错的 如果加有头文件那程序如下:# include int main( )int i,x,y,t;for (i=1; iy) /判断你所输入的第一个数是否比第二个数大,如果第一个数不比第二 /个数大那么就执行以下交换语句否则就跳出直接执行输出语句 t=x; x=y; y=-t; /交换x和y的值 printf(%d %dn,x,y); /输出x和y的值 执行该程序段时,若键盘输入4 1及1 4,则输出结果为 _1,-4 1, 4_ 。 解析:列表如下分别输入4和1及1和4循环列表值值值表达式值值运行次数i=i+输入x输入yt=x;x=y;y=-t;输出x输出y1141此时x=1,y=-41-42214此时不执行交换语句415. 下列程序的运行结果是 _*#*#*#*#*#*#*#*#$_ 。#include main() int i; for(i=1;i15时执行次数值值执行语句执行语句执行语句ii%2 printf(“*”) printf(“#”)printf(“$n”)最终结果1次12*#*#2次20#*#3次31*#*#*#4次40#*#*#5次51*#*#*#*#6次60#*#*#*#7次71*#*#*#*#*#8次80#*#*#*#*#9次91*#*#*#*#*#*#10次100#*#*#*#*#*#11次111*#*#*#*#*#*#*#12次120#*#*#*#*#*#*#13次131*#*#*#*#*#*#*#*#14次140#*#*#*#*#*#*#*#15次151*#*#*#*#*#*#*#*#*#16次16跳出跳出跳出$*#*#*#*#*#*#*#*#$6. 以下程序的输出结果是: m= 6 。记得m=后面要空4列因为输出被控制为%4d#include #define N 7main() int i,fN=6,7,8,15,20,5,2,m; m=0; for(i=1;iN;i+)if(fifm) m=i; printf(“m=%4d”,m);解析:表如下 比较次数值值值数组下标所存放的数数组比较数值比较imm=if06第1次f1f0761不变不执行f17第2次f2f0862不变不执行f28第3次f3f01563不变不执行f315第4次f4f01264不变不执行f420第5次f5f05655执行=5f55第6次f6f52566执行=6f62程序填空1. 下列的程序的功能是:若输入10、20,则程序的执行结果是 20、10。 # include “stdio.h” void main( ) int a, b ,t; scanf(“%d%d”, _&a ,&b,_);t=a ; _a=b_;_b=t_;printf ( “%d,%d” ,a, b );2. 求1!+2!+ + 5! = ? ,程序如下: #include “stdio.h” void main( ) int s,n,t=1; for ( s=0,n=1 ;_i=5_; n+) t=t*n; s=_s+t_ ; printf(“1!+2!+ + 5! =%d”,_s_); 解析表如下循环列表值值表达式值表达式运行次数ntt=t*nss=s+t1111=1*111=0+12222=1*233=1+23366=2*399=3+6442424=4*63333=9+2455120120=5*24153153=33+1203. 以下程序的功能是:输入6个学生的成绩,统计学生的平均分,并将成绩大于平均分的成绩输出。请填空:# include “stdio.h”void main( ) int x6, i;float sum=0.0, ave ; printf (“请输入10个学生的成绩 : n”) ; /这怎么又是输入10个学生成绩呢?与题不符 for(i=0; i6;i+) scanf(“%d”, &xi); sum= sum+xi; ave= sum/10; printf (“平均分 = %5.2fn”, ave); for (i=0; iave) printf(“%fn”, xi);解析:本人感觉题目有点不对劲,输入6个干嘛要定义10个元素大的数组,if语句后面应该是少了半边括号。笔误?而且题目要求输入6个学生的成绩平均分表达式确变成除以10这能求出平均分吗? 以下是本人理解能力范围内增加的程序以下是输入10个学生成绩的程序# include void main() int x10, i; float sum=0.0, ave ,a; printf (请输入10个学生的成绩 : n) ; for(i=0; i10;i+) scanf(%d,&xi); sum= sum+xi;/求总分数 ave=sum/10.0;/求平均分 printf (平均分 = %5.2fn, ave); for (i=0; iave) /如果有在数组中的数大于平均分则执行下面的输出语句。 printf(大于平均分的有:%dn, xi);/注:如果改成题目上%f的话输出的为0编程题1 用for语句计算 s=1+2+3+100的值(5分)。答案1:#includeint main() int i,s;/定义两个变量i和s。 for(i=0,s=0;i=100;i+) /循环语句如果i小于1等于100那就执行s=s+i这条语句 s=s+i;/累加值赋给s printf(%d,s);/输出累加值s的值。 return 0;2 编写一个程序:输入四个数,输出四个数中的最大者。(5分)答案1#include int main()int i,max,a4;printf(请输入4个数:n);for(i=0;i4;i+) scanf(%d,&ai); for(i=0;imax) max=ai;printf(最大值max=%d,max);return 0; 答案2:#include int main()int a,b,c,d,max;printf(请输入4个数:n);scanf(%d%d%d%d,&a,&b,&c,&d); max=a; if(maxb) max=b; if(maxc) max=c; if(maxd) max=d; printf(最大值max=%d,max); return 0; 答案3:#include int main()int a,b,c,d,max;printf(请输入4个数:n);scanf(%d%d%d%d,&a,&b,&c,&d); if(ab&ac&ad) max=a; if(ba&bc&bd) max=b; if(ca&cb&ca&dc&db) max=d; printf(最大值max=%d,max); return 0; 3 编程实现:计算50到200之间的偶数之和。(8分)答案1:用for语句,对输出的值对2进行取余(也就是求偶数的方法)#include int main()int i,sum;for(i=50,sum=0;i=200;i+)if(i%2=0)/如果i对2取余为0则执行下面的语句,否则跳过下面语句回到for循环。 sum=sum+i;printf(50 .200的总和sum=%d,sum); return 0; 答案2:用for循环语句进行累加,加上用i=i+2(跳过奇数的技巧)#include int main()int i,sum;for(i=50,sum=0;i=200;i=i+2)sum=sum+i;printf(50200的总和=%d,sum); return 0; 4 输入10个学生的成绩,成绩是整数并用数组来保存,求出其中最高分max和最低分min。(8分)答案1:用if语句逐个比较#include int main()int a,b,c,d,e,f,g,h,i,j,k,max,min;printf(请输入10学生成绩:n);scanf(%d%d%d%d%d%d%d%d%d%d,&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); max=a; min=a;/假设a是最低分或最高分。 if(maxb) max=b;/逐个比较最大那个数然后把最大值赋给max。 if(maxc) max=c; if(maxd) max=d; if(maxe) max=e; if(maxf) max=f; if(maxg) max=g; if(maxh) max=h; if(maxi) max=i; if(maxb) min=b;/逐个比较最小那个数然后把最小的值赋给min。 if(minc) min=c; if(mind) min=d; if(mine) min=e; if(minf) min=f; if(ming) min=g; if(minh) min=h; if(mini) min=i; if(minj) min=j; printf(最高分max=%dn最低分min=%d,max,min); return 0; 答案2;用数组的方式.#include int main()int i,max,min,a10;printf(请
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司行车安全培训课件
- 《诗经》中的《蒹葭》与《关雎》
- 亲子关系的课件
- 施工现场安全生产管理手册
- 公司级新员工安全培训课件
- 《要是你迷了路》课件
- 胃肠炎病人的护理
- 项目成本年终汇报
- 事故安全警示培训心得课件
- 理赔部门工作总结
- 静以修身俭以养德
- 医院2025年度内部控制风险评估报告
- 计算机网络基础IP地址TFTP协议NAT配置等知识试卷
- 重症自身免疫性脑炎监测与治疗中国专家共识(2024版)解读
- 机动车检测工资格证考试题(附答案)
- 护士沟通技巧与人文关怀护理课件
- 2025年上半年海南三亚市知识产权保护中心选聘事业单位6人重点基础提升(共500题)附带答案详解
- 2025年辽宁现代服务职业技术学院单招综合素质考试题库附答案
- 电力电缆模拟题及答案
- 2025年药物制剂工(中级)考试题库(附答案)
- 辽宁省沈阳市2024-2025学年八年级上学期期末考试英语试题(含答案无听力原文及音频)
评论
0/150
提交评论