收藏 分销(赏)

2024年C语言试题资料.doc

上传人:天**** 文档编号:8186558 上传时间:2025-02-07 格式:DOC 页数:34 大小:77.54KB
下载 相关 举报
2024年C语言试题资料.doc_第1页
第1页 / 共34页
2024年C语言试题资料.doc_第2页
第2页 / 共34页
2024年C语言试题资料.doc_第3页
第3页 / 共34页
2024年C语言试题资料.doc_第4页
第4页 / 共34页
2024年C语言试题资料.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、第一章:C语言基础 训练1、有两个整数变量a和b,它们的值分别为8和3,计算它们的和、差、积、商。 #include main() int a=0,b=0,sum=0,m=0,t=0; float s=0.0; a=8;b=3; sum=a+b; m=a-b; t=a*b; printf(%d+%d=%dn,a,b,sum); printf(%d-%d=%dn,a,b,m); printf(%d*%d=%dn,a,b,t); printf(%d/%d=%dn,a,b,s); 扩展:计算并输出a除b的余数和ab的值 #include main() int a=8,b=3,m=0,t=0; m=a

2、%b; t=a*a*a; printf(%d%d=%dn,a,b,m); printf(%d%d=%dn,a,b,t); 训练2:假设圆柱体的底面半径为r(=2.5),高为h(=3.5),计算该圆柱体的体积(体积=底面积*高,底面积=r2 #include main() float r=2.5,h=3.5,v=0.0; v=3.14*r*r*h; printf(半径:%.2f,高:%.2f,体积:%.2fn,r,h,v); 扩展:输入半径和高,计算圆柱体的体积。数据输入使用scanf函数。 #include main() float r=0,h=0,v=0.0; scanf(%f%f,&r,&

3、h); v=3.14*r*r*h; printf(半径:%.2f,高:%.2f,体积:%.2fn,r,h,v); 第二章:次序结构程序设计 补充试验: 1、 输入一个三位十进制整数,将其按逆序转换为新的整数后输出。如输入127,输出721 #include main() int a=0,b=0; printf(pleass enter a 3-bit integer:); scanf(%d,&a); printf(old:%dn,a); /* 如127 */ b=a%10; /* 获取a的个位数, 7 */ a=a/10; /*求得原a数值的百十位,12 */ b=b*10+a%10; /*将

4、得到的第一个数扩大10倍再加目前a的个位数 70+2=72 */ a=a/10; /* 获取目前a的十位数, 1 */ b=b*10+a%10; /* 将目前b值扩大10倍+目前a, 720+1=721 */ printf(new:%dn,b); 2、 将本人缩写拼音名字译成密码,密码规律是用本来的字母背面第3个字符替代本来的字母。如刘欣鹏的缩写拼音名字为lxp,密码为os。 #include main() char c1=l,c2=x,c3=p; c1=c1+3; c2=c2+3; c3=c3+3; printf(%c%c%cn,c1,c2,c3); 训练2.1 :下面的程序能够把摄氏温度c

5、转化为华氏温度f,转化公式为3259+=cf,程序中有多处错误,请更正错误后运行正确的程序。 #include main() float c=0,F=0; printf(input c:); scanf(%f, c); f=(9/5)c+32; print(c=%f,f=%fn,&c,&f); 扩展:把程序功效改为:输入华氏温度f,计算摄氏温度c。 #include main() 答:#include main() float c=0,f=0; printf(input c:); scanf(%f,&c); f=(float)9/5)*c+32; printf(c=%f,f=%fn,c,f);

6、 float c=0,f=0; printf(input f:); scanf(%f,&f); c=(f-32)*5/9; printf(c=%.2f,f=%.2fn,c,f); 训练2.2:下面程序是把500分钟用小时和分钟显示,程序中有多处错误,请更正错误后运行正确的程序。 #include main() int m=0; h=500/60; m=500%60; Printf(500 minutes:%d hours and %d minutes, h,m); 扩展:不用500这一特殊数据,而改为输入的任意整数,实现相同功效。 #include main() int a=0,m=0,h=0

