c语言填空与改错.docx
- 文档编号:16902106
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:23
- 大小:20.17KB
c语言填空与改错.docx
《c语言填空与改错.docx》由会员分享,可在线阅读,更多相关《c语言填空与改错.docx(23页珍藏版)》请在冰点文库上搜索。
c语言填空与改错
填空:
1.以下程序求1000以内的所有的完全数之和,请将程序补充完整,并给出正确结果,填入相应窗口。
”完全数”是指:
一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:
6=1+2+3,则6就是一个完全数。
程序:
#include
#include
#include
main()
{
intsum,n,m,s,k;
sum=0;
for(n=3;n<=1000;n++)
{
s=0;
k=n/2+1;
for(m=1;m if(n%m==0) ________; if(s==n) { ____________ } } printf("\nThesum=%d",sum); } s=s+m;sum=sum+n;530 2.以下程序求[10,1000]之间能被3或5或8整除的数之和。 请将程序补充完整,给出正确程序运行结果,填入相应窗口。 #include #include #include main() { __________ longsum; sum=0; for(i=10;i<=1000;i++) {if(_______________) sum+=i; } clrscr(); printf("%ld\n",sum); } inti;i%3==0||i%5==0||i%8==0267793 3.下面程序求[3,750]之间同构数之和,请将程序补充完整,并给出正确结果,填入相应窗口。 同构数是: 一自然数平方的末几位与该数相同时,称此数为自构数,例如: 5*5=25,25*25=625则称5、25为自同构数。 程序: #include #include #include main() {longsum,n,m,s,k; sum=0; for(n=3;n<=750;n++) {if(n<10)k=10; else if(n<100)k=100; elsek=1000; s=n*n; _________; if(s%k==0) { ___________ } } printf("\nThesum=%d",sum); } s=s-n;sum+=n;1113 4.下面程序是求[5,75]之间的所有奇数的立方和。 请将程序补充完整,并给出正确结果,填入相应窗口。 程序: #include #include #include main() {longsum; ___________ sum=0; for(i=5;i<=75;i++) { if(fmod(i,2)! =0) ____________ } clrscr(); printf("%ld\n",sum); } inti;sum=sum+i*i*i;105568 5.下面程序是求[1,450]之间同时满足除3余2和除5余3条件的数的个数。 请将程序补充完整,并给出正确结果,填入相应窗口。 程序: #include #include #include main() { intcount; inti; __________ for(i=1;i<=450;i++) { if(fmod(i,3)==2&&fmod(i,5)==3) _____________ } clrscr(); printf("%d\n",count); } count=0;count++;30 6.下面程序是求[50,450]之间的能被3和5整除的数的平方和。 请将程序补充完整,并给出正确结果,填入相应窗口。 程序: #include #include #include main() { longsum; _________; sum=0; for(i=50;i<=450;i++) { if(fmod(i,3)==0&&fmod(i,5)==0) ___________ } clrscr(); printf("%ld\n",sum); } inti;sum=sum+i*i;27073 7.下面的程序是求[2,500]之间的所有的素数的个数。 请将程序补充完整,并给出正确结果,填入相应窗口。 程序: #include #include #include intprime(intn) {intyes,i; if(n<=1){return1;} yes=1; for(i=2;i<=sqrt(n);i++) if(n%i==0){yes=0;break;} ___________ } main() {intcount=0,i; clrscr(); for(i=2;i<=500;i++) if(prime(i))___________ printf("%d\n",count); } returnyes;count++;95 8.下面的程序是求表达式的值: s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+......+(1*2*3*....*n)/(3*5*7*.....(2*n+1)) 请将程序补充完整,并给出当n=20时,程序的运行结果(按四舍五入保留10位小数)。 程序: #include #include #include doublefun(intn) {doubles,t;inti; ____________ t=1.0; for(i=1;i<=n;i++) {t=t*i/(2*i+1); ____________ } returns; } main() {printf("\n%12.10lf",fun(20)); } s=1;s=s+t;1.5707961494 9.下面的程序是求如下表达式的值。 S=sqrt(ln (1)+ln (2)+ln(3)+……+ln(n)) 将程序补充完整,当n=60时,给出程序运行结果(按四舍五入保留6位小数)。 程序: #include #include #include doublefun(intn) {________________ inti; for(i=1;i<=n;i++) s+=log(1.0*i); s=sqrt(s); returns; } main() { clrscr(); printf(______________); } doubles=0;“%.6lf”,fun(60)13.734197 改错: 1.下面的程序是求500以内的所有的素数之和。 请修改程序中的错误,使它能得出正确的结果,并给出正确结果。 程序: #include #include #include intprime(intn) {intyes,i; if(n<=1){return1;} yes=1; for(i=2;i<=sqrt(n);i++) if(n%i==0){yes=0;break;} return1; } main() {intsum=0,i; clrscr(); for(i=2;i<=500;i++) if(prime(i))sum+=i; printf("%d\n",sum); } returnyes;21536 2.下面的程序中,函数fun的功能是: 根据形参m,计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1)) 请改正程序中的错误,并运行改正后的程序。 当从键盘输入70时,给出程序运行的正确结果(按四舍五入保留6位小数)。 程序: #include #include doublefun(intm) {doublet=1.0; inti=2; for(i=2;i<=m;i++) t+=1.0/i*(i+1); return; } main() {intm;clrscr(); printf("\n请输入一个整数: "); scanf("%d",&m); printf("\n结果是: %.6lf\n",fun(m)); } t+=1.0/(i*(i+1));returnt;1.485915 3.下面的程序中,函数fun的功能是: 根据形参m,计算下面公式的值。 T=1/1! +1/2! +1/3! +……+1/m! 请改正程序中的错误,并运行改正后的程序。 当从键盘输入10时,给出程序运行的正确结果(按四舍五入保留10位小数)。 程序: #include #include doublefun(intm) {doublefac,t=0.0; inti=1,j; for(i=1;i<=m;i++) {fac=1.0; for(j=1;j<=m;j++)fac=fac*i; t+=1.0/fac; } returnt; } main() {intm;clrscr(); printf("\n请输入整数: "); scanf("%d",&m); printf("\n结果是: %12.10lf\n",fun(m)); } j<=ifac=fac*j;1.7182818011 4.下面的程序中,函数fun的功能是: 根据形参m,计算下面公式的值。 T=1+1/(1*2)+1/(2*3)+……+1/(m-1)*m 请改正程序中的错误,并运行改正后的程序。 当从键盘输入70时,给出程序运行的正确结果(按四舍五入保留6位小数)。 程序: #include #include doublefun(intm) {doublet=1.0; inti=2; for(i=2;i<=m;i++) t+=1.0/(i*(i+1)); return; } main() {intm; clrscr(); printf("\n输入整数: "); scanf("%d",&m); printf("\n结果是: %.6lf\n",fun(m)); } t+=1.0/(i*(i-1));returnt;1.985714 5.下面程序中,函数fun的功能是: 计算并输出k以内的最大的10个能被13或17整除的自然数之和。 请改正程序中的错误,并运行正确的程序。 当从键盘输入500时,给出程序运行的正确结果。 #include #include intfun(intk) {intm=0,mc=0,j; while((k>=2)||mc<10) {if((k%13==0)&&(k%17==0)) {m=m+k;mc++;} k--; } returnm; } main() {intk; clrscr(); printf("\n请输入整数: "); scanf("%d",&k); printf("\n结果是: %d\n",fun(k)); } &&||4622 6.下列程序的功能是: 求出以下分数序列的前30项之和, 2/1,3/2,5/3,8/5,13/8,21/13,…… 请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。 程序: #include #include main() {longa,b,c,k; doubles; clrscr(); s=0.0;a=2;b=1; for(k=1;k<=30;k++) s=s+a/b; c=a;a=a+b;b=c; printf("\n结果: %.6lf\n",s); } {s=s+(float)a/b;c=a;a=a+b;b=c;}48.840601 7.下面的程序是求400以内的所有的素数之和。 请修改程序中的错误,使它能得出正确的结果,给出正确结果。 程序: #include #include #include intprime(intn) {intyes,i; if(n<=1){return0;} yes=0; for(i=2;i<=sqrt(n);i++) if(n%i==0){yes=1;break;} returnyes; } main() {intsum=0,i; clrscr(); for(i=2;i<=400;i++) if(prime(i))sum+=i; printf("%d\n",sum); } yes=1;yes=0;13887 8.下面的程序是计算: s=f(-30)+f(-29)+......+f(-1)+f(0)+f (1)+......+f(30) 的值。 其中函数定义如下: f(x)=(x+1)/(x-2)ifx>=1f(x)=0ifx=0orx=2 f(x)=(x-1)/(x-2)ifx<0请改正程序中的错误,并给出正确程序的运行结果(按四舍五入保留6位小数)。 程序: #include #include #include doublef(doublex) {if(x==0&&x==2) return0.0; elseif(x<0.0) return(x-1)/(x-2); else return(x+1)/(x-2); } doublefsum(intn) {inti;doubles=0.0,y; for(i=-n;i<=n;i++) {y=f(1.0*i);s+=y;} returny; } main() {clrscr(); printf("%.6lf\n",fsum(30)); } x==0||x==2returns;65.223018 9.下面的程序是计算如下公式的A15值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),...... 请改正程序中的错误,并给出程序运行的正确结果(按四舍五入保留10位小数) 程序: #include #include doublefun(intn) {intA=1.0;inti; for(i=2;i<=n;i++) A+=1.0/(1+A); ReturnA; } main() {clrscr(); printf("%12.10lf\n",fun(15)); } doubleA=1.0;A=1.0/(1+A);0.6180344478 编程练习 1.[10,130]之间,所有整数的平方和。 分析: 用变量i从10到130循环,用变量s求和,s初值为0,每次循环,s=s+i*i; #include main() {longintI,s=0; for(I=10;I<=130;I++) s=s+I*I; printf(“\n%d”,s); } 注意: i一定要是longint型。 2.[10,150]奇数的平方和。 分析: 用变量s求和,s初值为0。 用变量I从10到150循环,如果I是奇数(I%2! =0),则s=s+I*I #include main() {longintI,s=0; for(I=10;I<=150;I++) if(I%2! =0)s=s+I*I; printf(“\n%ld”,s); } 3.[10,150]之间,能被3或7整除的数的平方和。 分析: 用变量s求和,s初值为0。 用变量I从10到150循环,如果I能被3或7整除(I%3==0||i%7==0),则s=s+I*I #include main() {longintI,s=0; for(I=10;I<=150;I++) if(I%3==0||I%7==0) s=s+I*I; printf(“\n%ld”,s); } 4.[1,800]中能被3和8整除的数的个数。 分析: 用变量n求个数,n初值为0。 用变量I从1到800循环,如果I能被3和8整除(I%3==0&&i%8==0),则n++ #include main() {intI,n=0; for(I=1;I<=800;I++) if(I%3==0&&I%8==0)n++; printf(“\n%d”,n); } 5.s=1+1/(2*2)+1/(3*3)+…..+1/(m*m),求m=50时的s(结果保留4位小数) 分析: 用变量s求和,s初值为0。 用变量I从1到50循环,s=s+1/(I*I) #include main() {intI; floats=0; for(I=1;I<=50;I++) s=s+1.0/(I*I) printf(“\n%.4f”,s); } 6.求100以内最小的自然数n,使1*1+2*2+3*3+…+n*n>5500 分析: 用变量s求和,s初值为0。 用变量n从1开始循环,每次I增加1,如果s>5500,循环结束。 #include main() {intn=1,s=0; do{s=s+n*n; n=n+1; }while(s<=5500); printf(“\nn=%d”,n-1); } 7.a1=1a2=1/(1+a1)an=1/(1+an-1),求a25(结果保留10位小数) 分析: 用变量a求项,a初值为1。 用变量I从2到25循环,a=1/(1+a) #include main() {intI; floata=1; for(I=2;I<=25;I++) a=1/(1+a); printf(“\n%.10f”,a); } 8.1/1! +1/2! +….+1/10! (结果保留10位小数) 分析: 用变量s求和,s初值为0。 用变量a求阶乘,a初值为1。 用变量I从1到10循环,a=a*I,s=s+1/a。 #include main() {intI; longinta=1; floats=0; for(I=1;I<=10;I++) {a=a*I;s=s+1.0/a; } printf(“\n%.10f”,s); } 9.求s=1+1/3+(1*2)/(3*5)+…+(1*2*…*n)/(3*5*…*(2*n+1))当n=40时的值。 (结果保留10位小数) 分析: 用变量s求和,s初值为1。 用变量a用来求项的分子,变量b求项的分母,a、b初值均为1。 用变量n从1到40循环,a=a*n,b=b*(2*n+1),s=s+a/b。 #include main() {floats=1; intn; longinta=1,b=1; for(n=1;n<=40;n++) {a=a*n; b=b*(2*n+1); s=s+(float)a/b; } printf(“\ns=%.10f”,s); } 10.数列1,1,2,3,5,8…..有f(n)=f(n-1)+f(n-2),f (1)=1,f (2)=1,求f(40) 分析: 用变量f1、f2、f作为数列相邻的三项,初值f1=1,f2=1。 用变量n从3到40循环,f=f1+f2,f1=f2,f2=f. #include main() {longintf1=1,f2=1,f,n; for(n=3;n<=40;n++) {f=f1+f2; f1=f2; f2=f; } printf(“\nf=%ld”,f); } 思考: 求14万之内的最大的f(n). 11.Sn=1-1/3+1/5-1/7+…1/(2n-1)求s(100)(保留4位小数) 分析: 用变量s求和,s初值为0。 用变量n从1到100循环,如果n是奇数(n%2! =0),s=s+1/(2*n-1),否则s=s-1/(2*n-1)。 #include main() {intn; floats=0; for(n=1;n<=100;n++) if(n%2! =0)s=s+1.0/(2*n-1) elses=s-1.0/(2*n-1); printf(“\n%.4f”,s); } 12.求1000以内最大的20个素数之和。 分析: 用变量s求和,s初值为0。 用变量I统计以求得素数的个数,I初值为0。 用变量a从1000到1循环,如果a是素数,则s=s+a,I++。 当i值等于20时,跳出循环。 main() {inta,s=0,I=0,j; for(a=1000;a>=1;a--)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 填空 改错