C++循环结构 23道题(含答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出
循环01:最大数
写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。

输入39 28 5 63 18 27 0
输出63
测试:
输入153 26 963 28 75 90 156 0
输出963
#include<iostream>
using namespace std;
int main()
{
int i,max=0;
cin>>i;
while(i!=0)
{
if(i>max)
max=i;
cin>>i;
}
cout<<max<<endl;
return 0;
}
循环02:素数
输入正数n,判断n是否为素数。

若为素数则输出1,否则输出0。

(提示:素数是指只可以被1和其本身整除的正数(1除外))
输入10输出0
输入7输出1
测试:
输入9输出0
#include<iostream>
using namespace std;
int main()
{
int n,i,d;
cin>>n;
for(i=2;i<n;i++)
{d=n%i;
if(n%i==0)
break;
}
if(n==i)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
return 0;
}
循环03:数列求和
输入一个正整数n,计算前n项之和:1+1/4+1/7+1/10..+1/(3*n-2)。

输入5输出1.56978
输入4输出1.49286
#include<iostream>
using namespace std;
int main()
{
int i,n;
double s=0;
cin>>n;
for(i=1;i<=n;i++)
s+=1.0/(3*i-2);
cout<<s<<endl;
return 0;
}
循环04:西瓜卖几天
n个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?
说明:当西瓜个数为奇数时,卖一半为一半的整数,如当西瓜个数为5时,卖一半为卖2个。

输入:西瓜个数,输出:天数
输入10输出2
输入50输出4
测试
输入120输出5
#include<iostream>
using namespace std;
int main()
{
int n,d=0;
cin>>n;
while(n>0)
{
d++;
n=n/2-2;
}
cout<<d<<endl;
return 0;
}
循环05:成绩判定
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。

输入5 35 68 49 94 88
输出
Fail
Pass
Fail
Pass
Pass
测试
输入8 90 80 60 50 40 30 73 88 59
输出
Pass
Pass
Pass
Fail
Fail
Fail
Pass
Pass
Fail
#include<iostream>
using namespace std;
int main()
{
int repeat,n,i;
cin>>repeat;
for(i=0;i<repeat;i++)
{
cin>>n;
if(n<60)
cout<<"Fail"<<endl;
else
cout<<"Pass"<<endl;
}
return 0;
}
循环06:数列求和
输入1 个正整数n(n<=100),计算并输出1+1/2+1/3+……+1/n 。

输入5输出2.28333
输入4输出2.08333
#include<iostream>
using namespace std;
int main()
{
int n,i=1;
double s=0;
cin>>n;
while(i<=n)
{
s+=1.0/i;
i++;}
cout<<s<<endl;
return 0;
}
循环07:水仙花数
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

输入无输出153 370 371 407
#include<iostream>
using namespace std;
int main ()
{
int n,i,j,k;
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10%10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
cout<<n<<" ";
}
return 0;
}
循环08:数位之和
输入一个正整数,输出其各个位置上的数字之和。

输入1234输出10
输入12534输出15
测试
输入4325输出14
#include<iostream>
using namespace std;
int main()
{
int n,s=0;
cin>>n;
while(n)
{
s+=n%10;
n=n/10;
}
cout<<s<<endl;
return 0;
}
循环09:奇数和
读入一批正整数(以零为结束标志),求其中的奇数和。

输入32 33 50 34 65 67 0 输出165
输入131****0350输出80
测试
输入31 33 50 34 65 67 0 输出196
#include<iostream>
using namespace std;
int main()
{
int n,s=0;
cin>>n;
while(n>0)
{if(n%2!=0)
s=s+n;
cin>>n;
}
cout<<s<<endl;
return 0;
}
循环10:求和
从键盘输入若干正数,对其求和并输出,遇到负数则终止输入。