7、; scanf(%d,&a); h=a/60; m=a%60; printf(%d minutes:%d hours and %d minutes,a,h,m); 第三章:选择结构程序设计 补充试验:1、输入一个字符,若该字符为小写字母,将其转换为对应大写字母;若为数字字符,则转换为对应数字,其他字符按原样输出。 #include main() char c=0; scanf(%c,&c); if(c=a&c=0&c=9) printf(digit:%dn,c-0); else printf(letter:%cn,c); 2、编写程序,求下面分段函数的值,要求x的值从键盘输入。-+=时)(当初

8、)(当初)(当初)当10101053x502x0(0y2xxxx 答:#include main() int m=0,h=0;/*未定义变量h*/ h=500/60; m=500%60; printf(500 minutes:%d hours and %d minutes,h,m); /*printf中的p应小写,且双引号后缺乏逗号*/ #include #include main() double x=0.0,y=0.0; int k=0; scanf(%lf,&x); k=1*(x=0&x=5&x=10); switch(k) case 1: y=0;break; case 2: y=x+

9、2;break; case 3: y=x*x-3;break; case 4: y=10;break; printf(x=%lf,y=%lfn,x,y); 训练3.1:输入一个字符,假如是数字字符,则转换成对应的数字。 #include main() char ch=0; int a=-1; ch=getchar(); if(ch=0&ch=9) a=ch-0; printf(charter %c ,digit:%dn,ch,a); else printf(%c is not digitn,ch); 扩展:将程序的功效改为:假如所输入的字符为大写字母,则将其转换为小写字母。请使用库函数判断和转

10、换。 #include #include main() char ch=0; ch=getchar(); printf(the input charter is %c n,ch); if(isupper(ch) ch=tolower(ch); printf(The corresponding lowercase letter is %cn,ch); else printf(It is not the capital letter!n); 训练3.2:求一元二次方程ax2+bx+c=0的实根(要求a,b,c的值从键盘输入,a0) #include #include main() int a=0,

11、b=0,c=0; float delta=0,x1=0,x2=0; scanf(%d%d%d,&a,&b,&c); delta=b*b-4*a*c; if(delta0) printf(这方程无实根n); else x1=(-1*b+sqrt(delta)/(2*a); x2=(-1*b-sqrt(delta)/(2*a); printf(这方程的根是:x1=%.2f,x2=%.2fn,x1,x2); 扩展:完善程序的功效,假如a的值为0,显示不是合法的一元二次方程的信息,否则,计算两个实根。 #include #include main() int a=0,b=0,c=0; float de

12、lta=0,x1=0,x2=0; scanf(%d%d%d,&a,&b,&c); if(a=0) printf(输入数据错误!n); else delta=b*b-4*a*c; if(delta0) printf(这方程无实根n); else x1=(-1*b+sqrt(delta)/(2*a); x2=(-1*b-sqrt(delta)/(2*a); printf(这方程的根是:x1=%.2f,x2=%.2fn,x1,x2); 训练3.3:输入某年的年份,判断此年是不是闰年。判断闰年的措施是:若该年份能被400整除,或能被4整除而不能被100整除,则此年为闰年,否则为平年。 #include

13、 #include main() int year=0; scanf(%d,&year); if(year%400=0|(year%4=0&year%100!=0) printf(%d年是闰年!n,year); else printf(%d年是平年n,year); 扩展:使用不嵌套确实if-else语句实现功效。当输入的年份为零或负数时,要显示信息“Error!”。 #include #include main() int year=0,flag=0; scanf(%d,&year); if(year%400=0) flag=1; if(year%4=0&year%100!=0) flag=1

14、; if(year=0) flag=-1; if(flag=-1) printf(Error!n); if(flag=1) printf(%d年是闰年!n,year); if(flag=0) printf(%d年是平年n,year); 训练3.4:依照输入的生日(年y月m日d)和今日的日期(年yt月mt日dt)计算并输出实际年龄。 #include main() int y=0,m=0,d=0,yt=0,mt=0,dt=0; int age=0; scanf(%d%d%d,&y,&m,&d); scanf(%d%d%d,&yt,&mt,&dt); age=yt-y; if(mtm) age-;

15、 else if(mt=m&dtd) age-; printf(年龄是:%dn,age); 扩展:依照输入的3个边长,a,b,c,判断它们能否组成三角形;若能组成三角形,继续判断该三角形是等边、等腰还是一般三角形。 #include main() int a=0,b=0,c=0; scanf(%d%d%d,&a,&b,&c); if(a+bc&a+cb&b+ca) if(a=b|a=c|b=c) if(a=b&b=c) printf(这是一个等边三角形n); else printf(这是一个等腰三角形n); else printf(这是一个一般三角形n); else printf(这不是三角形

16、n); 第四章:循环结构程序设计 补充试验: 1、一头母牛每年初生一头小母牛,每头小母牛从第4年起,年初也生小母牛。编写程序计算,第时牛的头数。 #include main() int i=0,a=2,b=3,c=4,d=0; for(i=4;i=20;i+) d=c+a;a=b;b=c;c=d; 训练4.2:从键盘输入的字符中统计数字字符的个数,要求用换行符结束循环。 #include main() int count=0; char ch=0; ch=getchar(); while(ch!=n) if(ch=0&ch=9) count+; ch=getchar(); printf(%dn

17、,count); 扩展:从键盘输入的字符中将“0”“8”字符改为其后的数字字符,将“9”字符改为“0”字符,要求用“#”字符结束循环。 #include main() char ch=0; ch=getchar(); while(ch!=#) if(ch=0&ch=8) ch=ch+1; else if(ch=9) ch=0; putchar(ch); ch=getchar(); 训练4.3:编写用人机对话形式进行加、减、乘、除运算的程序。用户每输入一次运算符和运算数,系统输出对应的计算成果。当输入的运算符为“#”时结束循环。 #include main() int i=1,flag=0; f

18、loat a=0,b=0,result=0; char sym=0; printf(%.2f%c%.2f,&a,&sym,&b); while(sym!=#) switch(sym) case +: result=a+b;break; case -: result=a-b;break; case *: result=a*b;break; case /: result=a/b;break; default:flag=2; if(flag=0) printf(%.2f%c%.2f=%.2fn,a,sym,b,result); i+; else printf(%c is an illegal cha

19、racter!n,sym); printf(%d)n,i); scanf(%f%c%f,&a,&sym,&b); flag=0; 扩展:在Switch语句中,完善“case/”的分支,即假如除数为0,给flag赋值1,否则计算两个数的商。退出switch语句后,假如flag的值为1,显示除数为0的错误信息。 #include main() int i=1,flag=0; float a=0,b=0,result=0; char sym=0; printf(%d)n,i); scanf(%f%c%f,&a,&sym,&b); while(sym!=#) switch(sym) case +: r

20、esult=a+b;break; case -: result=a-b;break; case *: result=a*b;break; case /: if(b=0) flag=1; else result=a/b;break; default:flag=2; if(flag=0) printf(%.2f%c%.2f=%.2fn,a,sym,b,result); i+; if(flag=1) printf(Divided by 0!n); if(flag=2) printf(%c is an illegal character!n,sym); printf(%d)n,i); scanf(%f

21、%c%f,&a,&sym,&b); flag=0; 训练4.4:编写一个循环程序,当从键盘输入字符Y或y或N或n,则终止循环否则一直等候输入。 #include #include main() char ch=0; printf(Do you continue(Y/N)?n); do ch=getch(); if(ch=Y|ch=y|ch=N|ch=n) break; printf(Error,please input again.n); while(1); printf(Right!n); 扩展:在如下菜单中重复选择菜单项,选择3时结束循环。1、Hello! 2.Welcome! 3.Goo

22、d-bye! #include #include main() int a=0; do printf(1.Hello!n); printf(2.Welcome!n); printf(3.Good-bye!n); scanf(%d,&a); switch(a) case 1: printf(Hello!n); printf(Press any key to continuen); getch();break; case 2:printf(Welcome!n); printf(Press any key to continuen); getch();break; case 3: printf(Go

23、od-byen);break; while(a!=3); 第五章:数组 补充试验 1、 假设数组a中已经存储20个整数,编写程序,将其中所有偶数存储在数组b中,将所有奇数存储在数组a中。 #include main() int i=0,j=0,m=0; int a20=1,33,3,4,6,7,21,9,10,11,12,13,14,15,16,18,19,20,23,45; int b20=0,c20=0; printf(数组A中数据是:n); for(i=0;i20;i+) printf(%d ,ai); printf(n); for(i=0;i20;i+) if(ai%2=0) bj=a

