华北电力大学c汇总题库.doc
C+期中题库顺序结构上机题1. 输入圆的半径和圆柱的高,依次输出圆周长、圆面积、圆球表面积、圆柱体积(以空格分隔,取3.14)。 样例输入:1.5 3样例输出:9.42 7.06528.26 21.195#includeint main()float s,c,d,v,r,h;cinrh;c=3.14*2*r;s=3.14*r*r;d=4*3.14*r*r;v=s*h;coutc s d vendl;2输入一个华氏温度,要求输出摄氏温度。公式为:c=5/9*(F-32)。 样例输入:100样例输出:37.7778#includeint main()float c,f;cinf;c=5.0/9*(f-32);cout c;3输入三角形的三条边长a,b,c(要求能构成三角形),求三角形面积。 样例输入:3.2 4.4 5.6 样例输出:7.02624#include #include int main()float a,b,c,area,s;cinabc;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);coutarea;4. 输入大写字母,输出对应的小写字母。 样例输入:B 样例输出:b#include int main()char c1,c2;cinc1;c2=c1+32;coutc2;5. 输入一个正整数n(100=n=999),依次输出n的百位数字、十位数字、个位数字(以空格分隔)。 样例输入:153 样例输出:1 5 3includeint main()int n,a,b,c;cinn;a=n/100;n=n-a*100;b=n/10;n=n-b*10;c=n;couta b b-c-d-e,所以字母a后面第4个字母是e,用e代替a;字母x后面不足4个字母,则从a开始补充,x-y-z-a-b,所以字母x后面第4个字母是b,用b代替x。因此,“ahoux”应译为“elsyb”。 样例输入:ahoux 样例输出:elsyb#includeint main()char a,b,c,d,e;cinabcde;if(a119)a=a+4;elsea=a-22; if(b119)b=b+4;elseb=b-22; if(c119)c=c+4;elsec=c-22; if(d119)d=d+4;elsed=d-22; if(e119)e=e+4;elsee=e-22;coutabcde;return 0;2. 有一分段函数如下,请编写程序,输入x值,输出y值。样例输入:-2 样例输出:14.5 样例输入:1 样例输出:0.393654 样例输入:6 样例输出:0.848872#include #include int main()float x,y;cinx;if(x0)y=3*x*x-(5/x);else if(x5)y=1/(2+cos(x);elsey=sqrt(sin(x)+1);couty;3有一分段函数如下,请编写程序,输入x值,输出y值。 样例输入:0.5 样例输出:0.5 样例输入:1 样例输出:1 样例输入:15 样例输出:34#include int main()float x,y;cinx;if(x1)y=x;else if(x10)y=2*x-1;elsey=3*x-11;couty;4. 输入一个不多于5位的正整数,要求分3行输出以下信息,第1行输出它是几位数;第2行从高位到低位依次输出每一位数字(以空格分隔,下同);第3行从低位到高位依次输出每一位数字。 样例输入:32100样例输出: 5 3 2 1 0 0 0 0 1 2 3 样例输入:40样例输出: 2400 4#includeint main()int x,a,b,c,d,e;cinx;a=x/10000;b=(x-a*10000)/1000;c=(x-a*10000-b*1000)/100;d=(x-a*10000-b*1000-c*100)/10;e=x-a*10000-b*1000-c*100-d*10;if(a0)cout5na b c d ene d c b a0)cout4nb c d ene d c b0)cout3nc d ene d c0)cout2nd ene dendl;elsecout1neneendl;5. 输入三角形的三条边a、b、c,如果能构成三角形,求三角形面积和周长,如果不能构成三角形则输出Error。 样例输入:4.5 5.6 6.7 样例输出:12.4875 16.8 样例输入:12 3 样例输出:Error#include#includeint main()float a,b,c,d,l,s;cinabc;if(a+bc&a+cb&b+ca)d=(a+b+c)/2.0;l=2*d;s=sqrt(d*(d-a)*(d-b)*(d-c);couts l;elsecoutError;6. 有一分段函数如下,请编写程序,输入x值,输出y值。 样例输入:-1 样例输出:-1.84147 样例输入:6.5 样例输出:23204.8 样例输入:12 样例输出:0.048737#include#includeint main()float x,y;cinx;if(x0)y=x*x+2/x+sin(x);else if(x10)y=2*x*x*x*x*x-cos(x);elsey=1/(sqrt(3*x*x-11);couty;7输入年份year,判断是否是闰年,若不是,输出NO,否则输出YES。 样例输入:2012 样例输出:YES#includeint main()int year,a,b,c;cinyear;a=year%4,b=year%100,c=year%400;if (a=0)&(b!=0)|(c=0)coutYES;elsecoutNO;8. 判断一个数是否为“水仙花数”,如果是则输出YES,否则输出NO。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33。 样例输入:1 样例输出:NO 样例输入:153 样例输出:YES#include#includeint main()int a,b,c,d,e;cina;if (a99&a1000)b=a/100;c=(a-b*100)/10;d=a-b*100-c*10;e=b*b*b+c*c*c+d*d*d;if(a=e)coutyes;else coutno;else coutno; 9有一分段函数如下,请编写程序,输入x值,输出y值。 样例输入:-2 样例输出:7 样例输入:1 样例输出:2 样例输入:11 样例输出:0.222681#include#includeint main()float x,y;cinx;if(x10)y=sqrt(x+1)/(2*x*x);elsey=x*x*x*x*x+1;couty;10. 有一分段函数如下,请编写程序,输入x值,输出y值。样例输入:-1 样例输出:-1.4597 样例输入:-0.5 样例输出:1.5874 样例输入:1.57 样例输出:0.999999 #include#includeint main()float x,y;cinx;if(x=1)y=sin(x)*sin(x);elsey=1/(pow(x+1),2.0/3);couty;循环结构1.输入两个正整数m和n,编写程序求其最大公约数和最小公倍数。 样例输入:15 25样例输出:5 75#includeint main()int a,b,t,i;cinab;if(ab)t=a;a=b;b=t;for(i=1;i=b;i+) if(a%i=0&b%i=0) t=i; coutt a*b/t;2输出所有大于给定数n的“水仙花数”,n由键盘输入。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33。 样例输入:100 样例输出:153 370 371 407#includeint main()int n,i,g,s,b;cinn;for(i=n+1;i=999;i+) g=i%10;s=i/10%10;b=i/100;if(i=g*g*g+s*s*s+b*b*b)couti ;3一个数恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,并且6=1+2+3,因此6是“完数”。编写程序找出小于给定数n的所有“完数”,n由键盘输入。样例输入:1000 样例输出:6 28 496#includeint main()int n,i,a,b;cinn;for(b=2;bn;b+)a=0;for(i=1;ib;i+)if(b%i=0) a=a+i;if(a=b)coutb ;return 0;4一个数恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,并且6=1+2+3,因此6是“完数”。编写程序判断一个数是否为“完数”,如果是则输出YES,否则输出NO。样例输入:1 样例输出:NO 样例输入:6 样例输出:YES#include#includeint main()int m,j,a;cinm;if(m=1)coutno;elsea=0;for(j=1;jm;j+)if(m%j=0)a=a+j;if(m=a)coutyes;elsecoutno;5任何一个大于1的数如果只能被1和这个数自身整除,这个数就称为“素数”或“质数”。例如,2、3、5是“素数”。编写程序判断一个数是否为“素数”,如果是则输出YES,否则输出NO。样例输入:1 样例输出:NO 样例输入:2 样例输出:YES#include#includeint main()int n,a,i;cinn;a=0;if(n1)for(i=1;i=n;i+)if(n%i=0) a+;if(a=2) coutYESendl;else coutNOendl;if(n=1) coutNOendl;6任何一个大于1的数如果只能被1和这个数自身整除,这个数就称为“素数”或“质数”。例如,2、3、5是“素数”。输入m和n(m=n),编写程序计算m,n范围内“素数”之和。样例输入:1 10样例输出:17#includeint main()int m,n,a,b,i,s;cinmn;s=0;for(a=m;a=n;a+)b=0;for(i=1;i=a;i+)if(a%i=0)b+;if(b=2)s=s+a;coutsendl;return 0;7有一分数序列, 计算该序列的前n项和,n由键盘输入。样例输入:20 样例输出:32.6603#include#includeint main()int n,i,a,b,d;float s,c;cinn;s=0;a=1;b=2;c=b/a;for(i=1;i=n;i+)s=s+c;d=a,a=b,b=b+d,c=b*1.0/a;couts;8求数列计算该序列的前n项和,n由键盘输入。样例输入:2 样例输出:0.5#include#includeint main()float i,n,sum,t;cinn;sum=0;for(i=1;i=n;i+)t=pow(-1),(i+1);sum=sum+(1/i)*t;coutsumendl;9编写程序找出一个正整数n的各位数字中最大的数字,n由键盘输入。样例输入:1234 样例输出:4#includeint main()int n,m,a;cinn;a=0;while(n0)m=n%10;if(ma)a=m;n=n/10;coutaendl;10. 编写程序求m到n之间(包括m和n,m=n)素数的个数及其平均值,如果没有素数则输出NO,m和n由键盘输入。样例输入:1 10样例输出:4 4.25 样例输入:8 10样例输出:NO#includeint main()int m,n,a,b,j=0,i; float s,e;cinmn;s=0;for(a=m;a=n;a+)b=0;for(i=1;i0)coutj e;elsecoutNO;11. 编写程序求n的阶乘,n由键盘输入,注意:。样例输入:10 样例输出:3.6288e+006#include#includeint main()float n,i,s;cinn;s=1;for(i=1;i=n;i+)s=s*i;couts;12. 编写程序求n以内(包括n)能被3或7整除的所有自然数的倒数之和。样例输入:21 样例输出:1.07857#include#includeint main() int n,i;float sum;cinn;sum=0;for(i=1;i=n;i+)if(i%3=0)sum=sum+(1.0/i);elseif(i%7=0) sum=sum+(1.0/i);coutsumendl;13. 编写程序求所有满足下列条件不大于给定数n(100=n=999)的三位数的个数:个位数字和百位数字之和等于其十位上的数字。样例输入:999 样例输出:45#include#includeint main() int i,n,a,b,c,j;cinn;j=0;for(i=100;i=n;i+)a=i%10;b=(i/10)%10;c=i/100;if(b=a+c)j+;coutjendl;14. 求数列计算该序列的前n项和,n由键盘输入。样例输入:50 样例输出:1.96079#include#includeint main() int i,n;float sum,m;cinn;sum=0;m=0;for(i=1;i=n;i+)m=m+i;sum=sum+(1.0/m);coutsumendl;15. 求数列 计算该序列的前N项和,N由键盘输入。样例输入:10 样例输出:4.03791e+006#include#includeint main() double N,i,t,sum;cinN;sum=0;t=1;for(i=1;i=N;i+)t=t*i;sum=sum+t;coutsumendl;16. 编写程序,从n个整数中找到最小的数并输出。输入分2行:第一行为n的值,第二行为n个整数。 样例输入: 5 1 5 3 2 0 样例输出:0#includeint main()int n,m,a,i;cinn;cinm;a=m;for(i=1;im;if(ma)a=m;couta;17. 编写程序求 a + aa + aaa + aaaa + aaaa(n个a)之和,其中a和n由键盘输入。样例输入:8 5样例输出:98760#include#includeint main() int m,n,i,a,sum;cinan;m=0;sum=0;for(i=1;i=n;i+)m=m*10+a;sum=sum+m;coutsumendl;18求数列计算该序列的前n项和,n由键盘输入。样例输入:2 样例输出:2.5#include#includeint main() float i,n,sum,t;cinn;sum=1;t=1;for(i=1;i=n;i+)t=t*i;sum=sum+(1.0/t);coutsum;19求数列其中分母为n以内(包括n)的素数,计算该序列之和,n由键盘输入。样例输入:10 样例输出:1.17619#include#includeint main() float sum,n,c;int i,t;cinn;sum=0;for(t=1;t=n;t+)c=0;for(i=1;i=t;i+)if(t%i=0)c+;if(c=2)sum=sum+(1.0/t);coutsumendl;20. 求数列输入正整数n和任意数x,计算该序列的前n项和。样例输入:5 0.5样例输出:1.39349#include#includeint main()int n,i;float x,sum,a;sum=1;a=-1;cinnx;for(i=1;i=n;i+)a=a*(-1)*(x/i);sum=sum+a;coutsumendl;数组上机题1编写程序,从任意n个数中找出最大数和最小数,并将它们相互交换后输出。输入分2行:第一行为n的值,第二行为n个数。 样例输入: 5 1 5 3 2 0 样例输出:1 0 3 2 5#include int main() int n,a32,i,j,t,max,min;cinn;cina0;max=a0;min=a0;j=0;t=0;for(i=1;iai;if(aimax)max=ai;j=i;if(aimin)min=ai;t=i;aj=min;at=max;for(i=0;in;i+)coutaiendl;2编写程序,将任意n个数按从大到小的顺序排序。输入分2行:第一行为n的值,第二行为n个数。 样例输入: 5 1 5 3 2 0 样例输出:5 3 2 1 0#includeint main()int a100,i,j,t,n;cinn;for(i=0;iai;for(j=0;jn-1;j+)for(i=0;in-1;i+)if(aiai+1)t=ai;ai=ai+1;ai+1=t;for(i=0;in;i+)coutai ;return 0;3编写程序,利用折半查找法从一个升序排列的数列中查找某数是否存在,如果存在则输出该数的下标,否则输出NO。输入分3行:第一行为n的值,代表数列中数的个数,第二行为n个数(升序排列),第三行为要查找的数。 样例输入: 5 0 1 2 3 5 3样例输出:3 样例输入: 5 0 1 2 3 5 4样例输出:NO#include#includeint main()int i,n,j,y=0,z,k;float a100,x;cinn;for(i=0;iai;cinx;z=n-1;for(i=0;in;i+)if(ai=x) k=1;break;if(k!=1) coutNOendl;else while(y=z)j=(y+z)/2; if(aj=x) coutjx) z=j-1; if(ajx) y=j+1;4编写程序,将一个数组中的数循环左移。输入分2行:第一行为n的值,第二行为n个数。 样例输入: 5 1 5 3 2 0 样例输出:5 3 2 0 1#include#includeint main()int i,n,a100,b100;cinn;for(i=0;iai;for(i=0;in-1;i+)bi=ai+1;bn-1=a0;for(i=0;in;i+)coutbi ;coutendl;5编写程序,从任意n个数中找出素数并输出。输入分2行:第一行为n的值,第二行为n个整数。 样例输入: 5 135 2 0 样例输出:35 2#include #include int main()int i,j,n,a200,gs,t;cinn;for(i=0;iai;gs=0;for(j=1;j=ai;j+)t=ai%j;if(t=0) gs+;if(gs=2) coutaiendl;6编写程序,将一个字符串首尾互换,并与原字符串连接后输出。输入字符串(不包含空格),输出处理后的结果。 样例输入:china样例输出:chinaanihc#includeint main()char a100;int i,n,k=0;cina;while(ak!=0)k+;for(i=0;ik;i+)ak+i=ak-i-1;a2*k=0;coutaendl;7输入n个数,找出其中的偶数并计算平均值后输出。输入分2行:第一行为n的值,第二行为n个数;输出分2行:第一行为其中的偶数,第二行为所有偶数的平均值。 样例输入: 5 1 5 3 2 0 样例输出: 2 0#includeint main()int a50,i,n,p=0,k=0;float av;cinn;for(i=0;iai;for(i=0;in;i+)if(ai%2=0) p+=ai;coutai ;k+;av=p*1.0/k;coutendlav;return 0;8编写程序求Fibonacci数列前n项和,n由键盘输入。样例输入:5样例输出:12#includeint main()int a50,i,n,s=2;a0=1;a1=1;cinn;for(i=2;in;i+)ai=ai-1+ai-2;s+=ai;couts;return 0;9编写程序,输入若干学生的成绩,计算平均分,并输出低于平均分的学生成绩。输入分2行:第一行为n的值,第二行为n个数;输出分2行:第一行为平均分,第二行为低于平均分的成绩。 样例输入: 5 60 70 80 90 100样例输出: 80 60 70#includeint main() int n,a50,i,p=0;float av;cinn;for(i=0;iai;p=p+ai;av=p*1.0/n;coutavendl;for(i=0;in;i+)if(aiav)coutai ;return 0;10. 编写程序,从任意n个数中找出素数,计算素数之和,并按从大到小顺序排序。输入分2行:第一行为n的值,第二行为n个整数;输出分2行:第一行为素数之和,第二行为素数排序结果。 样例输入: 5 135 2 0 样例输出: 10 5 3 2#include #include #include int main()int n,a200,b200,i,j,k=0,gs,sum=0,t;cinn;for(i=0;iai;gs=0; for(j=1;j=ai;j+) if(ai%j=0)gs+;if(gs=2) bk=ai;k+; for(i=0;ik;i+)sum+=bi;coutsumendl;for(i=0;i=k-2;i+)for(j=i+1;j=k-1;j+)if(bibj) t=bi;bi=bj;bj=t; for(i=0;ik;i+)coutbi ;11. 编写程序,计算两个矩阵(均为2行3列)之和。输入分2*2行:前两行为第一个矩阵,后两行为第二个矩阵。 样例输入: 1 2 3 4 5 6 3 5 9 1 7 6 样例输出: 4 7 12 5 12 12#includeint main() int i,j,a23,b23,c23;for(i=0;i2;i+)for(j=0;jaij;for(i=0;i2;i+)for(j=0;jbij;for(i=0;i2;i+)for(j=0;j3;j+)cij=aij+bij;for(i=0;i2;i+) for(j=0;j3;j+)coutcij ;couta;l=strlen(a);js=0;os=0;for(i=0;il;i+)if(ai%2=0)os+;elsejs+;coutjs a;for(i=0;ai=*;i+)bi=ai; n=i;for(j=strlen(a)-1;aj=*;j-);m=j;for( j=n;j=m;j+)if(aj!=*) bi=aj;i+; for(j=m+1;aj!=0;j+)bi=aj;i+;bi=0;cout b endl;14. 编写程序,输入n个正整数,按这些数的因子(包括这个数自身)个数从小到大排序,如果因子个数相等,则从大到小排序。例如:输入五个数1,2,3,4,5,因子个数分别为1,2,2,3,2,则排序结果为1(1),5(2),3(2),2(2),4(3),括号内为这个数的因子个数。其中2,3,5的因子个数均为2,所以从大到小排序为5,3,2。输入分2行:第一行为n的值,第二行为n个数。 样例输入:91 2 3 4 5 6 7 8 9样例输出:1 7 5 3 2 9 4 8 6#includeint main()int n,num100,a100,i,j,count,mincount,p,temp,k;cinn;for(i=0;inumi;for(i=0;in;i+)count=0;for(j=1;j=numi;j+)if(numi%j=0)count+;ai=count;for(j=0;jn;j+)p=j;mincount=aj;for(k=j+1;kn;k+)if(akmincount)mi
收藏