还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2014年春C语言程序设计复习分数分布题号一二三四五满分2030201218得分题型得分评卷人
一、填空题(每空2分,共20分)得分评卷人
二、选择题(每小题2分,共30分)得分评卷人
三、给出下列程序运行后的输出结果每小题5分,共20分得分评卷人
四、程序填空题每空2分,共12分得分评卷人
五、编写程序(共18分)注以下答案仅为个人理解的方法所出同学们帮核对一下若有错误还请同学们指正如有哪个同学有更好更快更准更简的方法做题或编程序,还望其能指点
一二、多探讨多交流同学们可以直接把程序复制到VC
6.0编译器上编译此外我发有个编译器在群共享文件里是中文版的哦,本人觉得挺好用的同学们也可以下载来用用看好不好用给出程序运行结果
1.该程序运行后的输出结果是_____
8、
1、1_____#include“stdio.h”voidmain{inta=9b=17;printf“%d\n”b%a;//17余9=8printf“%d\n”!ab;//!9=0017为真所有真的值为=1printf“%d\n”ab;//97相当于真真=真=1}
2.若执行下述程序时,若从键盘输入10和5时,结果为_______100______注意程序没有预处理头文件#includestdio.h不知道题目是省略还是故意弄如果加了头文件程序如下main(){intabs;scanf(%d%dab);//从键盘上分别输入10和5分别放到地址a和地址b去s=a;//此时S的值=10if(ab)//判断105吗?s=b;//不小于跳出这条语句s=s*s;//执行10*10的值赋给S=100printf(%ds);//输出S的值=100}列表解析分别输入10和5循环列表 值值值表达式运行次数abs=s=s*s110510010*10 10比5大所以跳过s=b这条语句此时然后再执行s*s=10*10=100 如果分别输入5和10循环列表 值值值表达式表达式运行次数abs=s=bs=s*s1510100s=1010*10 5比10大所以执行s=b这条语句此时s的值=b=10然后再执行s*s=10*10=100
3.以下程序执行后,sum的值是45#includestdio.hvoidmain{intisum=0;fori=1;i10;i++sum=sum+i;printf%d\nsum;}解析表值如下循环列表运行次数值值表达式i=i++sum=sum+i1110+12231+23363+344106+4551510+5662115+6772821+7883628+8994536+
94.程序段fori=1;i=2;i++{scanf%d%dxy;ifxy{t=x;x=y;y=-t;}printf%d%d\nxy;}解析注题目也是没有预处理命令头文件那样编译会出错的如果加有头文件那程序如下#includestdio.hintmain{intixyt;fori=1;i=2;i++//此循环是为了你能有两次输入的机会{scanf%d%dxy;ifxy//判断你所输入的第一个数是否比第二个数大,如果第一个数不比第二{//个数大那么就执行以下交换语句否则就跳出直接执行输出语句t=x;x=y;y=-t;//交换x和y的值}printf%d%d\nxy;//输出x和y的值}}执行该程序段时,若键盘输入41回车及14回车,则输出结果为_____1,-414__解析列表如下分别输入4和1及1和4循环列表 值值值表达式值值运行次数i=i++输入x输入yt=x;x=y;y=-t;输出x输出y1141此时x=1,y=-41-42214此时不执行交换语句
415.下列程序的运行结果是___*##*##*##*##*##*##*##*#$______#includestdio.hmain{inti;fori=1;i=15;i++{ifi%2printf*;printf#;}printf$\n;}解析列表如下循环列表值 i%2不为0时i%2为0时i15时 执行次数值值执行语句执行语句执行语句 ii%2printf“*”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#includestdio.h#defineN7main{intif[N]={678152052}m;m=0;fori=1;iN;i++iff[i]f[m]m=i;printf“m=%4d”m;}解析表如下比较次数 值值值数组下标所存放的数数组比较数值比较imm=if
[0]6第1次f
[1]f
[0]761不变不执行f
[1]7第2次f
[2]f
[0]862不变不执行f
[2]8第3次f
[3]f
[0]1563不变不执行f
[3]15第4次f
[4]f
[0]1264不变不执行f
[4]20第5次f
[5]f
[0]5655执行=5f
[5]5第6次f
[6]f
[5]2566执行=6f
[6]2程序填空
1.下列的程序的功能是若输入
10、20,则程序的执行结果是
20、10#include“stdio.h”voidmain{intabt;scanf“%d%d”___a,b,__________;t=a;__a=b_;__b=t______;printf“%d%d”ab;}
2.求1!+2!+…+5!=程序如下#include“stdio.h”voidmain{intsnt=1;fors=0n=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”voidmain{intx
[6]i;floatsum=
0.0ave;printf“请输入10个学生的成绩:\n”;//这怎么又是输入10个学生成绩呢?与题不符fori=0;i6 ;i++{scanf“%d” x[i] ;sum= sum+x[i] ;}ave=sum/10;printf“平均分=%
5.2f\n”ave;fori=0;i6;i++ifx[i]aveprintf“%f\n”x[i];}解析本人感觉题目有点不对劲,输入6个干嘛要定义10个元素大的数组,if语句后面应该是少了半边括号笔误?而且题目要求输入6个学生的成绩平均分表达式确变成除以10这能求出平均分吗?以下是本人理解能力范围内增加的程序以下是输入10个学生成绩的程序#includestdio.hvoidmain{intx
[10]i;floatsum=
0.0avea;printf请输入10个学生的成绩:\n;fori=0;i10;i++{scanf%dx[i];sum=sum+x[i];//求总分数}ave=sum/
10.0;//求平均分printf平均分=%
5.2f\nave;fori=0;i10;i++ifx[i]ave//如果有在数组中的数大于平均分则执行下面的输出语句printf大于平均分的有%d\nx[i];//注如果改成题目上%f的话输出的为0}编程题1.用for语句计算s=1+2+3+……+100的值(5分)答案1#includestdio.hintmain{intis;//定义两个变量i和sfori=0s=0;i=100;i++//循环语句如果i小于1等于100那就执行s=s+i这条语句s=s+i;//累加值赋给sprintf%ds;//输出累加值s的值return0;}2.编写一个程序输入四个数,输出四个数中的最大者5分答案1#includestdio.hintmain{intimaxa
[4];printf请输入4个数:\n;fori=0;i4;i++scanf%da[i];fori=0;i4;i++{max=a
[0];ifa[i]maxmax=a[i];}printf最大值max=%dmax;return0;}答案2#includestdio.hintmain{intabcdmax;printf请输入4个数:\n;scanf%d%d%d%dabcd;{max=a;ifmaxbmax=b;ifmaxcmax=c;ifmaxdmax=d;}printf最大值max=%dmax;return0;}答案3#includestdio.hintmain{intabcdmax;printf请输入4个数:\n;scanf%d%d%d%dabcd;{ifabacadmax=a;ifbabcbdmax=b;ifcacbcdmax=c;ifdadcdbmax=d;}printf最大值max=%dmax;return0;}3.编程实现计算50到200之间的偶数之和8分答案1用for语句,对输出的值对2进行取余(也就是求偶数的方法)#includestdio.hintmain{intisum;fori=50sum=0;i=200;i++ifi%2==0//如果i对2取余为0则执行下面的语句,否则跳过下面语句回到for循环{sum=sum+i;}printf50~....200的总和sum=%dsum;return0;}答案2用for循环语句进行累加,加上用i=i+2(跳过奇数的技巧)#includestdio.hintmain{intisum;fori=50sum=0;i=200;i=i+2sum=sum+i;printf50~200的总和=%dsum;return0;}4.输入10个学生的成绩,成绩是整数并用数组来保存,求出其中最高分max和最低分min8分答案1用if语句逐个比较#includestdio.hintmain{intabcdefghijkmaxmin;printf请输入10学生成绩:\n;scanf%d%d%d%d%d%d%d%d%d%dabcdefghij;{max=a;min=a;//假设a是最低分或最高分ifmaxbmax=b;//逐个比较最大那个数然后把最大值赋给maxifmaxcmax=c;ifmaxdmax=d;ifmaxemax=e;ifmaxfmax=f;ifmaxgmax=g;ifmaxhmax=h;ifmaximax=i;ifmaxjmax=j;ifminbmin=b;//逐个比较最小那个数然后把最小的值赋给minifmincmin=c;ifmindmin=d;ifminemin=e;ifminfmin=f;ifmingmin=g;ifminhmin=h;ifminimin=i;ifminjmin=j;}printf最高分max=%d\n最低分min=%dmaxmin;return0;}答案2;用数组的方式.#includestdio.hintmain{intimaxmina
[10];printf请输入10学生成绩:\n;//提示你输入10个分数fori=0;i10;i++//用for循环语句把输入的10个分数分别存到a
[0]~a
[9]scanf%da[i];max=a
[0];//假设a
[0]位置存的是最高分min=a
[0];//假设a
[0]位置存的是最低分fori=1;i10;i++//用for循环语句逐个输出刚刚存到a
[0]~a
[9]的分数{ifmaxa[i]max=a[i];//把输出的分数逐个比较直到出现真正最大那个数才最终赋值个max(其实第一次max相当于a
[0]位置存的数,因为上面a
[0]赋值给了max)ifmina[i]min=a[i];//把输出的分数逐个比较直到出现真正最小那个数才最终赋值个min}printf最高分max=%d\n最低分min=%dmaxmin;return0;}。