输入32 33 50 34 65 67 -1 输出281
输入13 15 17 30 35 -2 输出110
测试
输入31 33 50 34 65 67 -5 输出280
#include<iostream>
using namespace std;
int main()
{
int n,a=0;
cin>>n;
while(n>=0)
{a=n+a;
cin>>n;}
cout<<a<<endl;
return 0;
}
循环11:特殊数值
已知四位数3025有一个特殊性质: 它的前两位数字30和后两位数字25的和是55, 而55的平方刚好等于该数(55*55=3025). 试编一程序打印所有具有这种性质的四位数.
输入无输出2025 3025 9801
#include<iostream>
using namespace std;
int main()
{
int i,a,b;
for(i=1000;i<=9999;i++)
{
a=i/100;
b=i%100;
if((a+b)*(a+b)==i)
cout<<i<<" ";
}
return 0;
}
循环12:征税
税务部门征收所的税,规定如下:
1)收入在1000元以内(含1000),免征;
2)收入在1000~3000元以内(含3000),纳税额为收入的3%;
3)收入超过3000~5000元以内(含5000),纳税为收入的4%;
4)当收入超过5000元时,纳税为收入的6%。

请根据以上关系,输入收入m,输出应缴纳的税收tax。

输入:第一个整数n表示后续有n个收入
输出:每个收入对应的纳税额
输入4 900 2000 4000 6000
输出0 60 160 360
#include<iostream>
using namespace std;
int main()
{
double m,tax;;int i,n;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>m;
if(m<=1000)
tax=0;
else if(m<=3000)
tax=m*0.03;
else if(m<=5000)
tax=m*0.04;
else
tax=m*0.06;
cout<<tax<<" ";
}
return 0;
}
循环13:因数个数
给定一个正整数n,求它的因数个数。

如6的因数为1、2、3、6,则因数个数为4。

输入12 输出6
测试
输入30 输出8
#include<iostream>
using namespace std;
int main()
{
int n,i,count=0;
cin>>n;
for(i=1;i<=n;i++)
{
if(n%i==0)
count++;
}
cout<<count<<endl;
return 0;
}
循环14:最大公约数
键盘输入两个正整数m,n,求出他们的最大公约数。

输入20 15 输出5
测试
输入32 80 输出16
#include<iostream>
using namespace std;
int main()
{
int m,n,i;
cin>>m>>n;
for(i=m;i>=1;i--)
{
if(m%i==0&&n%i==0)
break;
}
cout<<i<<endl;
return 0;
}
循环15:斐波那契数列
判断第n个斐波那契数列能否被3整除给定斐波那契数列为:F(0)=1, F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2),编写一个程序,输入n(>=0),如果F(n)能被3整除则输出一个“yes”,否则输出一个“no”。

输入8输出yes
输入6输出no
测试
输入12输出yes
#include<iostream>
using namespace std;
int main()
{
int n,F0=1,F1=1,F,i;
cin>>n;
for(i=2;i<=n;i++)
{
F=F0+F1;
F0=F1;
F1=F;}
if(F%3==0)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}
循环16:计算奇偶数
求N(<=100)个数中奇数的平方和与偶数的立方和。

注意:输入格式为,第一个数为N,后面接着N个数。

输出的平方和与立方和以空格隔开输入3 5 8 9 输出106 512
测试
输入5 5 8 9 10 输出106 1512
#include<iostream>
using namespace std;
int main()
{
int i,N,n,a=0,b=0;
cin>>N;
for(i=1;i<=N;i++)
{
cin>>n;
if(n%2==0)
a+=n*n*n;
else
b+=n*n;
}
cout<<b<<" "<<a<<endl;
return 0;
}
循环17:数位计算
对于输入的一个数字,请计算它的各个位上的数字为偶数的和。

例如:1234,结果为6=2+4。

输入4321输出6
输入51289输出10
测试
输入54893输出12
#include<iostream>
using namespace std;
int main ()
{
int n,x,s=0;
cin>>n;
while(n)
{
x=n%10;
if(x%2==0)
s+=x;
n=n/10;
}
cout<<s<<endl;
return 0;
}
循环18:数根
对于一个正整数n,我们将它的各个位相加得到一个新的数字,如果这个数字是一位数,我们称之为n的数根,否则重复处理直到它成为一个一位数,这个一位数也算是n的数根。

例如:考虑24,2+4=6,6就是24的数根。

考虑39,3+9=12,1+2=3,3就是39的数根。

请编写程序,计算n的数根。

输入189输出9
测试
输入8943输出6
#include<iostream>
using namespace std;
int main()
{
int n,s=0,t;
cin>>n;
t=n;
while(t>=10)
{
s=0;
while(t)
{s+=t%10;
t=t/10;
}
t=s;}
cout<<s<<endl;
return 0;
}
循环19:平均成绩
假设有一个班级,n名同学选修了C++语言程序设计,要求统计该门课的平均成绩。