24、i;j+; else cm=ai;m+; printf(数组B中数据是:n); for(i=0;ij;i+) printf(%d ,bi); printf(n); printf(数组C中数据是:n); for(i=0;im;i+) printf(%d ,ci); printf(n); 2、 假设四名偷窃嫌疑犯中有一人是小偷,且每个人要么说真话, 要么说假话,依照下面回答统计决断谁是小偷。甲说:“乙没偷,是丁偷的”;乙说:“我没偷,是丙偷的”;丙说:“甲没偷,是乙偷的”;丁说:“我没偷” #include main() int i=0,j=0,a4=0; for(i=0;i4;i+) ai=1;

25、 if(a3+a1=1&a2+a1=1&a0+a1=1) printf(这小偷是:%cn,A+i); break; else for(j=0;i4;j+) aj=0; 3、 编写程序,输出3*4矩阵中数据为负数的元素所在的位置和元素值,矩阵数据由键盘输入; #include main() int i=0,j=0,a34=0; printf(请输入数组数:n); for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,aij); printf(输出数组A:); for(i=0;i3;i+) for(j=0;j4;j+) printf(%d ,aij); printf(n);

26、 for(i=0;i3;i+) for(j=0;j4;j+) if(aij0); printf(a%d%d=%d n,i,j,aij); 4、 编写程序,数组中已存储若干身份证号码,输入某年某月某日期,自动给那天生日的人显示贺词。日期按8位输入,如:19870109 #include #include main() char card519=1231231,1231232,1231235,10,1231232; char temp19=,today9=; int i=0; printf(请输入日期:); scanf(%s,today); for(i=0;i5;i+) strcpy(temp,c

