循环结构参考程序.docx
《循环结构参考程序.docx》由会员分享,可在线阅读,更多相关《循环结构参考程序.docx(20页珍藏版)》请在冰豆网上搜索。
循环结构参考程序
1、编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。
所谓的水仙花数是:
如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。
#include
usingnamespacestd;
intmain()
{
intn,i,g,s,b;
cin>>n;
for(i=100;i<=n;i++)
{
g=i%10;
s=i/10%10;
b=i/100;
if(g*g*g+s*s*s+b*b*b==i)
cout<
}
return0;
}
2、编写程序,从n个整数中找到最小的数并输出。
输入分2行:
第一行为n的值,第二行为n个整数。
#include
usingnamespacestd;
intmain()
{
intx,n,min,i;
cin>>n;
cin>>x;
min=x;
for(i=2;i<=n;i++)
{
cin>>x;
if(xmin=x;
}
cout<return0;
}
3、编写程序找出一个正整数n的各位数字中最大的数字,n由键盘输入。
#include
usingnamespacestd;
intmain()
{
intn,max,t;
cin>>n;
max=0;
while(n>0)
{
t=n%10;
if(t>max)
max=t;
n/=10;
}
cout<return0;
}
4、有一分数序列
,计算该序列的前n项和,n由键盘输入。
#include
usingnamespacestd;
intmain()
{
inti,n,p,q,temp;
floats=0;
cin>>n;
p=2;
q=1;
for(i=1;i<=n;i++)
{
s+=1.0*p/q;
temp=p+q;
q=p;
p=temp;
}
cout<
return0;
}
5、编写程序求a+aa+aaa+aaaa+…+aaa…a(n个a)之和,其中a和n由键盘输入。
#include
usingnamespacestd;
intmain()
{
ints,i,n,a,t;
cin>>a>>n;
t=0;
s=0;
for(i=1;i<=n;i++)
{
t=t*10+a;
s+=t;
}
cout<
return0;
}
6、已知
,计算S的值,直到某一项的绝对值小于e为止(小于e的这项不累加),e由键盘输入。
#include
usingnamespacestd;
intmain()
{
intn,f;
doubles,t,e;
cin>>e;
s=0;
n=1;
f=1;
t=1.0/n;
while(t>=e)
{
s+=f*t;
f=-f;
n+=4;
t=1.0/n;
}
cout<
return0;
}
7、输入一行字符,以字符0作为结束标志,输出这行字符对应的ASCII码值之和。
#include
usingnamespacestd;
intmain()
{
chara;
ints=0;
cin>>a;
while(a!
='0')
{
s+=a;
cin>>a;
}
cout<
return0;
}
8、已知
,计算该序列的前N项和SN,直到SN大于q为止,q由键盘输入。
#include
usingnamespacestd;
intmain()
{
doubles,n,q;
cin>>q;
s=0;
n=1;
while(s<=q)
{
s+=(n+1)/n;
n++;
}
cout<
return0;
}
9、一个百万富翁碰到一个陌生人,陌生人找他谈了一个换钱的计划.该计划如下:
我每天给你10万,而你第一天给我一块钱,第二天我仍给你十万,你给我二块钱,第三天我仍给你十万,你给我四块钱......你每天给我的钱是前一天的两倍,直到满n(0<=n<=30)天.百万富翁非常高兴,欣然接受了这个契约.请编写一个程序,计算这n天中,陌生人给了富翁多少钱,富翁给了陌生人多少钱.
#include
usingnamespacestd;
intmain()
{
intn,i,s,t;
cin>>n;
s=0;
t=1;
for(i=1;i<=n;i++)
{
s+=t;
t=t*2;
}
cout<cout<
return0;
}
10、求1~N的阶乘之和S,
,N由键盘输入,注意:
。
#include
usingnamespacestd;
intmain()
{
doubles,t;
inti,n;
cin>>n;
s=0;
t=1;
for(i=1;i<=n;i++)
{
t=t*i;
s+=t;
}
cout<
return0;
}
11、已知
,输入正整数n和任意数x,计算S。
#include
usingnamespacestd;
intmain()
{
doublex,s,t;
inti,n;
cin>>n>>x;
s=1;
t=-1;
for(i=1;i<=n;i++)
{
t=t*(-1)*x/i;
s+=t;
}
cout<
return0;
}
#include
usingnamespacestd;
intmain()
{
doublex,s,p,q;
inti,n,f;
cin>>n>>x;
s=1;
f=-1;
p=1;
q=1;
for(i=1;i<=n;i++)
{
f=-f;
p=p*x;
q=q*i;
s+=f*p/q;
}
cout<
return0;
}
12、输入两个正整数a和b,求出其最大公约数和最小公倍数并输出。
#include
usingnamespacestd;
intmain()
{
inta,b,gy,gb;
cin>>a>>b;
gy=a;
while(a%gy!
=0||b%gy!
=0)
gy--;
gb=a;
while(gb%a!
=0||gb%b!
=0)
gb++;
cout<return0;
}
#include
usingnamespacestd;
intmain()
{
inta,b,gy,gb,i;
cin>>a>>b;
for(i=1;i<=a;i++)
if(a%i==0&&b%i==0)
gy=i;
for(i=a*b;i>=a;i--)
if(i%a==0&&i%b==0)
gb=i;
cout<return0;
}
#include
usingnamespacestd;
intmain()
{
inta,b,r,ji;
cin>>a>>b;
ji=a*b;
r=a%b;
while(r!
=0)
{
a=b;
b=r;
r=a%b;
}
cout<
return0;
}
13、编写程序求m到n之间(包括m和n,m<=n)素数的个数及其平均值,如果没有素数则输出no,m和n由键盘输入。
#include
usingnamespacestd;
intmain()
{
intm,n,i,j,gs,count=0;
doubles=0;
cin>>m>>n;
for(i=m;i<=n;i++)
{
gs=0;
for(j=1;j<=i;j++)
if(i%j==0)
gs++;
if(gs==2)
{
count++;
s+=i;
}
}
if(count==0)
cout<<"no";
else
{
s/=count;
cout<}
return0;
}
14、一个数恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,并且6=1+2+3,因此6是“完数”。
编写程序找出小于给定数n的所有“完数”,n由键盘输入。
#include
usingnamespacestd;
intmain()
{
intn,i,j,s;
cin>>n;
for(i=1;i{
s=0;
for(j=1;j
if(i%j==0)
s+=j;
if(s==i)
cout<
}
return0;
}
15、已知
,其中分母为n以内(包括n)的素数,由键盘输入n值,计算S的值。
#include
usingnamespacestd;
intmain()
{
inti,j,n,count=0;
floats=0;
cin>>n;
for(i=1;i<=n;i++)
{
count=0;
for(j=1;j<=i;j++)
if(i%j==0)
count++;
if(count==2)
s+=1.0/i;
}
cout<
return0;
}
16、一个正整数,如果它能被7整除,或者它的某一位上的数字为7,则称其为与7相关的数。
现求所有小于等于n的与7无关的正整数的平方和。
#include
usingnamespacestd;
intmain()
{
intn,i,t,s=0,flag;
cin>>n;
for(i=1;i<=n;i++)
{
if(i%7!
=0)
{
t=i;
flag=0;
while(t>0)
{
if(t%10==7)
flag=1;
t/=10;
}
if(flag==0)
s+=i*i;
}
}
cout<
return0;
}
17、一个正整数如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。
例如正整数145,1!
+4!
+5!
等于145,因此145就是一个阶乘和数。
输入一个正整数,计算它的各位数字的阶乘之和,并判断它是否是一个阶乘和数。
注意:
输入的正整数,以及组成它的各位数字的阶乘之和都不会超过int类型的表示范围,并且输入的正整数的最高位不为0。
#include
usingnamespacestd;
intmain()
{
intn,s=0,t,i,jie,yuan;
cin>>n;
yuan=n;
while(n!
=0)
{
t=n%10;
jie=1;
for(i=2;i<=t;i++)
jie*=i;
s+=jie;
n/=10;
}
cout<
if(s==yuan)
cout<<"yes";
else
cout<<"no";
return0;
}
18、输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0使得下列等式成立:
ABxBA=N,其中BA是把AB中个、十位数字交换所得的两位数。
编写程序,接收控制台输入的三位整数N,求解A,B并输出。
如果没有解则输出"no"。
#include
usingnamespacestd;
intmain()
{
intn,i,j,x,y,flag=0;
cin>>n;
for(i=1;i<9;i++)
for(j=i+1;j<=9;j++)
{
x=i*10+j;
y=j*10+i;
if(x*y==n)
{
cout<
flag=1;
}
}
if(flag==0)
cout<<"no";
return0;
}
19、编写程序,从控制台读入一个分数的分子和分母(分数无符号,并且分子小于分母,其大小不会超过int数据类型的表示范围),输出化简后分子和分母不含公约数的分数。
#include
usingnamespacestd;
intmain()
{
intm,n,i;
cin>>m>>n;
i=m;
while(m%i!
=0||n%i!
=0)
i--;
cout<return0;
}
#include
usingnamespacestd;
intmain()
{
intm,n,i;
cin>>m>>n;
for(i=2;i<=m;i++)
if(m%i==0&&n%i==0)
{
m/=i;
n/=i;
i=1;
}
cout<return0;
}
20、一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
#include
usingnamespacestd;
intmain()
{
intn,i,j,k,s,count;
cin>>n;
for(i=1;i<=n/2;i++)
{
s=i;
j=i+1;
while(s{
s+=j;
j++;
}
if(s==n)
{
count++;
for(k=i;kcout<cout<}
}
if(count==0)
cout<<"none";
return0;
}