C++上机上.docx
《C++上机上.docx》由会员分享,可在线阅读,更多相关《C++上机上.docx(31页珍藏版)》请在冰点文库上搜索。
C++上机上
C++程序设计语言上机试题
一、熟悉上机编译环境
1、输出一行字符:
“Iam20yearsold.”。
解:
#include//包含头文件iostream
usingnamespacestd;//使用命名空间std
intmain()
{cout<<″ThisisaC++program.″;
return0;
}
2、求a和b两个数之和。
#include//预处理命令
intmain()//主函数首部
{//函数体开始
inta,b,sum;//定义变量
cin>>a>>b;//输入语句
sum=a+b;//赋值语句
cout<<″a+b=″<return0;//如程序正常结束,向操作系统返回一个零值}3、编写一个程序输出以下信息:*********************Happynewyear!*********************解:#includemain(){cout<<"********************"<cout<<"Happynewyear!"<cout<<"**********************";}4、求a,b,c三个数之积。解:#include//预处理命令usingnamespacestd;//使用命名空间stdintmain()//主函数首部{//函数体开始inta,b,c,s;//定义变量cin>>a>>b>>c;//输入语句s=a*b*c;//赋值语句cout<<″a*b*c=″<return0;//如程序正常结束,向操作系统返回一个零值}5、试编写一个程序,要求输出两个数中较小者。解:#includemain(){inta,b;cin>>a>>b;if(a>b)cout<<”Theminis”<elsecout<<”Theminis”<} 二、数据、操作符和表达式6、请输出字符A、B、D、E的ASCII值。解:#includemain(){intc1='A',c2='B',c3='D',c4='E';cout<<"The'A'is%d\n"<cout<<"The'B'is%d\n"<cout<<"The'D'is%d\n"<cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
return0;//如程序正常结束,向操作系统返回一个零值
3、编写一个程序输出以下信息:
*********************
Happynewyear!
#include
main()
{cout<<"********************"<cout<<"Happynewyear!"<cout<<"**********************";}4、求a,b,c三个数之积。解:#include//预处理命令usingnamespacestd;//使用命名空间stdintmain()//主函数首部{//函数体开始inta,b,c,s;//定义变量cin>>a>>b>>c;//输入语句s=a*b*c;//赋值语句cout<<″a*b*c=″<return0;//如程序正常结束,向操作系统返回一个零值}5、试编写一个程序,要求输出两个数中较小者。解:#includemain(){inta,b;cin>>a>>b;if(a>b)cout<<”Theminis”<elsecout<<”Theminis”<} 二、数据、操作符和表达式6、请输出字符A、B、D、E的ASCII值。解:#includemain(){intc1='A',c2='B',c3='D',c4='E';cout<<"The'A'is%d\n"<cout<<"The'B'is%d\n"<cout<<"The'D'is%d\n"<cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"Happynewyear!
"<cout<<"**********************";}4、求a,b,c三个数之积。解:#include//预处理命令usingnamespacestd;//使用命名空间stdintmain()//主函数首部{//函数体开始inta,b,c,s;//定义变量cin>>a>>b>>c;//输入语句s=a*b*c;//赋值语句cout<<″a*b*c=″<return0;//如程序正常结束,向操作系统返回一个零值}5、试编写一个程序,要求输出两个数中较小者。解:#includemain(){inta,b;cin>>a>>b;if(a>b)cout<<”Theminis”<elsecout<<”Theminis”<} 二、数据、操作符和表达式6、请输出字符A、B、D、E的ASCII值。解:#includemain(){intc1='A',c2='B',c3='D',c4='E';cout<<"The'A'is%d\n"<cout<<"The'B'is%d\n"<cout<<"The'D'is%d\n"<cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"**********************";}
4、求a,b,c三个数之积。
inta,b,c,s;//定义变量
cin>>a>>b>>c;//输入语句
s=a*b*c;//赋值语句
cout<<″a*b*c=″<
5、试编写一个程序,要求输出两个数中较小者。
{inta,b;
cin>>a>>b;
if(a>b)
cout<<”Theminis”<
else
cout<<”Theminis”<} 二、数据、操作符和表达式6、请输出字符A、B、D、E的ASCII值。解:#includemain(){intc1='A',c2='B',c3='D',c4='E';cout<<"The'A'is%d\n"<cout<<"The'B'is%d\n"<cout<<"The'D'is%d\n"<cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
二、数据、操作符和表达式
6、请输出字符A、B、D、E的ASCII值。
{intc1='A',c2='B',c3='D',c4='E';
cout<<"The'A'is%d\n"<cout<<"The'B'is%d\n"<cout<<"The'D'is%d\n"<cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"The'B'is%d\n"<cout<<"The'D'is%d\n"<cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"The'D'is%d\n"<cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"The'E'is%d\n"<7、请分析本程序结果:#includemain(){inta=3,b=4,c=2;a=++b+c++;cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
7、请分析本程序结果:
{inta=3,b=4,c=2;
a=++b+c++;
cout<a=(b++)+(++c);cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
a=(b++)+(++c);
cout<a++;cout<<"a>b:"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
a++;
cout<<"a>b:
"<<(a>b)<cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"a"<<(acout<<"a==b:"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
"<<(a
cout<<"a==b:
"<<(a==b)<cout<<"a!=b:"<<(a!=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"a!
=b:
"<<(a!
=b)<cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"a>b&&c"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
"<<(a>b&&ccout<<"ac:"<<(ac);}结果为:解:7,5,39,6,4a>b:1a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"ac:
"<<(ac);}结果为:
7,5,3
9,6,4
a>b:
1
a0a==b:0a!=b:1a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
0
a==b:
a!
a>b&&c1ac:18、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。解:ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。用顺序结构即可实现,程序如下:#includemain(){charch;cin>>ch;cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
ac:
8、编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。
ASCII码的大小关系与字符的大小关系一致,且相邻字符的ASCII码编码连续。
用顺序结构即可实现,程序如下:
{charch;
cin>>ch;
cout<<(char)(ch-1)<<"ASCIIcodeis"<<(int)ch-1<cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<(char)(ch+1)<<"ASCIIcodeis"<<(int)ch+1<} 三、顺序程序设计9、输入一个非负数,计算以这个数为半径的圆周长和面积。解:#includemain(){constfloatpi=3.1415926;floatr,s,c;cin>>r;s=r*r*pi;c=2*pi*r;cout<<"s="<10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。解:#includemain(){inta,b,c,d;cin>>a;b=a/100;c=a%100/10;d=a%10;cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
三、顺序程序设计
9、输入一个非负数,计算以这个数为半径的圆周长和面积。
{constfloatpi=3.1415926;
floatr,s,c;
cin>>r;
s=r*r*pi;
c=2*pi*r;
cout<<"s="<
10、输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。
{inta,b,c,d;
cin>>a;
b=a/100;
c=a%100/10;
d=a%10;
cout<}四、分支程序设计11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。解:寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:#includemain(){floata1,a2,a3,a4,aver,sum;floatmin,max;cout<<"Enter4scores:"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
四、分支程序设计
11、从键盘输入某学生的四科成绩,求出总分和平均分,找出最高分和最低分。
寻找最高分和最低分的基本操作是比较当前分数和当前最高分及最低分的大小,需要选择结构来实现,程序如下:
{floata1,a2,a3,a4,aver,sum;
floatmin,max;
cout<<"Enter4scores:
"<cin>>a1>>a2>>a3>>a4;min=a1;max=a1;sum=a1+a2+a3+a4;aver=sum/4;if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cin>>a1>>a2>>a3>>a4;
min=a1;max=a1;
sum=a1+a2+a3+a4;aver=sum/4;
if(a2min=a2;elseif(a2>max)max=a2;if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
min=a2;
elseif(a2>max)
max=a2;
if(a3min=a3;elseif(a3>max)max=a3;if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
min=a3;
elseif(a3>max)
max=a3;
if(a4min=a4;elseif(a4>max)max=a4;cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
min=a4;
elseif(a4>max)
max=a4;
cout<<"aver="<cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"min="<}12、输入年号和月份,输出这一年的该月的天数。(一个年份,先判断是否闰年)解:需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。参考程序如下:#includemain(){intyear,month,day;cout<<"Enteryear&month:";cin>>year>>month;if((year%4==0)&&(year%100!=0)||(year%400==0)){if(month==2)day=29;elseday=28;}else{switch(month){case1:case3:case5:case7:case8:case10:case12:day=31;break;case2:day=28;break;case4:case6:case9:case11:day=30;break;}}cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
12、输入年号和月份,输出这一年的该月的天数。
(一个年份,先判断是否闰年)
需要判断输入的年份是否闰年,输入月份与该月天数的关系最好使用switch结构,if结构亦可完成。
参考程序如下:
{intyear,month,day;
cout<<"Enteryear&month:
";
cin>>year>>month;
if((year%4==0)&&(year%100!
=0)||(year%400==0))
{if(month==2)
day=29;
day=28;
else{
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
day=31;
break;
case2:
case4:
case6:
case9:
case11:
day=30;
cout<<"year="<13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。解:#includemain(){floatscore;intgrade;cout<<"pleaseinputascore:";cin>>score;grade=score/10;switch(grade){case9:cout<<"It'sAgrade.\n";break;case8:cout<<"It'sBgrade.\n";break;case7:cout<<"It'sCgrade.\n";break;case6:cout<<"It'sDgrade.\n";break;case5:case4:case3:case2:case1:cout<<"It'sEgrade.\n";break;default:cout<<"It'serror!\n";}}14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万从键盘输入当月利润i,求应发奖金总数。要求:用if和switch语句编程。解1:#includemain(){inti,m;cout<<"请输入当月利润:";cin>>i;if(i<=100000)m=i*0.1;elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;cout<<"奖金总数为:"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
13、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。
90分以上为‘A’,80——89为‘B’,70——79为‘C’,60——69为‘D’,60分以下为‘E’。
{floatscore;
intgrade;
cout<<"pleaseinputascore:
cin>>score;
grade=score/10;
switch(grade)
{case9:
cout<<"It'sAgrade.\n";break;
cout<<"It'sBgrade.\n";break;
cout<<"It'sCgrade.\n";break;
cout<<"It'sDgrade.\n";break;
cout<<"It'sEgrade.\n";break;
default:
cout<<"It'serror!
\n";}
14、企业发放的奖金根据利润提成,利润i低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元的,低于10万元的部分按10%提,高于10万元的部分可提7.5%;20万
从键盘输入当月利润i,求应发奖金总数。
要求:
用if和switch语句编程。
解1:
{inti,m;
cout<<"请输入当月利润:
cin>>i;
if(i<=100000)m=i*0.1;
elseif(i<=200000)m=100000*0.1+(i-100000)*0.075;
elseif(i<=400000)m=100000*0.1+100000*0.075+(i-200000)*0.05;
elseif(i<=600000)m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;
elseif(i<=1000000)m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;
elsem=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;
cout<<"奖金总数为:
"<}解2:#includemain(){inti,m,n;cout<<"请输入当月利润:";cin>>i;n=i/100000;switch(n){case0:m=i*0.1;break;case1:m=100000*0.1+(i-100000)*0.075;break;case2:case3:m=100000*0.1+100000*0.075+(i-200000)*0.05;break;case4:case5:m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;case6:case7:case8:case9:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;default:m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}cout<<"奖金总数为:"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
解2:
{inti,m,n;
n=i/100000;
switch(n)
{case0:
m=i*0.1;break;
m=100000*0.1+(i-100000)*0.075;break;
m=100000*0.1+100000*0.075+(i-200000)*0.05;break;
m=100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;break;
m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.015;break;
m=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;}
"<15、输入4个整数,按由小到大的顺序输出。解:#includemain(){inta,b,c,d,t;cout<<"请输入4个数:";cin>>a>>b>>c>>d;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;b=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout<<"smalltobig:"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
15、输入4个整数,按由小到大的顺序输出。
inta,b,c,d,t;
cout<<"请输入4个数:
cin>>a>>b>>c>>d;
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;b=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
cout<<"smalltobig:
"<}五、循环程序设计16、给出一个不多于5位是正整数,要求:(1)求出它是几位数?(2)分别打印出每一位的数字(3)逆序打印各位数字。解:#include#includemain(){inti,a,num=1;cin>>i;a=i;while((a=a/10)!=0)//求是几位数num++;cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
五、循环程序设计
16、给出一个不多于5位是正整数,要求:
(1)求出它是几位数?
(2)分别打印出每一位的数字(3)逆序打印各位数字。
{inti,a,num=1;
a=i;
while((a=a/10)!
=0)//求是几位数
num++;
cout<<"它是"<"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
"<a=i;intn;while(num!=0)//顺序打印每一位{n=a/pow(10,num-1);a=a%(int)pow(10,num-1);cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
intn;
while(num!
=0)//顺序打印每一位
{n=a/pow(10,num-1);
a=a%(int)pow(10,num-1);
cout<num--;}cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
num--;}
cout<a=i;intm;while(a!=0)//逆序打印每一位{m=a%10;cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
intm;
while(a!
=0)//逆序打印每一位
{m=a%10;
cout<a=a/10;}}17、输入两个正整数m,n,求其最大公约数和最小公倍数。解:#includemain(){intp,r,n,m,temp;cout<<"请输入两个整数:";cin>>n>>m;if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
a=a/10;}}
17、输入两个正整数m,n,求其最大公约数和最小公倍数。
{intp,r,n,m,temp;
cout<<"请输入两个整数:
cin>>n>>m;
if(n{temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"最大公约数是:"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
{temp=n;
n=m;
m=temp;
p=n*m;
while(m!
=0)
{r=n%m;
m=r;}
cout<<"最大公约数是:
"<cout<<"最小公倍数是:"<18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。解:#include#includemain(){charc;intletter=0,space=0,digit=0,other=0;cout<<"请输入一行字符:\n";while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letter++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"最小公倍数是:
"<
18、输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。
{charc;
intletter=0,space=0,digit=0,other=0;
cout<<"请输入一行字符:
\n";
while((c=getchar())!
='\n')
{if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letter++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
other++;
cout<<"letter="<}19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n由键盘输入。解:#includemain(){inta,n,i=1,sn=0,tn=0;cout<<"a,n=?";cin>>a>>n;while(i<=n){tn=tn+a;sn=sn+tn;a=a*10;++i;}cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
19、求sn=a+aa+aaa+……+aa…a之值,其中a是一个数字,例如:
2+22+222+2222+22222(此时n=5),n由键盘输入。
{inta,n,i=1,sn=0,tn=0;
cout<<"a,n=?
cin>>a>>n;
while(i<=n)
{tn=tn+a;
sn=sn+tn;
a=a*10;
++i;}
cout<<"a+aa+aaa+...+aaaa...="<20、求1!+2!+3!+……+20!=?。解:#includemain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}cout<<"1!+2!+3!...+20!="<21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。解:#includemain(){inti,j,n,k;cout<<"水仙花数是:"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
20、求1!
+2!
+3!
+……+20!
=?
。
{doubles=0,t=1;
for(n=1;n<=20;n++)
{t=t*n;
s=s+t;}
cout<<"1!
+2!
+3!
...+20!
="<
21、输出所有以水仙花数,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。
例如:
153=1*1*1+5*5*5+3*3*3。
{inti,j,n,k;
cout<<"水仙花数是:
"<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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
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<22、求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)解:#include#includeusingnamespacestd;intmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
22、求Fibonacci数列前40个数。
这个数列有如下特点:
第1、2个数为1、1。
从第3个数开始,每个数是其前面两个数之和。
即
F1=1(n=1)
F2=1(n=2)
Fn=Fn-1+Fn-2(n≥3)
usingnamespacestd;
{longf1,f2;
inti;
f1=f2=1;
for(i=1;i<=20;i++)
{cout<if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
if(i%2==0)cout<f1=f1+f2;f2=f2+f1;}return0;}23、用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。解:#include#include#includeusingnamespacestd;intmain(){ints=1;doublen=1,t=1,pi=0;while((fabs(t))>1e-7){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
f1=f1+f2;
f2=f2+f1;}
23、用下面公式求π的近似值。
π/4≈1-1/3+1/5-1/7+…直到最后一项的绝对值小于10-7为止。
{ints=1;
doublen=1,t=1,pi=0;
while((fabs(t))>1e-7)
{pi=pi+t;n=n+2;s=-s;t=s/n;}
pi=pi*4;
cout<<"pi="<return0;}24、用迭代法求x=sqrt(a),求平方根的迭代公式为:xn+1=1/2(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5。解:#include#includeusingnamespacestd;intmain(){floata,x0,x1;cout<<"请输入a值";cin>>a;x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
24、用迭代法求x=sqrt(a),求平方根的迭代公式为:
xn+1=1/2(xn+a/xn)
要求前后两次求出的x的差的绝对值小于10-5。
{floata,x0,x1;
cout<<"请输入a值";
x0=a/2;
x1=(x0+a/x0)/2;
do{
x0=x1;
}while(fabs(x0-x1)>=1e-5);
cout<<"Thesquarerootof"<}25、输出以下图案:*************************解:#includeintmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
25、输出以下图案:
*
***
*****
*******
inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=2*i-1;j++)
cout<<"*";
cout<}for(i=3;i>=1;i--){for(j=1;j<=2*i-1;j++)cout<<"*";cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
for(i=3;i>=1;i--)
cout<}26、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。解:#includeusingnamespacestd;intmain(){chari,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++)for(k='x';k<='z';k++)if(i!=j&&i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
26、两个乒乓球队进行比赛,各出3人。
甲队为A、B、C3人,乙队为X,Y,Z3人。
已抽签决定比赛名单。
有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程找出3对赛手的名单。
{chari,j,k;
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
for(k='x';k<='z';k++)
if(i!
=j&&i!
=k&&j!
=k)
='x'&&k!
='z')
cout<<"A->"<"<"<27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?解:#includeusingnamespacestd;intmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)cout<cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
27、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
inti,j,k;
{for(j=1;j<=4;j++)
for(k=1;k<=4;k++)
=k)cout<
cout<}28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解:#includeusingnamespacestd;intmain(){floatsn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
28、一球从100米高度自由落下,每次落地后又反跳回原高度的一半,再落下。
求它在第10次落地时,共经过多少米?
第10次反弹多高?
{floatsn=100,hn=sn/2;
for(n=2;n<=10;n++)
{sn=sn+2*hn;
hn=hn/2;
cout<<"第10次落地时共经过"<cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
cout<<"第10次反弹"<29、设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。解:设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l参考程序如下:#includemain(){inti,j,k,m,n;cout<<"Thenumbersatisfiedstatescontionis:";for(n=1002;n<1111;n++){i=n/1000;j=n/100%10;k=n/10%10;m=n%10;if((i
29、设N是一个四位数,它的9倍正好是其反序数,求N。
反序数就是将整数的数字倒过来形成的整数。
设整数N的千、百、十、个位为i、j、k、m,取值范围0-9,N的范围是1002-1111,穷举条件为:
(i*1000+j*100+k*10+m)*9=m*1000+k*100+j*10+l
{inti,j,k,m,n;
cout<<"Thenumbersatisfiedstatescontionis:
for(n=1002;n<1111;n++)
{i=n/1000;
j=n/100%10;
k=n/10%10;
m=n%10;
if((i
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2