《2023年二级C语言程序设计期末大作业.doc》由会员分享,可在线阅读,更多相关《2023年二级C语言程序设计期末大作业.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、二级C语言程序设计期末大作业(3-4-5)一、单选题 1. C 语言程序中可以对程序进行注释,注释某些必要用符号_C_括起来。 A. 和 B. 和 C. /* 和 */D. */ 和 /*2. 设要定义n为整型变量,定义x为浮点型变量,对的语句是:_B_ 。 A. int n,float x,B. int n,float x;C. int n;float x,D. int n;float x;3. 设有int n;从键盘上输入整数给变量n,对的语句是:_D_ 。 A. scanf( n );B. scanf( n );C. scanf( %d,n );D. scanf( %d,&n );4.
2、程序段 int x=3,y=2; printf(%d,x*=y+8/5);输出成果为_D_ 。 A. 1B. 5C. 7D. 95. 要判断char型变量m与否是数字,可以使用表达式_B_。A. 0=m & m=0 & m=9C. 0=m & m=9D. 0=m b) a=b;if(ac) a=c;A. 1B. 2C. 3D. 不拟定7. 下面for 语句执行时,_B_将形成无限循环。A. for(s=j=0;j100;j+=1) s+=j;B. for(s=j=0;j100;j+1) s+=j;C. for(s=j=0;j100;+j) s+=j-1;D. for(s=j=0;j100;j+
3、) s+= j;8. 循环语句中,break作用是_B_。 A. 终结程序运营B. 结束本次循环C. 从本循环体内跳出D. 跳出子函数9. 如下对的语句是_D_。A. int a14 = 1,2,3,4,5;B. float x3 = 1,2,3;C. long b23 = 1,1,2,1,2,3;D. double y 3 = 0;10. 执行如下程序段后,m值是_C_。int a=2,1,3,5,4;int m=10,k,*ptr=a;for(k=0;kdata;_B_。 图6-12 链表构造A. p-next-data = p-data;p-data =t;B. p-data = p-n
4、ext-data;p-next-data =t;C. p-data = t;p-next-data = p-data;D. p-next-data = t;p-data = p-next-data;二、程序填空题 1. 程序运营时,输入整数n(0n10)后,输出一种数字金字塔。如输入4,则输出: 1 222 33333 4444444源程序:#include void main() int i,j,n; scanf(%d,&n); for(i=1;_i=n_;i+) for(j=1;j=n+1-i;j+) putchar( ); /* 输出空格 */ for(j=1;j=_i*2-1_;j+)
5、 printf(%d,i); printf(_n_); getchar(); /*暂停程序,按任意键继续*/2. 输入一行字符,记录并输出其中英文字母、数字和其她字符个数。运营示例:输入字符串:ABCabc23+45#各类字符个数:letter=6,digit=4,other=2源程序:#include void main( ) int digit,letter,other; char _ch_; digit = letter = 0; other = _0_; printf(输入字符串:); while( (ch = getchar()!= n) if(ch = a & ch = A & c
6、h = 0 & ch = 9) digit +; else _other+_; printf(各类字符个数:n ); printf(letter=%d,digit=%d,other=%dn,letter,digit,other); getchar(); /*暂停程序,按任意键继续*/3. 输入一种整数,逆序后输出。函数reverse(int number)功能是返回number逆序数。例如reverse(12345)返回值是54321。运营示例:输入整数:-1230逆序后:-321源程序:#include int reverse(int);void main( ) int in; _int m
7、_; printf(输入整数:); scanf(%d,&in); m = _reverse(in)_; printf(逆序后:%dn,m); getchar();/*暂停程序,按任意键继续*/int reverse(int number) _int flag_; int res=0; flag = number 0 ?-1 :1; /* flag标志正负数 */ if(number 0) number = - number; while(number != 0) res = res*10 + number%10; _number=number/10_; return _flag_*res;三、
8、操作题(一)程序调试题1. 程序调试题1调试规定:下列程序涉及2个错误,请按题中功能规定,调试并修改该程序(在所修改语句后加/*/字样注释),使其运营能得到对的成果。将成果(涉及B_2_1.C文献和B_2_1.EXE文献)保存到指定目录中。功能阐明:运用格里高利公式/4=1-1/3+1/5-1/7+.求前n.项值。如输入:5则输出:pi=3.339683又输入:10000则输出:pi=3.141498带错误原程序(见B_2_1.C):#include main( ) float pi=0,n,i; int sign=1; scanf(%f,n); /* scanf(%f,&n);*/ for
9、(i=1;i=n;i+) pi+=sign/(2*i-1); sign=-sign; pi=4*pi /* pi=4*pi;*/ printf(pi=%fn,pi); getchar(); /*本句无错;暂停程序,按任意键继续 */2. 程序调试题2调试规定:下列程序涉及3个错误,请按题中功能规定,调试并修改该程序(在所修改语句后加/*/字样注释),使其运营能得到对的成果。将成果(涉及B_2_2.C文献和B_2_2.EXE文献)保存到指定目录中。功能阐明:从键盘输入一种非负十进制整数n(n32768),转化成二进制存入数组a,输出二进制成果。如输入:23则输出:10111又输入:1234则输出
10、:带错误原程序(见B_2_2.C):#include main()int a16,n; /* int a16,n,i;*/ scanf(%d,&n); for (i=0;n0;i+) */ a(i)=n%2; /* ai=n%2;*/ n/=2; while(i0) printf(%d,a-i); getchar(); /*本句无错;暂停程序,按任意键继续 */3. 程序调试题3调试规定:下列程序涉及3个错误,请按题中功能规定,调试并修改该程序(在所修改语句后加/*/字样注释),使其运营能得到对的成果。将成果(涉及B_2_3.C文献和B_2_3.EXE文献)保存到指定目录中。功能阐明:程序从键
11、盘输入一行字符串,所有字符依次向右循环移动m个位置并输出,移出字符循环到最左边。如输入:3则输出:带错误原程序(见B_2_3.C):#include #include void shift_s(char a,int n,int m) /*a数组n个字符右移m个位置*/ int i,j,t; for(i=1;im;i+) /* for(i=1;i0;j-) aj = aj+1; /*移位并复制*/ /* aj=aj-1;*/ a0=an; an=0;main() char stra80; int i,n,m; gets(stra); n = strlen(stra); scanf(%d,&m);
12、 shift_s(stra,n,m); /*函数调用参数*/ puts(*stra); /* puts(stra);*/ getchar(); /*本句无错;暂停程序,按任意键继续 */(二)编程题(2小题,共35分)1编程题1编程规定:请按题中功能规定,编写程序并能得到对的成果。将成果(涉及B_4_1.C文献和B_4_1.EXE文献)保存到指定目录中。功能阐明:编写程序,实现如下成绩解决功能(输出格式参见示例):(1)输入10个成绩(整数类型,数组名记为a);(2)计算并输出最高分(记为max)、最低分(记为min)与成绩中值(记为midd),其中成绩中值为最高分与最低分平均值(保存一位小数
13、输出);(3)将midd及以上成绩归为A档,midd如下成绩归为B档,记录并输出A、B两档人数。运营示例:输入:88 59 50 74 60 99 75 90 68 70输出:Max=99,Min=50,Midd=74.5,A=4,B=6程序如下:#include main()int a10,i,sum=0; int Max,Min,A=0,B=0;float Midd;printf(输入:);for(i=0;i10;i+) scanf(%d,&ai); Max=a0;for(i=1;i10;i+) if(Maxai) Max=ai; Min=a0; for(i=1;iai) Min=ai;
14、Midd=(Max+Min)/2.0; for(i=0;iMidd) A+; if(aiMidd) B+; printf(输出:Max=%d,Min=%d,Midd=%.1f,A=%d,B=%dn,Max,Min,Midd,A,B);2编程题2编程规定:请按题中功能规定,编写程序并能得到对的成果。将成果(涉及B_4_2.C文献和B_4_2.EXE文献)保存到指定目录中。功能阐明:编写程序,通过如下环节验证一种正整数与否符合特定规则:(1)输入一种4位正整数n,将n分拆为a与b两某些:a为n高3位,b为n最低位;(2)计算a所有因子之和,记为s(当1ia时,假如a是i倍数,则i是a因子);(3)
15、假如s个位数等于b,则输出Pass,否则输出Fail;(4)将a,b,s值保存到文本文献B42.TXT中。输出格式参见如下示例。运营示例:输入:1164输出:116:1+2+4+29+58=94,Pass运营后文献内容:116 4 94阐明:输入数为1164(相应n),分拆为116(相应a)和4(相应b),116因子为1、2、4、29和58,累加和为94(相应s),s个位数等于b(4),输出Pass,a,b,s保存在文献中。#includevoid main()int a,b,i,n,s=0;printf(输入一种四位数:);scanf(%d,&n);a=n/10;b=n%10;printf(%d:,a);for(i=1;ia;i+)if(a%i=0)if(i=1)printf(%d,i);elseprintf(+%d,i);s+=i;printf(=%d,s);if(s=94)printf(passn);elseprintf(failn);