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--)
{for(j=2;jif(a%j==0)break;
if(j==a)
{s=s+a;I++;}
if(I==20)break;
}
printf(“\n%d”,s);
}
14.求[10,200]间可以被其因子的个数整除的整数的个数。
分析:
用变量n统计所求的整数个数,n初值为0。
用变量a从10到200循环,如果a可以被其因子的个数整除,则n值增1。
判断a是否可以被其因子的个数整除:
用变量c求a的因子的个数,c初值