编程作业答案循环结构2次.docx
- 文档编号:8561265
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:11
- 大小:16.57KB
编程作业答案循环结构2次.docx
《编程作业答案循环结构2次.docx》由会员分享,可在线阅读,更多相关《编程作业答案循环结构2次.docx(11页珍藏版)》请在冰豆网上搜索。
编程作业答案循环结构2次
循环结构程序设计作业答案
1、题目:
求1!
+2!
+3!
+……+n!
的和。
由键盘输入n值,并输出运算结果。
例如:
若n值为10,则结果为4037913。
#include
longfun(intn)
{/**********Program**********/
inti;
longf=1,s=0;
for(i=1;i<=n;i++)
{f=f*i;
s=s+f;
}
returns;
/**********End**********/
}
main()
{inti,n;
longintresult;
scanf("%d",&n);
result=fun(n);
printf("%ld\n",result);
}
2、素数问题:
(1)从键盘输入一个大于3的整数,判断其是否素数,然后输出相应的结论信息。
例如:
7是素数,8不是素数。
素数是仅能被1和自身整除的数。
main()
{intm,flag;
printf("inputaninteger:
");
scanf("%d",&m);
flag=fun(m);
if(flag)
printf("%disaprime.\n",m);
else
printf("%disnotaprime.\n",m);
}
intfun(intn)
{/**********Program**********/
inti;
intj;
j=1;
for(i=2;i if(n%i==0) {j=0; break; } returnj; /**********End**********/ } (2)求给定正整数m以内的素数之和。 例如: 当m=20时,函数值为77。 intfun(intm) {/**********Program**********/ inti,k,s=0; for(i=2;i<=m;i++) {for(k=2;k if(i%k==0)break; if(k==i)s=s+i; } returns; /**********End**********/ } main() {inty; y=fun(20); printf("y=%d\n",y); } (3)求出100到200之间的素数的个数。 main() {intm,k=0; for(m=100;m<200;m++) if(fun(m)) {printf("%4d",m); k++; if(k%5==0) printf("\n"); } printf("k=%d\n",k); } intfun(intm) {/**********Program**********/ inti,k=1; if(m<=1)k=0; for(i=2;i if(m%i==0)k=0; returnk; /**********End**********/ } (4)用随机函数产生20个[15,70]上的整数,求其中的素数。 #include"stdlib.h" #include"stdio.h" intprime(intn) {/**********Program**********/ inti,t=1; for(i=2;i if(n%i==0)t=0; return(t); /**********End**********/ } main() {inta[20],i,s; clrscr(); for(i=0;i<20;i++) {a[i]=random(56)+15; if(prime(a[i]))printf("%4d",a[i]); } } 3、计算并输出给定整数n的所有因子之和(不包括1与自身)。 规定n的值不大于1000。 例如: n的值为855时,应输出704。 intfun(intn) {/**********Program**********/ ints=0,i; for(i=2;i if(n%i==0) s=s+i; returns; /**********End**********/ } main() { printf("s=%d\n",fun(855)); } 4、求一个四位数的各位数字的立方和。 intfun(intn) {/**********Program**********/ intd,k,s=0; while(n>0) {d=n%10; s+=d*d*d; n/=10; } returns; /**********End**********/ } main() {intk; k=fun(1234); printf("k=%d\n",k); } 5、求1到100之间的偶数之积。 doublefun(intm) {/**********Program**********/ doubley=1; inti; for(i=1;i<=m;i++) if(i%2==0) y*=i; returny; /**********End**********/ } main() { printf("ji=%e\n",fun(100)); } 6、求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。 每一分数的分母是前两项的分母之和 每一分数的分子是前两项的分子之和 例如: 求前20项之和的值为32.660259。 floatfun(intn) {/**********Program**********/ inti; floatf1=1,f2=1,f3,s=0; for(i=1;i<=n;i++) {f3=f1+f2; f1=f2; f2=f3; s=s+f2/f1; } returns; /**********End**********/ } main() {floaty; y=fun(20); printf("y=%f\n",y); } 7、求任意两个整数m和n的最大公因子。 例如,m=21,n=7,则输出结果为7。 main() {intm,n,r; printf("请输入整数m和n: \n"); scanf("%d%d",&m,&n); r=fun(m,n); printf("最大公因子是: %d\n",r); } intfun(intx,inty) {/**********Program**********/ intq; if(x { q=x;x=y;y=q; } while(y) {q=x%y; x=y; y=q; } returnx; /**********End**********/ } 8、题目: 编写程序求无理数e的值并输出。 e=1+1/1! +1/2! +1/3! +......+1/n! 直到1/n! <0.000001时e=2.718254。 main() {floatfun(); printf("无理数e的值是: %f\n",fun()); } floatfun() {/**********Program**********/ inti,j,k; floate,jc; i=1; e=0.0; jc=1.0; while(jc>=0.000001) { e=e+jc; j=1; for(k=1;k<=i;k++) j=j*k; jc=1.0/(float)j; i++; } returne; /**********End**********/ } 9、求任一整数m的n次方。 main() {intm,n; longs; longfun(int,int); printf("输入m和n的值: "); scanf("%d,%d",&m,&n); s=fun(m,n); printf("s=%ld\n",s); } longfun(intm,intn) {/**********Program**********/ longintx=1; inti; for(i=1;i<=n;i++) x=x*m; returnx; /**********End**********/ } 10、求1000以内所有7的倍数之和。 #defineN1000 main() {intsum; sum=fun(7); printf("%d以内所有%d的倍数之和为: %d\n",N,7,sum); } fun(intm) {/**********Program**********/ ints=0,i; for(i=1;i if(i%m==0) s+=i; returns; /**********End**********/ } 11、求满足条件: 个、十、百三位数字之积为42,个、十、百三位数字之和为12的所有三位整数。 main() {printf("满足条件的三位整数分别是: \n"); fun(); } fun() {/**********Program**********/ inti,j,k; for(i=1;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) if(i*j*k==42&&i+j+k==12) printf("%d%d%d\t",i,j,k); /**********End**********/ } 12、将一个正整数的各位数字颠倒后输出。 例如原数为12345,应输出54321。 main() {inti; printf("输入一个正整数: "); scanf("%d",&i); fun(i); } fun(intn) {/**********Program**********/ intr; do{ r=n%10; printf("%d",r); }while((n=n/10)! =0); printf("\n"); /**********End**********/ } 13、求sum=d+dd+ddd+……+dd...d(n个d), 其中d为1-9的数字。 例如3+33+333+3333+33333(此时d=3,n=5)。 main() {intd,n; longsum,fun(); printf("d="); scanf("%d",&d); printf("n="); scanf("%d",&n); sum=fun(d,n); printf("sum=%ld\n",sum); } longintfun(intd,intn) {/**********Program**********/ longints=0,t=0; inti; for(i=1;i<=n;i++) {t=t+d; s=s+t; d=d*10; } returns; /**********End**********/ }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 作业 答案 循环 结构
![提示](https://static.bdocx.com/images/bang_tan.gif)