27、ardi+6); temp8=0; if(strcmp(temp,today)=0) printf(Hello!%s: Happy birthday!n,cardi); 上机训练 1、 若有已按降序排列的数列20,18,16,14,12,10,8,6,4,2,现要求将键盘输入的一个数插入到该数列中,并仍然按降序排列。 #include main() int i=0,j=0,k=0,a11=20,18,16,15,12,10,5,4,2,-10; printf(输出原排序数组:n); for(i=0;i=k&j=j+1;i-) ai=ai-1; aj=k; printf(输出插入数字后的数组:n

28、); for(i=0;i11;i+) printf(%d ,ai); printf(n); 扩展:在本训练题中,去掉已排好序的限制条件,并且在最大元素后插入一个数。 #include main() int i=0,max=0,k=0,a11=23,45,64,-15,12,32,5,8,55,2; printf(输出原排序数组:n); for(i=0;i10;i+) printf(%d ,ai); printf(n); printf(请输入要插入的数:n); scanf(%d,&k); for(i=1;iamax) max=i; for(i=10;i=max+2;i-) ai=ai-1; am

29、ax+1=k; printf(输出插入数字后的数组:n); for(i=0;i11;i+) printf(%d ,ai); printf(n); 2、 掷100次骰子,统计各点数出现的次数。 #include #include #include main() int i=0,n=0,a7=0; srand(time(0); printf(所有数据:n); for(i=0;i100;i+) n=rand()%6+1; an=an+1; printf(%d ,n); printf(n输出骰子6个点分别出现次数:n); printf(point1 point2 point3 point4 point