输入格
式:第一个数为学生人数n,后面接着n个成绩,输出平均成绩。

输入:5 80 90 88 96 70 输出84.8
#include<iostream>
using namespace std;
int main()
{
int n,i,a,s=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a;
s+=a;
}
cout<<double(s)/n<<endl;
return 0;
}
循环20:幂函数
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个正实数x和1个正整数n(n<=50),计算并输出x的n次幂。

输入3 2 5 3 4 5 3输出32 81 125
#include<iostream>
using namespace std;
int main()
{
int repeat,i,x,n,j,k;
cin>>repeat;
for(i=1;i<=repeat;i++)
{
cin>>x>>n;k=1;
for(j=1;j<=n;j++)
k=k*x;
cout<<k<<" ";}
return 0;
}
/**************************
循环21:计数
输入一组整数,以0结束,统计数据个数(不含0)及最大值。

输入1 2 3 456 4 3 5 0
输出7 456
#include<iostream>
using namespace std;
int main()
{
int a,max=0,i=0;
cin>>a;
while(a!=0)
{
i++;
if(a>max)
max=a;
cin>>a;}
cout<<i<<" "<<max;
return 0;
}
循环22:素数
输入一个正整数n,输出[2,n]之间所有的素数及素数个数。

输入10
输出
2 3 5 7 4
#include<iostream>
using namespace std;
int main()
{
int n,i,j,s;
s=0;
cin>>n;
for(i=2;i<=n;i++)
{ for(j=2;j<=i;j++)
if(i%j==0)
break;
if(j==i)
{s++;
cout<<i<<" ";
}
}
cout<<endl<<s;
return 0;
}
循环23:完数
输入一个正整数n,输出[1,n]之间的所有完数。

完数的定义:除自身外的因子之和等于它本身。

例如:6=1+2+3,因此6是完数。

输入1000
输出6 28 496
#include<iostream>
using namespace std;
int main()
{
int n,i,j,s;
cin>>n;
for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<i;j++)
{if(i%j==0)
s+=j;}
if(s==i)
cout<<s<<" ";
}
return 0;
}
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21、我们从虚空中来,每个人都抱着善与恶,有人升入天堂,有人堕入地狱,在无边的业火中,我想起你,想起从前,我们曾经离得那么近。

22、你们天人总是一厢情愿,总以为世人应该微笑着,那不是很残酷,没有人愿意。

23、你有没有过这样的东西,沾染过你的体温,聆听过你的心事,它们得到爱,回报爱。

你有没有丢弃过这样的东西,它们在黑暗的角落,想念着你。

即使粉身碎骨,即使已过经年,终有一天,思念,会把它们带到你的身边。

24、很久很久以前,有一种生物,学会了用两足站立,尝试着迈开双腿。

自此,他们就踏上了旅途,那是被时间驱赶着,永无止境的旅途……
25、我借着爱的轻翼,飞过园墙,砖石的墙垣,不能把爱情阻隔,甚至,死亡。

26、你这双眼睛,我给你的。

27、他的命是我的,你想要,不给你。

28、诞生于想象之中,流传于口舌之上,欲望,永远存在,生生不息。

29、我,还会回来的。

30、人活着就会失去。

你失去的不会再来,你争取的永远都会失去。

31、死亡与夜色为友,揭开了黄泉的一角,寄予这生命,时机一到,他便降临到你身边。

32、就为了这么一点点的美丽,她们可以放弃友情,亲情,爱情…这就是,所谓的TM的人性#
世界脏到羞耻,谁有资格说难过。

创伤,也是一种成熟的象征。

你知道被迷惑,说明你尚且清醒,当你不知道迷惑时,才是最可怜的。

狂妄的人有救,自卑的人没法救。

伤害别人并不能掩盖自己的缺点,不过是自欺欺人罢了。

内心各种小心算计,心中不坦白,表达颠三倒四,五官又怎么端正。

多讲点笑话,以幽默的态度处事,这样子日子会好过一点。

活在别人的赞扬与掌声中,终究会成为一个敏感脆弱的人。

沉默是毁谤最好的答覆。

对人恭敬,
无私奉献的爱心,让你拥有一切。

仇恨的心无法被治愈,只有宽容才能化解仇恨,饶过别人就是饶过自己。

接受眼前的现实,你才能超越现实。

相关文档
最新文档