C++循环结构要点.docx
《C++循环结构要点.docx》由会员分享,可在线阅读,更多相关《C++循环结构要点.docx(32页珍藏版)》请在冰豆网上搜索。
C++循环结构要点
1.公鸡6元一只,母鸡5元一只,小鸡1元三只,刚好花100元买100只鸡,有哪些买法?
输入格式要求:
无
输出结果格式要求:
"公鸡数="
"母鸡数="
"小鸡数="
#include
usingnamespacestd;
intmain()
{
intg,m,x;
for(g=0;g<=20;g++)
{
for(m=0;m<=33;m++)
{
x=100-g-m;
if(!
(x%3)&&x/3+m*5+g*6==100)
{
cout<<"公鸡数="< cout<<"母鸡数="< cout<<"小鸡数="< }
}
}
return0;
}
2.求多项式1!
+2!
+3!
+……+15!
的值。
输出格式要求:
cout<<"s="<
#include
usingnamespacestd;
intmain()
{
ints=0;
for(inti=1;i<=15;i++)
{
intx=1;
for(intj=1;j<=i;j++)
x=x*j;
s=s+x;
}
cout<<"s="<
return0;
}
3.用“辗转相除方法”计算两个数x,y的最大公约数。
输入格式要求:
无,直接输入
输出格式要求:
无,直接输出结果
#include
usingnamespacestd;
intmain()
{
intx,y,n;
cin>>x>>y;
n=x%y;
while(n!
=0)
{
x=y;
y=n;
n=x%y;
}
cout< return0;
}
4用while循环编程,求自然数1至100之间各奇数平方和sum。
输出结果格式为:
sum=166650
#include
usingnamespacestd;
intmain()
{
inti=1,n,sum=0;
while(i<=100)
{
n=i*i;
sum=sum+n;
i=i+2;
}
cout<<"sum="< return0;
}
5.输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
输入格式要求:
无
输出格式要求:
cout<每10个一行。
#include
#include
usingnamespacestd;
intmain()
{
intm,n,k,i=0;
for(m=100;m<=1000;m++)
{
k=0;
n=m;
do
{
k=k+n%10;
n=n/10;
}
while(n>0);
if(k%15==0)
{
cout< i++;
if(i%10==0)cout< }
}
return0;
}
6.将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。
输出结果格式:
n=225
#include
usingnamespacestd;
intmain()
{
inta,n;
n=0;
for(a=1;a<=100;)
{
n+=a;
if(n>=200)
break;
a+=2;
}
cout<<"n="<}
7.有递推公式f(n)=0.5*f(n-1)+0.7*f(n-2),已知f(0)=1,f
(1)=1,求f(20)
输入格式要求:
无
输出结果格式要求:
"f(20)="
#include
usingnamespacestd;
intmain()
{
doublef,f1,f2;
f2=1;
f1=1;
for(intn=2;n<=20;n++)
{
f=0.5*f1+0.7*f2;
f2=f1;
f1=f;
}
cout<<"f(20)="< return0;
}
8.求1至200之间的所有质数,将质数和存入变量sum中并输出。
质数(素数)的说明:
“质数是只能被1和其本身整除的数”。
输入提示要求:
无
输出结果格式要求:
质数之间以一个空格隔开
输出所有质数后换行输出:
sum=4227
#include
#include
usingnamespacestd;
intmain()
{
intN,m,sum=0;
for(m=2;m<=200;m++)
{
inti,tmp=(int)sqrt(m);
for(i=2;i<=tmp;i++)
if(m%i==0)break;
if(i>tmp)
{
cout< sum+=m;
}
}
cout< cout<<"sum="< return0;
}
9.以下程序的功能是以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。
输入格式:
无
输出格式:
每个数据以一个空格隔开,5个一行
和另起一行输出
cout<<"sum="<#include
usingnamespacestd;
intmain()
{
inti,n,sum;
sum=0;
n=0;
for(i=1;i<300;i++)
if(i%7==0||i%17==0)
if(i%2==0)
{
sum=sum+i;
n++;
cout<
if(n%5==0)cout< }
cout< cout<<"sum="< return0;
}
10从键盘上输入若干名学生的成绩,以一个负分结束输入,计算平均成绩并统计90分以上的学生人数。
输入信息格式要求:
cout<<"请输入学生成绩,以负数结束输入:
"<输出信息格式要求:
输出平均成绩和90分以上的学生人数,中间用空格分隔,输出结束后换行结束程序
#include
usingnamespacestd;
intmain()
{
intscore,n=0,t=0;
doublesum=0,average;
cout<<"请输入学生成绩,以负数结束输入:
"< cin>>score;
while(score>=0)
{
if(score>=90)
t=t+1;
sum=sum+score;
n=n+1;
cin>>score;
}
if(n>0)
average=sum/n;
cout< return0;
}
11.从键盘输入一批非零整数,输出其中的偶数、奇数的平均值,用零作为终止标记。
输入格式要求:
无
输出提示信息格式要求:
"偶数平均值:
"
"奇数平均值:
"
#include
usingnamespacestd;
intmain()
{
intx,i=0,j=0;
floats1=0,s2=0,av1,av2;
cin>>x;
while(x!
=0)
{
if(x%2==0)
{
s1=s1+x;
i++;
}
else
{
s2=s2+x;
j++;
}
cin>>x;
}
if(i!
=0)av1=s1/i;
elseav1=0;
if(j!
=0)av2=s2/j;
elseav2=0;
cout<<"偶数平均值:
"< cout<<"奇数平均值:
"< return0;
}
12.程序设计:
打印如下图案
*****
*****
*****
*****
*****
输入信息格式提示:
无
输出信息格式提示:
无
#include
usingnamespacestd;
int main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)cout<<"";
for(j=1;j<=5;j++)
cout<<"*";
cout<
}
return0;
}
13.程序设计:
打印出1000以内的同时满足如下条件的数,个位数字与十位数字之和除以10所得的余数等于百位数字
输入提示信息格式:
无
输出提示信息格式:
无
#include
#include
#include
usingnamespacestd;
int main()
{
inta,b,c,d,i,j,flag=1;
for(i=3;i<1000;i++)
{
for(j=2,flag=1;j<=sqrt(i)&&flag;j++)
if(i%j==0)flag=0;
if(flag==1)
{
a=i/100;
b=(i-a*100)/10;
c=i-a*100-b*10;
d=b+c-(c+b)/10*10;
if(d==a)
cout< }
}
return0;
}
14.打印水仙花数及个数n(水仙花数是三位数,每位数字的立方和等于这个数本身)。
输入格式要求:
无
输出结果:
153,370,371,407,n=4
#include
usingnamespacestd;
intmain()
{
inta,b,c,i,n=0;
for(i=100;i<=999;i++)
{
a=i/100;
b=(i-a*100)/10;
c=(i-a*100-b*10);
if(i==a*a*a+b*b*b+c*c*c)
{
n++;
cout<
}
}
cout<<"n="< return0;
}
15.程序设计:
计算T=1-1/2+2/3-3/4+……-29/30
输入提示信息格式说明:
无
输出提示信息格式说明:
无
输出结果:
0.323242
#include
usingnamespacestd;
intmain()
{ intf,k;
floatt1,t=1;
f=-1;
for(k=2;k<=30;k++)
{
t1=(float)(k-1)/k;
t+=t1*f;
f=-f;
}
cout< return0;
}
16用1,2,3可组成多少各位无重复的3位数,分别输出,用一个空格分隔,每行输出3个数
输入格式要求:
无
#include
usingnamespacestd;
intmain()
{
inti,j,k,n=0;
for( i=1;i<=3;i++ )
for( j=1;j<=3;j++ )
for( k=1;k<=3;k++ )
{
if( i!
=j&&i!
=k&&k!
=j )
{
cout<
n++ ;
if(n%3==0)
cout< }
}
cout< return0;
}
17.程序设计:
在[100,5000]之间打印出各位数字和为5的所有整数的个数.
输入信息格式提示:
无
输出信息格式提示:
无
#include
usingnamespacestd;
int main()
{
inta,b,c,d,k,i;
k=0;
for(i=104;i<=500;i++)
{
a=i/100;
b=(i-a*100)/10;
c=i-a*100-b*10;
if(a+b+c==5)k++;
}
for(i=1000;i<=5000;i++)
{
a=i/1000;
b=(i-a*1000)/100;
c=(i-a*1000-b*100)/10;
d=i-a*1000-b*100-c*10;
if(a+b+c+d==5) k++;
}
cout< return0;
}
18.以下程序的功能是用公式π/4=1-1/3+1/5-1/7+......求π的近似值。
要求直到最后一项的绝对值小于1e-6为止。
输出提示信息格式控制:
cout<<"pi="<#include
#include
usingnamespacestd;
intmain()
{
doublet,pi,a,b;
pi=0;
a=1;
b=1;
t=a/b;
while(fabs(t)>=1e-6)
{
pi=pi+t;
a=-a;
b=b+2;
t=a/b;
}
pi=pi*4;
cout<<"pi="< return0;
}
19.从键盘输入一个正整数,判断是否能写成2个素数之和,并输出所有的素数组合
输入格式要求:
无
输出结果要求:
每组占一行,以逗号分隔
例如,输入5,则输出:
2,3
3,2
#include
usingnamespacestd;
intmain()
{
intx,f1,f2;
cin>>x;
intn;
for(n=1;n<=x-1;n++)
{
f1=1;
inti;
for(i=2;i<=n-1;i++)
if(n%i==0)
f1=0;
f2=1;
for(i=2;i<=x-n-1;i++)
if((x-n)%i==0)
f2=0;
if(f1==1&&f2==1)
cout< }
return0;
}
20.有若干个数放入数组中,计算其中正数的平均值aver.
设:
floata[6]={39,-47,21,2,-8,15},aver;
输入格式要求:
无
输出结果为:
aver=19.25
#include
usingnamespacestd;
intmain()
{
inti=0,n=0;
floata[6]={39,-47,21,2,-8,15},aver,sum=0;
for(i=0;i<=5;i++)
{
if(a[i]>0)
{
sum=sum+a[i];
n++;
}
}
aver=sum/n;
cout<<"aver="< return0;
}
21.用迭代法解方程x+sin(x)-3=0
输入格式要求:
无
迭代次数:
200
每隔10次查看迭代误差,格式:
cout<<"迭代误差="<输出结果格式:
x=2.17976
#include
#include
usingnamespacestd;
intmain()
{
doublex=0.1;
doublexx;
for(intn=1;n<=200;n++)
{
xx=x;
x=3-sin(xx);
if(n%10==0)
cout<<"迭代误差="< }
cout<<"x="< return0;
}
22.判断一个数23437是否是素数(要求程序中设置一个参数flag,