《2022年编程练习 .pdf》由会员分享,可在线阅读,更多相关《2022年编程练习 .pdf(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 编程练习1 1计算圆柱的侧面积及体积输入圆柱的底面半径r,以及高h,计算圆柱的侧面积s=2rh 和体积v=r 2h。其中=3.1415926 输入:第一行输入圆柱的底面半径r 第二行输入圆柱的高h 输出:侧面积s,体积v(保留2 位小数)要求:所有变量都定义为双精度类型。测试用例:1(显示)输入:2 8 输出:s=100.53,v=100.53 2(不显示)输入:5 10 输出:s=314.16,v=785.40 程序:main()double r,h,P=3.1415926;scanf(%lf,&r);scanf(%lf,&h);printf(s=%6.2f,v=%6.2f,2*P*r*
2、h,P*r*r*h);2判断三角形的形状输入三角型的三条边,判断三角形的形状。假设输入的三边边长均0。输入:三角型的3 条边的长度(int 型)。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 30 页 -2 输出:三角形形状等边三角形:equilateral triangle 等腰三角形:isoceles triangle 不构成三角形:non-triangle 一般三角形:triangle 测试用例:1(显示)输入:2 2 2 输出:equilateral triangle.2(显示)输入:3 2 2 输出:isoceles triangle.3(不显示)输入:1 3 1 输
3、出:non-triangle.程序:main()int a,b,c;scanf(%d%d%d,&a,&b,&c);if(a+b=c|b+c=a|a+c=b)printf(non-triangle.);else if(a=b&b=c&c=a)printf(equilateral triangle.);else if(a=b&b!=c|a=c&c!=b|b=c&c!=a)printf(isoceles triangle.);else if(a!=b&b!=c&a!=c)printf(triangle.);3打印梯形输入 n 值,输出如下例(n=4)所示的高和上底均为n 的等腰梯形:*名师资料总结-
4、精品资料欢迎下载-名师精心整理-第 2 页,共 30 页 -3*输入:梯形的高n 输出:高和上底均为n 的等腰梯形测试用例:1(显示)输入:3 输出:*2(不显示)输入:1 输出:*程序:main()int i,j,n,k;scanf(%d,&n);for(i=1,k=2*n-1;i=n;i+,k+)for(j=1;j=k;j+)if(j=n-i)printf();else printf(*);printf(n);4打印 Z 形图形输入 n 值,输出如下例(n=4)所示的Z 形图形:*名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 30 页 -4 输入:图形的高n 输出:高为 n
5、 的 Z 形图形测试用例:1(显示)输入:3 输出:*2(不显示)输入:1 输出:*程序:main()int i,j,n;scanf(%d,&n);for(i=1;i=n;i+)if(i=1|i=n)for(j=1;jn;j+)printf(*);printf(*n);else for(j=1;j=n+1-i;j+)if(j=n+1-i)printf(*n);else printf();编程练习2 1.打印 N 形图形编程,输入n 值,输出下例(n=5)所示的图形:*输入:图形的高n 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 30 页 -5 输出:高为 n 的 N 形图形测
6、试用例:1(显示)输入:4 输出:*2(不显示)输入:1 输出:*程序:main()int i,j,n;scanf(%d,&n);for(i=1;i=n;i+)for(j=1;j=n;j+)if(j=1|j=i)printf(*);else if(j=n)printf(*n);else printf();2.打印 X 形图形输入 n 值,输出下例(n=3)所示的图形:*输入:图形的高n 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 30 页 -6 输出:高为 n 的 X 形图形测试用例:1(显示)输入:4 输出:*2(不显示)输入:1 输出:*程序:main()int i,j,
7、n;scanf(%d,&n);for(i=1;i=2*n-1;i+)for(j=1;j=2*n-1;j+)if(j=2*n-i+1&in)break;if(j=i|j=2*n-i)printf(*);else printf();printf(n);3.整数的反序数输入四位正整数,若它的 K(1K20)倍恰好是其反序数(例如:1234 的反序数是4321),输出所有满足条件的K 和反序数,若不存在,则输出:No output。输入:四位正整数输出:K 和反序数名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 30 页 -7 测试用例:1(显示)输入:1089 输出:9 9801 2.
8、(不显示)输入:2008 输出:No output 3.(不显示)输入:2178 输出:4 8712 程序:main()int i=0,m,n,k;scanf(%d,&n);for(k=2;k20;k+)m=n*k;if(m/1000=n%10&m/100%10=n%100/10&m%100/10=n/100%10&m%10=n/1000)printf(%d%dn,k,m);i+;if(i=0)printf(No output);4.黑色星期五在西方,星期五和数字13 都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的13 日又恰逢星期五就叫“黑色星期五”。输入某年年号
9、和该年的元旦是星期几(1-7),输出该年所有的“黑色星期五”的日期(年/月/日)输入:4 位年号和该年元旦是星期几输出:所有的“黑色星期五”的日期(年/月/日)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 30 页 -8 测试用例:1(显示)输入:2006 7 输出:2006/1/13 2006/10/13 2(不显示)输入:1937 5 输出:1937/8/13 程序:main()int y,w,m,d;scanf(%d%d,&y,&w);for(m=1;m=12;m+)if(m=1)d=12;if(m=2|m=4|m=6|m=8|m=9|m=11)d=31;if(m=5|m
10、=7|m=10|m=12)d=30;if(m=3)if(y%4=0&y%100!=0|y%400=0)d=29;else d=28;w=(w+d)%7;if(w=5)printf(%d/%d/13n,y,m);编程练习3 1.打印菱形图形输入 n,输出如下例(n=3)所示的边长为n 的菱形:*输入:边长 n 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 30 页 -9 输出:边长为 n 的菱形测试用例:1(显示)输入:4 输出:*2(不显示)输入:1 输出:*程序:main()int n,i,j,k;scanf(%d,&n);for(i=1,k=n;i=2*n-1;i+)for
11、(j=1;j=k;j+)if(j=n-i&i=n|jn)printf();else printf(*);printf(n);if(in)k+;else k-;2.打印平行四边形输入图形的高n 和首字符c,输出如下例(c=A,n=5)所示的图形.ABCDE BCDEF CDEFG DEFGH EFGHI 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 30 页 -10 输入:高 n 和首字符c 输出:高为 n 和首字符为c 的平行四边形测试用例:1(显示)输入:3,a 输出:abc bcd cde 2(不显示)输入:1,b 输出:b 程序:main()int n,i,j,k;cha
12、r c,x;scanf(%d,%c,&n,&c);for(i=1,k=n;i=n;i+,k+)for(j=1,x=c;j=k;j+,x+)if(ji)printf();else printf(%c,x);printf(n);3.求亲密数若正整数的全部约数(包括,不包括本身)之和等于;且整数的全部约数(包括,不包括本身)之和等于,则A、B 为亲密数。编程,输入正整数,输出亲密数A,B(A=B),若不存在亲密数,则输出No output。输入:正整数 A 输出:形如 A-B 的亲密数对测试用例:名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 30 页 -11 1(显示)输入:118
13、4 输出:1184-1210 2(不显示)输入:220 输出:220-284 程序:main()int i,n,s1=0,s2=0;scanf(%d,&n);for(i=1;in;i+)if(n%i=0)s1+=i;for(i=1;is1;i+)if(s1%i=0)s2+=i;if(s2=n)printf(%d-%d,n,s1);else printf(No output);4.求和输入整数m 和正整数n,按下列公式计算s:s=m-(m+1)+m+2-(m+3)+(-1)n(m+n)。输入:m 和 n 输出:s 测试用例:1(显示)输入:1 90 输出:s=46 2(不显示)输入:(不详)输出
14、:(不详)程序:main()名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 30 页 -12 int m,i,k=1;unsigned n;long s=0;scanf(%d%u,&m,&n);for(i=0;i=n;i+)s+=k*(m+i);k=-k;printf(s=%ld,s);编程练习4 1.打印空心等腰梯形输入 n 值,输出如下例(n=4)所示的高和上底均为n 的等腰梯形:*输入:高 n 输出:高和上底均为n 的等腰梯形测试用例:1(显示)输入:3 输出:*2(不显示)输入:1 输出:*程序:main()int n,i,j,k;scanf(%d,&n);for(i=
15、1,k=2*n-1;i=n;i+,k+)for(j=1;jn-i)printf(*);else printf();名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 30 页 -13 else if(j=n-i+1|j=k)printf(*);else printf();printf(n);2.反序输出整数输入一个整数N,要求以相反的顺序输出该数,例如,N=-1234,输出-4321。输入:整数 N 输出:N 的反序数测试用例:1(显示)输入:4567 输出:7654 2.(不显示)输入:-6532 输出:-2356 程序:main()int n,m;scanf(%d,&n);m=
16、n/1000+n/100%10*10+n/10%10*100+n%10*1000;printf(%d,m);3.马戏团观众人数一个马戏团表演,n 个座位全满,全部门票收入是120 元,现在知道,男人每人5 元,女人每人 2 元,小孩每人1 角。编程,输入总人数n,输出满足要求的男人、女人和小孩人数的全部方案。,若 n 人无法满足条件,则输出No output。输入:人数 n 名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 30 页 -14 输出:男人、女人和小孩人数测试用例:1(显示)输入:60 输出:0,60,0 19,11,30 2.(不显示)输入:21 输出:No out
17、put 程序:main()int n,b,g,c,k=0;scanf(%d,&n);for(b=0;b=n;b+)for(g=0;g=n;g+)for(c=0;c=n;c+)if(50*b+20*g+1*c=1200&b+g+c=n)printf(%d,%d,%dn,b,g,c);k+;if(k=0)printf(No output);4.求最大、次大、最小和次小值输入 n 和 n 个整数及其序号(形如:整数,序号,如:15,1 45,2。),依次输出n 个整数的最大值、次大值、最小值、次小值及其原始序号。输入:n 和 n 个整数及其序号输出:n 个整数的最大值、次大值、最小值、次小值及其原始
18、序号测试用例:1(显示)输入:5 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 30 页 -15 15,1 11,2 0,3 7,4 1,5 输出:15,1 11,2 0,3 1,5 2(不显示)输入:5 10,1 11,2 20,3-7,4 91,5 输出:91,5 20,3-7,4 10,1 程序:main()int n,a80,b80,i,j;scanf(%d,&n);for(i=0;in;i+)scanf(%d,%d,&ai,&bi);for(i=1;in;i+)for(j=0;jn-i;j+)if(aj=0;i-)ai=n%2;n/=2;for(i=0;i=15;i
19、+)printf(%d,ai);编程练习5 1.打印空心菱形输入图形的高n 和顶行字符c。输出如下例(c=A,n=5)所示的图形。A B B C C D D E E D D C C B B A输入:高 n 和顶行字符c 输出:空心菱形测试用例:1(显示)输入:4,b 输出:b c c d d e e d d 名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 30 页 -17 c c b 2(不显示)输入:1,a 输出:a 程序:main()int n,c,i,j,k;scanf(%d,%c,&n,&c);for(i=1,k=n;i=2*n-1;i+)for(j=1;j=k;j+)
20、if(in)if(j=i-n+1|j=k)printf(%c,c);else printf();printf(n);if(in)c+;k+;else-c;-k;2.求各位数字之和等于5 且能被 5 整除的整数输入正整数M 和 N(M,N均小于 10000),输出 M 和 N 之间所有满足下列条件的所有整数:整数的各位数字之和等于5 且能被 5 整除。若没有满足条件的整数,则输出:No output。输入:整数区间m,n 输出:各位数字之和等于5 且能被 5 整除的所有整数测试用例:1(显示)输入:123 234 输出:140 230 2(不显示)输入:567 651 名师资料总结-精品资料欢迎
21、下载-名师精心整理-第 17 页,共 30 页 -18 输出:No output 程序:main()int m,n,i,j,t,s,k=0,a80;scanf(%d%d,&m,&n);for(i=m;i0)s+=a-j;if(s=5&i%5=0)printf(%dn,i);k+;if(k=0)printf(No output);3.求各位数字组成的最大数任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入1593,则输出为 9531。输入:自然数 n 输出:各位数字组成的最大数测试用例:1(显示)输入:40120 输出:42100 2(不显示)输入:749347 输出:97744
22、3 程序:main()int i,j,t=0,a80;long n;scanf(%ld,&n);名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 30 页 -19 while(n)at+=n%10;n/=10;for(i=1;it;i+)for(j=0;jt-i;j+)if(ajaj+1)aj=aj+1=aj=aj+1;for(i=0;it;i+)printf(%d,ai);4.字符串排序输入正整数n 和 n 个字符串,请将它们按从小到大的顺序排列后输出。输入:正整数 n 和 n 个字符串输出:按从小到大的顺序输出n 个字符串测试用例:1(显示)输入:4 china beijin
23、g nanjing shanghai 输出:beijing china nanjing shanghai 2(不显示)输入:5 C123 B234 T345 N456 S567 输出:B234 C123 N456 S567 T345 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 30 页 -20 程序:#include string.h main()int n,i,j;char a8080,b80;scanf(%d,&n);for(i=0;in;i+)scanf(%s,ai);for(j=1;j=n-1;j+)for(i=0;i0)strcpy(b,ai);strcpy(ai
24、,ai+1);strcpy(ai+1,b);for(i=0;in;i+)puts(ai);5.学生成绩排序按学生的序号输入n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩,要求成绩相同的学生具有相同的名次。输入:学生人数和n 名学生的成绩输出:按 分数由高到低的顺序输出学生的名次、序号和成绩测试用例:1(显示)输入:5 22 42 92 82 92 输出:1:3,92 1:5,92 2:4,82 3:2,42 4:1,22 2(不显示)输入:5 29 42 92 42 29 输出:1:3,92 2:2,42 2:4,42 名师资料总结-精品资料欢迎下载-名师精心整理-第 20
25、 页,共 30 页 -21 3:1,29 3:5,29 程序:main()int n,i,j,x,a802;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai1);ai0=i+1;for(i=1;in;i+)for(j=0;jn-i;j+)if(aj1aj+11)aj1=aj+11=aj1=aj+11;aj0=aj+10=aj0=aj+10;for(i=0,x=1;in;i+)printf(%d:%d,%dn,x,ai0,ai1);if(ai+11!=ai1)x+;编程练习6 1.打印数字菱形输入 n 值,输出如下例(n=4)所示的数字菱形。4 434 43234
26、4321234 43234 434 4 输入:n输出:数字菱形测试用例:1(显示)名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 30 页 -22 输入:3 输出:3 323 32123 323 3 2(不显示)输入:1 输出:1 程序:main()int n,i,j,k,t;scanf(%d,&n);for(i=1,k=n;i=2*n-1;i+,i=n?k+:k-)t=n;for(j=1;j=k;j+)if(i=n&jn&j=n?t+:t-;printf(n);2.求等于其各位数字的阶乘之和的正整数求这样一个n 位数(0),它等于其每位数字的阶乘之和。输入位数n,输出所有满足
27、条件的 n 位数。例如,145=1!+4!+5!若不存在这样的n 位数,则输出:No output。输入:n输出:满足条件的n 位数测试用例:1(显示)输入:3 名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 30 页 -23 输出:145 2(不显示)输入:5 输出:40585 程序:long j(int m)if(m=0)return 1;else return m*j(m-1);long f(int n)if(n=0)return 1;else return 10*f(n-1);main()int n,i,k=0,a80;long x,y,t,s;scanf(%d,&n)
28、;for(x=f(n)/10;x=0;i-)ai=t%10;t/=10;for(i=0;in;i+)s+=j(ai);if(s=x)printf(%ldn,x);k+;if(k=0)printf(No output);3.求满足条件的等差数列前4 项有一正整数等差数列,其前四项之和是m,前四项之积是n,编程,输入m 和 n,输出此数列的前四项,若不存在这样的等差数列,则输出No output。输入:m,n输出:满足条件数列的前四项测试用例:1(显示)输入:26 880 输出:2,5,8,11 名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 30 页 -24 2(不显示)输入:2
29、3 567 输出:No output 程序:main()int m,n,a,d,i=0;scanf(%d%d,&m,&n);for(a=1;am;a+)for(d=0;dm;d+)if(4*a+6*d=m&a*a*a*a+6*a*a*a*d+11*a*a*d*d+6*a*d*d*d=n)printf(%d,%d,%d,%dn,a,a+d,a+2*d,a+3*d);i+;if(i=0)printf(No output);4.求整数平方的回文数输入正整数m 和 n,输出 m,闭区间中满足下列条件的正整数及其平方:正整数的平方具有对称性质(也称为回文数),如:11 的平方是121。若该区间不存在这样
30、的正整数,则输出:No output。输入:m,n输出:满足条件的正整数及其平方测试用例:1(显示)输入:10 100 输出:11,121 22,484 26,676 2(不显示)输入:100 220 输出:101,10201 名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 30 页 -25 111,12321 121,14641 202,40804 212,44944 程序:main()int m,n,i,j,w,k=0,a80;long x,p,t;scanf(%d%d,&m,&n);for(x=m;x=0;j-)aj=t%10;t/=10;i=0;while(iw&ai+
31、=aw-i);if(i=w)printf(%ld,%ldn,x,x*x);k+;if(k=0)printf(No output);5.在指定位置插入字符串输入两个字符串s1、s2 和 s1 中任意字符k,在 s1 中的指定字符k 的位置处插入字符串s2并输出。输入:两个字符串s1、s2 和 s1 中任意字符k 输出:插入后的字符串s1 测试用例:1(显示)输入:beijing 123 J 输出:bei123jing 2(不显示)输入:be*ng 123*名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 30 页 -26 输出:be123*ng 程序:#include stdio.
32、h main()char a80,b80,c;int i=0,j=0;gets(a);gets(b);scanf(%c,&c);while(ai!=c)printf(%c,ai+);while(bj)printf(%c,bj+);puts(&ai);编程练习7 1.打印空心六边形输入 n 值,输出下例(n=4)所示的边长为n 的正六边形:*输入:边长 n 输出:边长为 n 的六边形测试用例:1(显示)输入:3 输出:*2(不显示)名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 30 页 -27 输入:1 输出:*程序:main()int n,i,j,k,l,m;scanf(%d
33、,&n);for(i=1,k=2*n-1;i=2*n-1;i+)for(j=1;j=k;j+)if(i=1|i=2*n-1)if(jn)printf();else printf(*);else if(j=n-i+1&in|j=k)printf(*);else printf();if(in)k+;else k-;printf(n);2.打印阿姆斯特朗数如果一个n 位正整数等于其各位数字的n 次方之和,则称该数为阿姆斯特朗数。如407=43+03+73就是一个阿姆斯特朗数。编程,输入正整数的位数n(n10),输出 n 位正整数中的所有阿姆斯特朗数,若不存在阿姆斯特朗数,则输出:No output。
34、输入:正整数的位数n 输出:所有阿姆斯特朗数测试用例:1(显示)输入:3 输出:153/370/371/407/2(不显示)输入:5 输出:54748/92727/93084/程序:名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 30 页 -28 long f(int x,int y)if(y=0)return 1;else return x*f(x,y-1);main()int n,i,k=0,e10;long a,b,x,t,s;scanf(%d,&n);a=f(10,n-1);b=f(10,n);for(x=a;xb;x+)t=x;s=0;for(i=0;in;i+)ei
35、=t%10;t/=10;s+=f(ei,n);if(x=s)printf(%ld/,x);k+;if(k=0)printf(No output);3.删除字符串中指定字符输入两个字符串s1 和 s2,在 s1 中删除任何s2 中有的字符。例如,s1:“abc123ad”,s2:“a1”,则输出“bc23d”。输入:两个字符串s1 和 s2 输出:删除后的字符串s1 测试用例:1(显示)输入:abc123ad a1 输出:bc23d 2(不显示)输入:abc1 23ad b1 输出:ac 23ad 程序:#include stdio.h main()char a80,b80;int i=0,j;
36、名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 30 页 -29 gets(a);gets(b);while(ai)j=0;while(bj)if(ai=bj)break;j+;if(bj=0)printf(%c,ai);i+;4.单词有多少?用空格或换行分开的字符串称为单词。输入多行字符串,直到遇到了单词stop 时才停止。最后输出单词的数量。输入:多个字符串输出:单词的数量测试用例:1(显示)输入:china abc 123 bstop stop 输出:5 2(不显示)输入:kkk abc 123 r 567 123 bstop Stop 输出:8 程序:#include
37、string.h main()char c80;int k=0;x:gets(a);k+;if(strcmp(c,stop)=0)goto y;else goto x;y:printf(%d,k);5.展开缩写字符串名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 30 页 -30 输入两个字符串s1、s2,将 s1 复制到 s2 并输出 s1 和 s2。复制时,若字符串s1 中存在缩写形式(如:a z)应转换为字符串s2 中的完整形式(abcdxyz)。“-”号之前的字符必须小于“-”号之后的字符才是合法的缩写形式。例如,s1=abc-fg,则 s2=abcdefg,如果 s1
38、=abc-af,则s2=abc-af。应能够处理任意可显示的ASCII字符。输入:多个字符串输出:单词的数量测试用例:1(显示)输入:asd-fge-ak1-5sj Abc 输出:asdefge-ak12345sj 2(不显示)输入:china-d*10-3 A 输出:chinabcd*10123 程序:#include stdio.h main()int i=0;char a80,b80,c,d;gets(a);gets(b);while(ai)if(ai+1=-)c=ai;d=ai+2;if(cd)while(c!=d)printf(%c,c+);i+=2;printf(%c,ai+);【BIT】20070908 崔轶名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 30 页 -