30、5 point6:n); for(i=1;i=6;i+) printf(%5d ,ai); printf(n); 扩展:在原功效基础上再输出出现的点数最多的元素值。 #include #include #include main() int i=0,j=0,n=0,a7=0; srand(time(0); printf(所有数据:n); for(i=0;i100;i+) n=rand()%6+1; an=an+1; printf(%d ,n); printf(n输出骰子6个点分别出现次数:n); printf(point1 point2 point3 point4 point5 point6:

31、n); for(i=1;i=6;i+) printf(%5d ,ai); printf(n); for(i=1;iaj) j=i; printf( %d点是出现最多的,总的有%d 次!n,j,aj); 3、 不使用strcat函数实现连接两个字符串的功效。 #include main() int i=0,j=0; char a80=,b30=; printf(请输入二个字符串:n); gets(a);gets(b); while(ai!=0) i+; while(bj!=0) ai=bj;i+;j+; ai=0; printf(输出链接后的字符串:n); puts(a); 扩展:不使用strc

32、mp函数实现比较两个字符串的功效。找第1个不相等字符的代码可用“while(ai=bi&ai!=0) i+;” #include main() int i=0; char a30=,b30=; printf(请输入二个字符串:n); gets(a);gets(b); while(ai=bi&ai!=0) i+; if(aibi) printf(第一个字符串 第二个字符串n); if(ai=bi) printf(两个字符串相等n); if(aibi) printf(第一个字符串 第二个字符串n); 4、 分别计算5*5矩阵的两条对角线元素之和,要求每行每列元素值由随机函数(rand函数,参见训练

33、5.2)产生,且为1至20中的整数。 #include #include #include main() int i=0,j=0,s1=0,s2=0,a55=0; srand(time(0); for(i=0;i5;i+) for(j=0;j5;j+) aij=rand()%20+1; printf( 输出数组:n); for(i=0;i5;i+) for(j=0;j5;j+) printf(%5d,aij); printf(n); printf(nn); for(i=0;i5;i+) s1=s1+aii; s2=s2+ai4-i; printf(s1=%d ,s2=%d n,s1,s2);

34、扩展:计算两个4*5矩阵的和,两个矩阵的每行每列元素值由随机函数产生,且为120中的整数。提示:两个矩阵之和,就是两个矩阵的对应元素相加是第3矩阵对应元素的值。 #include #include #include main() int i=0,j=0,s=0,a45=0,b45=0,c45=0; srand(time(0); for(i=0;i4;i+) for(j=0;j5;j+) aij=rand()%20+1; bij=rand()%20+1; printf( 输出数组A:n); for(i=0;i4;i+) for(j=0;j5;j+) printf(%5d,aij); printf

35、(n); printf( 输出数组B:n); for(i=0;i4;i+) for(j=0;j5;j+) printf(%5d,bij); printf(n); for(i=0;i4;i+) for(j=0;j5;j+) cij=aij+bij; printf( 输出数组C:n); for(i=0;i4;i+) for(j=0;j5;j+) printf(%5d,cij); printf(n); 第6章:指针 补充试验: 1、 用指针实现从银行得到一字符串,然后逆序存回数组a中。 #include #include main() int i=0,lenth=0; char c=0,a80=,*

36、p=a,*q=NULL; puts(输入一个字符串); gets(p); puts(p); lenth=strlen(p); q=p+lenth-1; for(i=0;ilenth/2;i+) c=*(p+i); *(p+i)=*(q-i);*(q-i)=c; puts(p); 上机实训 训练6-1:已经有定义“int a11=1,2,3,4,5,6,7,8,9,10;”,要求通过指针完成在一维数组a中,且下标为j(0j10)处插入值100; #include main() int i=0,j=0,*p=a; int a11=1,2,3,4,5,6,7,8,9,10; printf(输出原数组值:); for(i=0;i=j+1;i-) ai=ai-1;aj=100; printf(输出插入100后的数组数列:n); for(i=0;i11;i+) printf(%4d,pi); printf(n); 扩展:若有两个已按升序排列的数列a和 b,数列a为1,7,9,11,13,15,17,19,数列b为“2,4,6,8,10”,现将这两个数列合并为c数列,且c数列仍按升序排列,要求通过指针完成。 #include main

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服