C++循环控制结构练习题DOC.docx
- 文档编号:5544638
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:32
- 大小:32.32KB
C++循环控制结构练习题DOC.docx
《C++循环控制结构练习题DOC.docx》由会员分享,可在线阅读,更多相关《C++循环控制结构练习题DOC.docx(32页珍藏版)》请在冰豆网上搜索。
C++循环控制结构练习题DOC
循环控制结构练习题
1.从键盘上输入一个正整数n,计算其阶乘n!
#include
#include
usingnamespacestd;
intf(intn)
{
intt=1;
for(inti=n;i>0;i--)
t=t*i;
returnt;(0的阶层为1)
}
intmain()
{
intn;
cout<<"n=";
cin>>n;
cout< if(n<0)n=abs(n); cout<<"n! ="< system("pause"); return0; } 2.从键盘上输入一个正整数n,判断是否是素数? 法1: #include #include usingnamespacestd; voidf(intn){ intk=sqrt(n),i; for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1)cout< elsecout< } intmain() { intn; cout<<"n="; cin>>n; f(n); system("pause"); return0; } 法2;#include #include usingnamespacestd; boolf(intn){ intk=sqrt(n),i; for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1)return1; elsereturn0; } intmain() { intn; cout<<"n="; cin>>n; f(n); if(f(n))cout< elsecout< system("pause"); return0; } boolf2(intn) {intk=sqrt(n),i; for(i=2;i<=k;i++) if(n%i==0)return0; if(i>=k+1)return1;1 }intmain() {intn; while (1) {cin>>n; if(n==0)break; if(f2(n))cout<<"是素数! ! "< system("pause"); return0 3.编写程序,输入一个整数,求该整数的各位数字和。 #include #include usingnamespacestd; intf(intn) { intt=0; for(inti=n;i>0;i=i/10) t=i%10+t; returnt; } intmain() { intn; cout<<"n="; cin>>n; if(n<0)n=abs(n); cout<<"n的各位数字和为: "< system("pause"); return0; } 法二: intf(intn) { if(n<10)returnn; elsereturn(n%10+f(n/10)); } intmain() { intn; cout<<"n="; cin>>n; if(n<0)n=abs(n); cout<<"n的各位数字和为: "< system("pause"); return0; } intf3(intn) {n=abs(n); if(n<10)returnn; elsereturn((n%10)+f3(n/10));} intmain() {intn; while (1) {cin>>n; if(n==0)break; cout< system("pause"); return0;} 3.编写程序,输入一个整数,求该整数的各位数字的乘积。 法一: #include usingnamespacestd; intf(intn) { if(n<10)returnn; elsereturn((n%10)*f(n/10)); } intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout< system("pause"); return0; } 法二: #include usingnamespacestd; intf(intn) { intt=1; for(inti=n;i>0;i=i/10) t=t*(i%10); returnt; } intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout< system("pause"); return0; } intf4(intn) {n=abs(n); if(n<10)returnn; elsereturn((n%10)*f3(n/10));} intmain() {intn; while (1) {cin>>n; if(n==0)break; cout< system("pause"); return0;} 4.编写程序,输入一个整数,求该整数的各位数字的平方和。 法一: #include usingnamespacestd; intf(intn) { intt=0; for(inti=n;i>0;i=i/10) t=t+(i%10)*(i%10); returnt; } intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout< system("pause"); return0; }法二: #include usingnamespacestd; intf(intn) { if(n<10)returnn*n; elsereturn(n%10)*(n%10)+f(n/10); } intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout< system("pause"); return0; } intf4(intn) {n=abs(n); if(n<10)returnn*n; if(n>10)return(n%10)*(n%10)+f4(n/10);} intmain() {intn; while (1) {cin>>n; if(n==0)break; cout< system("pause"); return0;} 5.编写程序,输入一个整数,求该整数的各位上的数字是否包含数字5,若有则输出是第几位有含数字5. #include usingnamespacestd; voidf(intn) { intj=0; for(inti=n;i>0;i=i/10) { j++;if(i%10==5)cout< } } intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout<<"包含5的位置i为: "; f(n); cout< system("pause"); return0; } voidf5(intn,intm) {for(inti=n,j=0;i>0;i=i/10,j++) if(i%10==m){cout<<"第"< } intmain() {intn,m; while (1) {cin>>n>>m; if(n==0)break; f5(n,m);} system("pause"); return0;} 6.编写程序输出一个平行四边行。 注: 边长为10个*号 voidu() { inti=0; for(inti=1;i<=10;i++) { cout< for(intj=1;j<=10;j++) cout<<'*'; cout< } } voidf6() {for(intj=0;j<10;j++) {cout< for(inti=0;i<10;i++) cout<<'*'; cout< intmain() {intn,m; f6(); system("pause"); return0;} 8.编程计算: 的前20项的和。 法一: #include usingnamespacestd; doublef(doublen) { if(n>0){ if(n==1)return1; elsereturnn/(2*n-1)+f(n-1); } } intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout< cout< system("pause"); return0; } doublef7(doublen) {inti;if(n>0){ if(n==1)return1; elsereturn(n/(2*n-1))+f7(n-1); }} intmain() {doublen,m; cin>>n; cout< system("pause"); return0;} 9.编写一程序,输入一个正整数,统计该数中含数字5的个数。 usingnamespacestd; voidf(intn) { intj=0; for(inti=n;i>0;i=i/10) { if(i%10==5)j++; }cout< } intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout<<"包含5的个数为: "; f(n); cout< system("pause"); return0; 10.编写程序,输出所有含数字5且为77倍数的四位数。 voidJ(){ for(inti=1000;i<=9999;i++) if(i%77==0){ intm=i; for(m;m>0;m=m/10) if(m%10==5){cout< } }intmain() {J(); System(“pause”); return0; } 11.编写一程序,输入一个正整数n,求大于等于n的最小素数。 #include usingnamespacestd; intmain() { intx,b,i,m,k; cout<<"请输入一个整数: "; cin>>x; b=sqrt(x); for(i=2;i<=b;i++) if(x%i==0)break; if(i>=b+1)cout< else for(m=x;;m++){ k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) {cout< }system("pause"); return0; } 法二: #include usingnamespacestd; intmain() { intn,k,m,i,j; cout<<"n="; cin>>n; for(i=n;;i++){ for(j=2;j*j if(i%j==0)break; if(j*j>=i){ cout< break; } } system("pause"); return0; } 12.从键盘输入一个小于15的正整数,计算其阶乘。 13.编程计算1! +2! +3! +.....+n! 。 n从键盘输入。 intsum2(intn) {intsum=0,t=1; for(intj=1;j<=n;j++) {t=1; for(inti=1;i<=j;i++) t=t*i; sum=sum+t;} returnsum; } intmain() {intn; while (1){ cin>>n; if(n==0)break; cout<<"sum="< } system("pause"); return0;} 14.从键盘上输入一个正整数m,找出1000至10000之间所有各位数字之和等于m的数。 如输入32,则有9869满足要求。 因为9869各位上数字之和等于32。 #include usingnamespacestd; voidf(intm) { inti; for(i=1000;i<10000;i++) { intsum=0; for(intj=i;j>0;j=j/10){sum=sum+j%10;} if(sum==m){cout< } cout< } intmain() { intn,m; cout<<"n="; cin>>n; f(n); system("pause"); return0; } 15.已知xxz+yzz=532,求所有可能的x,y,z的值 #include usingnamespacestd; intmain() { for(intx=0;x<=9;x++){ for(inty=0;y<=9;y++){ for(intz=0;z<=9;z++){ intk=x*10+x*100+z+y*100+z*10+z; if(k==532)cout< } } }system("pause"); return0; } 16.编程从键盘中随机输入若干整数,统计其中正整数、0、负整数数的个数。 当输入整数100000时结束输入。 #include usingnamespacestd; voidmain() { intn=0,m=0,k=0,c=0; while(n! =100000){ cout<<"n="; cin>>n; if(n>0)k++; elseif(n==0)m++; elseif(n<0)c++; }cout<<"正整数的个数是: "< cout<<"负整数的个数是: "< cout<<"0的个数是: "< system("pause"); } 17.编写一程序,输入一个正整数n,求小于等于n的最大素数。 18.求100~999中的。 所谓水仙花数是指一个三位数,它的每位数字的立方之和等于该数。 例如,因为153=13+53+33,所以153为水仙花数。 #include usingnamespacestd; voidmain() { inti; for(i=100;i<=999;i++) { intj,sum=0; j=i; while(j) { intk=j%10; sum=sum+k*k*k; j=j/10; }if(sum==i)cout< } system("pause"); } 19.求1000之内的所有完数。 所谓完数是指一个数恰好等于它的所有因子之和。 例如,6=1+2+3,所以6为完数。 20.编一程序显示如下图案: * *** ***** ******* ********* 21.编一程序显示如下图案: A ABC ABCDE #include #include usingnamespacestd; voidf(intn){ for(inti=1;i<=n;i++){ cout< for(intj=0;j<2*i-1;j++) { chart='A'+j; cout< } cout< } } intmain() { f(3); system("pause"); return0; } 21.根据π/4=1-1/3+1/5-1/7+…求π的近似值,直到最后一项的值小于0.000001为止。 22.猴子吃桃问题。 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,发现只剩一个桃子了,求猴子第一天究竟摘了多少个桃子? 23.编程序模拟剪刀,石头和纸游戏。 游戏规则为: 剪刀剪纸,石头砸剪刀,纸包石头.玩游戏者从键盘上输入s(表示剪刀)或R(表示石头)或P(表示纸),要求两个游戏者交替输入,计算机给出输赢的信息。 24.编写程序输出菲波那切数列的前20项。 即前两项为1,以后每一项为前两项之和。 25.打印九九乘法表。 26.若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛? 27.编写程序,输入一个整数,求该整数是几位数? 并输出最高位数字。 #include usingnamespacestd; intf(intn) { intx=0,j=0; for(inti=n;i>0;i=i/10){ j++; if(x }cout< returnx; }intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout< cout< system("pause"); return0; } 28.从键盘上输入一个正整数n,求出5位数中各位数字之和等于n的所有素数,每行按6个素数输出。 法一: #include usingnamespacestd; voidf(intm,intn,intk) { intl=0; for(inti=m;i<=n;i++){ ints=0; for(intj=i;j>0;j=j/10) s=s+j%10; if(s==k){ intt,z=sqrt(i); for(t=2;t<=k;t++) if(i%t==0)break; if(t>=k+1){ cout< l++; if(l%6==0)cout< } } } } intmain() { f(10000,99999,43); system("pause"); return0; } 法二: (正确) #include usingnamespacestd; voidfoundPrime(intn) { intk=0; for(inti=10000;i<100000;i++) { ints=0; intm=i; while(m>0) { s=s+m%10; m=m/10; } if(s==n) { intz=sqrt(i); intj; for(j=2;j<=z;j++) if(i%j==0)break; if(j>=z+1) { cout< k++; if(k%6==0)cout< } } } }intmain() { foundPrime(43); system("pause"); return0; } 29.编程求下式的值: n1+n2+n3+n4+…+n10,其中n=1,2,3。 编写函数时,设置参数n的默认值为2。 #include usingnamespacestd; intf(intn=2) { inti,t=1,sum=0,k=0; for(i=1;i<=10;i++) { t=t*n; sum=sum+t; } returnsum; } intmain() { cout< cout< (1)< cout< (2)< cout< system("pause"); return0; } 30.给定求组合数公式为: Cnm=m! /n! (m-n)! 编一程序,输入m和n的值 31.求s=1+(1+2)+(1+2+3)+…….+(1+2+3+……+n)的值。 #include usingnamespacestd; intf(intn) { intsum,t=0; for(intj=1;j<=n;j++) { sum=0; for(inti=j;i>0;i--) sum=sum+i; t=t+sum; } returnt; }intmain() { intn; cout<<"n="; cin>>n; n=abs(n); cout< cout< system("pause"); return0; } 32.编程计算: s= 33.求sum=a+aa+aaa+aaaa+…+aa…a(表示n个a)的值。 其中a是一位数字。 例如当n=6,a=2时sum=2+22+222+2222+22222+222222。 n和a的值由键盘输入。 法一: #include using
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 循环 控制 结构 练习题 DOC