C++复习程序题(37页).doc
-题目:1、输入3个数a,b,c,输出其中的最大数。2、 x x<1 y= 2x-1 1<=x<10 3x-11 x>=103、(1) 给出一个百分制成绩,要求输出等级。成绩分为5个等级,分别为A(90-100),B(80-89),C(70-79),D(60-69),E(0-59)(2) 输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计各等级成绩的个数。成绩分为5个等级,分别为A(90-100),B(80-89),C(70-79),D(60-69),E(0-59)(3)输入一些学生的成绩,统计其中最高分和平均值,输入遇负数结束。(例题)4、 求出10至1000之内能同时被2、3、7整除的数,并输出。5、(1) 1+2+100 (2) 1+3+5+99 (3) 2+4+6+100 (4) , n从键盘输入 (5) 6、分数序列之和 。 (1)求出分数序列2/1,3/2,5/3,8/5,13/8,的前二十项之和。(2)求出分数序列2/4,4/7,6/10,8/13, 10/16,12/19,,的前二十项之和。 7、(1)求n! (2)1!+2!+n!,n从键盘输入8、求s=a+aa+aa, 共n个,其中n和a从键盘输入。9、(1) 输入一个字符,如果是大写字母,将其转换为小写(小写字母转换为大写同理,自己写) (2)、输入一行字符,分别统计其中英文字母,数字,空格,其他字符的个数。 10、(1)求水仙花数 (2) 给出一个不多于5位的正整数,求出它是几位数及各位上的数字11、打印出下列图形(用循环完成) * * *11 21 2 31 2 3 4 12、将一个一维数组逆序输出 13、求Fibonacci数列。 14、 冒泡排序法。 解法:1、输入3个数a,b,c,输出其中的最大数。#include <iostream>using namespace std;int main ( ) int a,b,c,max; cin>>a>>b>>c; if (a>b) max=a; else max=b; if (c>max) max=c; else max=max; cout<<max; return 0;2、 x x<1 y= 2x-1 1<=x<10 3x-11 x>=10#include <iostream>using namespace std;int main ( ) int x,y; cin>>x; if (x<1) y=x; else if (x<10) y=2*x-1; else y=3*x-11; cout<<"x="<<x<<", y="<<y; return 0;3、(1) 给出一个百分制成绩,要求输出等级。成绩分为5个等级,分别为A(90-100),B(80-89),C(70-79),D(60-69),E(0-59) #include <iostream>using namespace std;int main ( ) int score; char grade; cin>>score; if(score>=90) grade=A; else if(score>=80) grade=B; else if (score>=70) grade=C; else if (score>=60) grade=D; else grade=E; cout<<grade; return 0;(2) 输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计各等级成绩的个数。成绩分为5个等级,分别为A(90-100),B(80-89),C(70-79),D(60-69),E(0-59)#include <iostream>using namespace std;int main ( ) int n,i,score,sum=0,ave,a=0,b=0,c=0,d=0,e=0; cin>>n; for(i=1;i<=n;i+) cin>>score; if(score>=90) a+; else if(score>=80) b+; else if (score>=70) c+; else if (score>=60) d+; else e+; sum=sum+score; ave=sum/n; cout<<ave<<a<<b<<c<<d<<e; return 0;(3) 输入一些学生的成绩,统计其中最高分和平均值,输入遇负数结束。#include <iostream>using namespace std;int main ( ) int score,max=0,sum=0,ave,i=0; cin>>score; while(score>=0) i+; sum=sum+score; if(score>max) max=score; cin>>score; ave=sum/i; cout<<ave<<”,”<<max; return 0;4、 求出10至1000之内能同时被2、3、7整除的数,并输出。#include <iostream>using namespace std;int main ( ) int n; for(n=10;n<=1000;n+) if(n%2=0&&n%3=0&&n%7=0) cout<<n; return 0;5、(1) 1+2+100 书上例题,自己写#include <iostream>using namespace std;int main ( ) int i,sum=0; for(i=1;i<=100;i+) sum=sum+i; cout<<sum; return 0; (2) 1+3+5+99 同上,自己写#include <iostream>using namespace std;int main ( ) int i,sum=0; for(i=1;i<=100;i=i+2) sum=sum+i; cout<<sum; return 0; (3) 2+4+6+100 同上,自己写#include <iostream>using namespace std;int main ( ) int i,sum=0; for(i=2;i<=100;i=i+2) sum=sum+i; cout<<sum; return 0; (4) , n从键盘输入#include<cmath>#include <iostream>using namespace std;int main ( ) float i,sum=0,n;cin>>n; for(i=1;i<=n;i+) sum=sum+sqrt(i); cout<<sum; return 0; (5) #include<cmath>#include <iostream>using namespace std;int main ( ) float i,sum1=0,sum=0,n;cin>>n; for(i=1;i<=n;i+) sum1=sum1+sqrt(i); sum=sum+sum1; cout<<sum; return 0; 6、分数序列之和 。 (1)求出分数序列2/1,3/2,5/3,8/5,13/8,的前二十项之和。#include <iostream>using namespace std;int main() int i,t,n=20; double a=2,b=1,s=0; for (i=1;i<=n;i+) s=s+a/b; t=a; a=a+b; b=t; cout<<"sum="<<s<<endl; return 0; (2)求出分数序列2/4,4/7,6/10,8/13, 10/16,12/19,,的前二十项之和。 #include <iostream>using namespace std;int main() int i; double a,b,s=0; for (i=1;i<=20;i+) a =2*i ; b=3*i+1; s=s+a/b; cout<<"sum="<<s<<endl; return 0; 7、(1)求n! #include <iostream>using namespace std;int main ( ) int n,i;float t=1;cin>>n; for (i=1;i<=n;i+) t=t*i; cout<< t <<endl; return 0; (2)1!+2!+n!#include <iostream>using namespace std;int main ()float s=0,t=1; int n; for (n=1;n<=20;n+) t=t*n; s=s+t; cout<<"1!+2!+.+20!="<<s<<endl; return 0; 8、求s=a+aa+aa, 共n个,其中n和a从键盘输入。#include <iostream>using namespace std;int main ( ) int n,a,i,sum=0,t=0;cin>>n>>a; for (i=1;i<=n;i+) t=t+a;sum=sum+t; a=a*10; cout<<sum <<endl; return 0; 9、(1) 输入一个字符,如果是大写字母,将其转换为小写(小写字母转换为大写同理,自己写) #include <iostream>using namespace std;int main ( ) char ch; ch=getchar( ); if( ch>='A' && ch<='Z') ch=ch+32; putchar(ch); return 0;(2)、输入一行字符,分别统计其中英文字母,数字,空格,其他字符的个数。#include <iostream>using namespace std;int main ( )char c; int letters=0,space=0,digit=0,other=0; while(c=getchar()!='n') if (c>='a' && c<='z'|c>='A' && c<='Z') letters+; else if (c=' ') space+; else if (c>='0' && c<='9') digit+; else other+; cout<<"letter:"<<letters<<",space:"<<space<<",digit:"<<digit<<",other:"<<other; return 0; 10、(1)求水仙花数 #include <iostream>using namespace std;int main ()int i,j,k,n; for (n=100;n<1000;n+) i=n/100; j=n/10-i*10; k=n%10; if (n = i*i*i + j*j*j + k*k*k) cout<<n<<" " cout<<endl;return 0; (2) 给出一个不多于5位的正整数,求出它是几位数及各位上的数字#include <iostream>using namespace std;int main ( ) long int n;int wei,wan,qian,bai,shi,ge; cin>>n; if(n>99999) cout<<”error!”; else if(n>9999) wei=5; else if(n>999) wei=4; else if(n>99) wei=3; else if(n>9) wei=2; else wei=1; wan=n/10000; qian=n%10000/1000; bai=n%1000/100; shi=n%100/10; ge=n%10; if(wei=5) cout<<wei<<”,”<<wan<<”,”<<qian<<”,”<<bai<<”,”<<shi<<”,”<<ge<<endl; if(wei=4) cout<<wei <<”,”<<qian<<”,”<<bai<<”,”<<shi<<”,”<<ge<<endl;if(wei=3) cout<<wei <<”,”<<bai<<”,”<<shi<<”,”<<ge<<endl;if(wei=2) cout<<wei<<”,”<<shi<<”,”<<ge<<endl;if(wei=1) cout<<wei<<”,”<<ge<<endl; return 0; 11、打印出下列图形(用循环完成) * * *#include <iostream>using namespace std;int main ( ) int i,j,k; for(i=1;i<=3;i+) for(j=3;j>i;j-) cout<< ;for(k=1;k<=2*i-1;k+)cout<<*;cout<<endl; return 0; 11 21 2 31 2 3 4#include <iostream>using namespace std;int main ( ) int i,j; for(i=1;i<=4;i+) for(j=1;j<=i;j+) cout<<j;cout<<endl; return 0; 12、将一个一维数组逆序输出 #include <iostream>using namespace std;int main() int i,a10; for(i=0;i<10;i+)ai=i+1; for(i=9;i>=0;i-) cout<<ai; return 0; 13、求Fibonacci数列。 #include <iostream>using namespace std;int main() int i; int f20=1,1; for(i=2;i<20;i+) fi=fi-2+fi-1; for(i=0;i<20;i+) if(i%5=0) cout<<endl; cout<<fi; return 0;14、 冒泡排序法。 #include <iostream>using namespace std;int main() int a11; int i,j,t; cout<<"Input 10 numbers:" for(i=1;i<11;i+) cin>>ai; for(j=1;j<=9;j+) for(i=1;i<=10-j;i+) if(ai>ai+1) t=ai; ai=ai+1; ai+1=t; cout<<"The sorted numbers:“<<endl; for(i=1;i<11;i+) cout<<ai<<“ ”; return 0;第 38 页-