文档库 最新最全的文档下载
当前位置:文档库 › C语言改错题

C语言改错题

C语言改错题
C语言改错题

ProProblem ProSource ProAnswer

下面的程序是求500以内的所有的素数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。

程序:#include

#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 1;}

yes=1;

for(i=2; i<=sqrt(n); i++)

if(n%i==0){ yes=0; break;}

/*下行程序有错*/

return 1;

}

main()

{ int sum=0, i;

for(i=2;i<=500; i++)

if(prime(i)) sum+=i;

printf("%d\n", sum);

}21536

下面的程序是求下式的和:

s=1+1/(1+2)+1/(1+2+ 3)+

......+1/(1+2+3+... ...+n)

请改正程序中的错误,并运行修改后的程序, 当n=80时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

#include

float fun(int n)

{ int i;

float s=1.0, t=1.0;

/*下行有错*/

for(i=2; i<=n;i--)

{ t=t+i;

s=s+1/t;

}

return s;

}

main()

{ printf("\n %f", fun(80));

}

1.975309

下面的程序是求下式的和:

s=1+1/(1+2)+1/(1+2+ 3)+

......+1/(1+2+3+... ...+n)

请改正程序中的错误,并运行修改后的程序, 当n=90时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

#include

float fun(int n)

{ int i;

/*下行有错*/

float s=0.0, t=1.0;

for(i=2; i<=n;i++)

{ t=t+i;

s=s+1/t;

}

return s;

}

main()

{ printf("\n %f", fun(90));

}

1.978023

下面的程序是求如下表达式的值。

S=sqrt(ln(1)+ln(2)+ ln(3)+......+ln(n))请改正程序中的错误,并运行修改后的程序, 当n=20时,给出程序运行结果(保留6位小数)。

程序:#include

#include

/*下行有错*/

int fun(int n)

{ double s=0.0; int i;

for(i=1;i<=n;i++)

s+=log(1.0*i);

s=sqrt(s);

return s;

}

main()

{

/*下行有错*/

printf("%ld\n",fun(20));

}

6.506383

下面的程序是求如下表达式的值。

S=sqrt(ln(1)+ln(2)+ ln(3)+......+ln(n))请改正程序中的错误, 并运行修改后的程序, 当n=30时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

#include

#include

double fun(int n)

{/*下行有错*/

int s=0; int i;

for(i=1;i<=n;i++)

s+=log(1.0*i);

s=sqrt(s);

/*下行有错*/

return ;

}

main()

{

printf("%lf\n",fun(30));

}

8.640500

下面的程序是求如下表达式的值。

S=sqrt(ln(1)+ln(2)+ ln(3)+......+ln(n))请改正程序中的错误, 并运行修改后的程序, 当n=40时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

#include

#include

double fun(int n)

{ double s=0.0; int i;

/*下行有错*/

for(i=1;i<=n;i--)

s+=log(1.0*i);

s=sqrt(s);

return s;

}

main()

{

/*下行有错*/

printf("%ld\n",fun(40));

}

10.503363

下面的程序是求如下表达式的值。

S=sqrt(ln(1)+ln(2)+ ln(3)+......+ln(n))请改正程序中的错误,并运行修改后的程序, 当n=60时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

#include

double fun(int n)

{ double s=0.0; int i;

/*下行有错*/

for(i=1;i

s+=log(1.0*i);

s=sqrt(s);

return s;

}

main()

{

/*下行有错*/

printf("%ld\n",fun(60));

}

13.734197

以下程序求1000以内的所有的完全数之和,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。"完全数"是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完全数。程序:#include

#include

#include

main()

{

int sum;

int n,m,s,k;

sum=0;

for (n=3;n<=1000;n++)

{

s=1;

k=n/2+1;

for (m=2;m

if (n%m==0)

/*下行有错*/

s=s+1;

if (s==n)

{

sum+=s;

}

}

printf("%d",sum);

}530

以下程序求10000以内的所有完全数的个数,请修改程序中的错误, 使它能得出正确的结果,并给出正确结果,填入相应窗口。"完全数"是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完全数。程序:#include

#include

main()

{

int count,n,m,s,k;

count=0;

for (n=3;n<=10000;n++)

{

/*下行有错*/

s=1;

k=n/2+1;

for (m=1;m

if (n%m==0)

/*下行有错*/

s+=1;

if (s==n)

{

count+=1;

}

}

printf("%d",count);

}

4

以下程序求1000以内最大的完全数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。"完全数"是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完全数。

程序:#include

#include

#include

main()

{

int n,m,s,k,big;

for (n=3;n<=1000;n++)

{

/*下行有错*/

s=1;

k=n/2+1;

for (m=1;m

if (n%m==0)

/*下行有错*/

s+=1;

if (s==n)

{

big=n;

}

}

printf("%d",big);

}

496

以下程序求10000以内最大的完全数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。"完全数"是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完全数。

程序:#include

#include

main()

{

int n,m,s,k,big;

for (n=3;n<=10000;n++)

{ /*下行有错*/

s=1;

k=n/2+1;

for (m=1;m

if (n%m==0)

s+=m;

if (s==n)

{

big=n;

}

}

printf("%d\n",big);

}

8128

以下程序求1000以内的所有的完全数的个数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。 "完全数"是指:一个数如果刚好与它所有的真因子

(不包括该数本身)之和相等,如:

6=1+2+3,则6就是一个完全数。

程序:#include

#include

#include

main()

{

int count,n,m,s,k;

count=0;

for (n=3;n<=10000;n++)

{ /*下行有错*/

s=1;

k=n/2+1;

for (m=1;m

if (n%m==0)

s+=m;

if (s==n)

{

count+=1;

}

}

printf("%d",count);

}

4

若某个整数N的所有因子之和等于N的倍数,则称N为多因子完备数。例如,28是多因子完备数。因为:1+2+4+7+14+28=56=28 *2 ,下面程序求[1,500]间最大的多因子完备数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

main()

{

int a,b,c,n,big,count=0;

for (a=1; a<=500; a++)

{

b=0;

for (c=1;c<=a;c++)

if (a%c ==0)

b=b+c;

if (b%a==0)

{

/*下行有错*/

big=b;

}

}

printf("%d\n ",big);

}

496

若某个整数N的所有因子之和等于N的倍数,则称N为多因子完备数。例如,28是多因子完备数。因为:1+2+4+7+14+28=56=28 *2 ,下面程序求[10,600]间最大的多因子完备数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

main()

{

int a,b,c,n,big,count=0;

for (a=10; a<=600; a++)

{

b=0;

for (c=1;c<=a;c++)

if (a%c ==0)

/*下行有错*/

b++;

if (b%a==0)

{

big=a;

}

}

printf("%d\n ",big);

}

496

若某个整数N的所有因子之和等于N的倍数,则称N为多因子完备数。例如,28是多因子完备数。因为:1+2+4+7+14+28=56=28 *2 ,下面程序求[150,1000]间有多少个多因子完备数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。程序:#include

#include

main()

{

int a,b,c,n,count=0;

for (a=150; a<=1000; a++)

{ /*下行有错*/

b=a;

for (c=2;c<=a;c++)

if (a%c ==0)

b=b+c;

if (b%a==0)

{

count=count+1;

}

}

printf("%d",count);

}

2

若某个整数N的所有因子之和等于N的倍数,则称N为多因子完备数。例如,28是多因子完备数。因为:1+2+4+7+14+28=56=28 *2 ,下面程序求[100,1000]间有多少个多因子完备数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。程序:#include

#include

#include

main()

{

int a,b,c,n,count=0;

for (a=100; a<=1000; a++)

{

b=0;

/*下行有错*/

for (c=2;c<=a;c++)

if (a%c ==0)

b=b+c;

if (b%a==0)

{

/*下行有错*/

count=count+a;

}

}

printf("%d",count);

}

3

若某个整数N的所有因子之和等于N的倍数,则称N为多因子完备数。例如,28是多因子完备数。因为:1+2+4+7+14+28=56=28 *2 ,下面程序求[10,800]间有多少个多因子完备数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。程序:#include

#include

main()

{

int a,b,c,n,count=0;

for (a=10; a<=800; a++)

{

b=0;

/*下行有错*/

for (c=2;c<=a;c++)

if (a%c ==0)

b=b+c;

if (b%a==0)

{

/*下行有错*/

count=count+b;

}

}

printf("%d",count);

}

4

若某个整数N的所有因子之和等于N的倍数,则称N为多因子完备数。例如,28是多因子完备数。因为:1+2+4+7+14+28=56=28 *2 ,下面程序[1,700]间有多少个多因子完备数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

main()

{

int a,b,c,n,count=0;

for (a=1; a<=700; a++)

{

b=0;

for (c=1;c<=a;c++)

if (a%c ==0)

/*下行有错*/

b=b+1;

if (b%a==0)

{

count++;

}

}

printf("%d",count);

}

6

已知fibonacci数列:1,1,2,3,5,8,......,它可由下面公式表述:

F(1)=1

if n=1

F(2)=1

if n=2

F(n)=F(n-1)+F(n-2) if n>2

以下程序是求F (50),请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

main()

{

double f1,f2;

int i;

f1=1;f2=1;

for (i=1;i<=24;i++)

{

f1=f1+f2;

f2=f2+f1;

}

/*下行有错*/

printf("%12.0lf",f1);

}

12586269025

已知fibonacci数列:1,1,2,3,5,8,......,它可由下面公式表述:

F(1)=1

if n=1

F(2)=1

if n=2

F(n)=F(n-1)+F(n-2) if n>2

以下程序是求F (35),请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

main()

{

double f1,f2;

int i;

f1=1;f2=1;

/*下行有错*/

for (i=1;i<=35;i++)

{

f1=f1+f2;

f2=f2+f1;

}

printf("%12.0lf",f1);

}

9227465

已知fibonacci数列:1,1,2,3,5,8,......,它可由下面公式表述:

F(1)=1

if n=1

F(2)=1

if n=2

F(n)=F(n-1)+F(n-2) if n>2

以下程序是求F (40),请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

main()

{

double f1,f2;

int i;

/*下行有错*/

f1=2;f2=3;

for (i=1;i<=19;i++)

{

f1=f1+f2;

f2=f2+f1;

}

printf("%12.0lf",f2);

}

102334155

下面的程序是求下式的和:

s=1+1/(1+2)+1/(1+2+ 3)+

......+1/(1+2+3+... ...+n)

请改正程序中的错误,并运行修改后的程序, 当n=70时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

#include

float fun(int n)

{ int i;

float s=1.0, t=1.0;

/*下行有错*/

for(i=2; i

{ t=t+i;

s=s+1/t;

}

/*下行有错*/

return ;

}

main()

{ printf("\n %f", fun(70));

}

1.971832

下面的程序是求1000以内的最大的25个素数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。

程序: #include

#include

int fun(int high)

{ int sum=0, n=0, j, yes;

/*下行有错*/

while((high>=2) ||(n<25))

{yes=1 ;

for(j=2; j<=sqrt(high); j++)

if(high%j==0)

/*下行有错*/

yes=0; break;

if(yes) {sum+=high;n++;}

high--;

}

return sum;

}

main()

{

printf("%d \n",fun(1000));

}

22785

下面的程序是求500以内的所有的素数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。

程序:#include

#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 1;}

yes=1;

for(i=2; i<=sqrt(n); i++)

if(n%i==0){ yes=0; break;}

/*下行有错*/

return 1;

}

main()

{ int sum=0, i;

for(i=2;i<=500; i++)

if(prime(i)) sum+=i;

printf("%d\n", sum);

}

21536

下面的程序是求下式的和:

s=1+1/(1+2)+1/(1+2+ 3)+

......+1/(1+2+3+... ...+n)

请改正程序中的错误,并运行修改后的程序, 当n=80时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

float fun(int n)

{ int i;

float s=1.0, t=1.0;

/*下行有错*/

for(i=2; i<=n;i--)

{ t=t+i;

/*下行有错*/

s+=s+1/t;

}

return s;

}

main()

{ printf("\n %f", fun(80));

}

1.975309

已知24有8个因子,而24正好被8整除。下面程序求[1,100]之间所有能被其因子的个数整除的整数中最大的数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

main()

{

int a,b,c,n,big;

for (a=1; a<=100; a++)

{

b=0;

/*下行有错*/

for (c=2;c<=a;c++)

if (a%c ==0)

b++;

if (a%b==0)

{/*下行有错*/

big=b;

}

}

printf("%d\n ",big);

}

96

下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。

T=1+1/(2*3)+1/(3*4) +......+1/(m*(m+1))请改正程序中的错误,并运行改正后的程序。当从键盘输入70时,给出程序运行的正确结果(按四舍五入保留6位小数)。程序:#include

double fun(int m)

{ double t=1.0;

int i=2;

for(i=2; i<=m; i++)

/*下行有错*/

t+=1.0/i*(i+1);

/*下行有错*/

return ;

}

main()

{ int m;

printf("\n 请输入一个整数: ");

scanf("%d",&m);

printf("%lf\n", fun(m));

}

1.485915

下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。

T=1+1/(1*2)+1/(2*3) +......+1/(m-1)*m 请改正程序中的错误,并运行改正后的程序。当从键盘输入70时,给出程序运行的正确结果(按四舍五入保留6位小数)。程序:#include

#include

double fun(int m)

{ double t=1.0;

int i;

/*下行有错*/

for(i=1;i<=m; i++)

t+=1.0/(i*(i+1));

/*下行有错*/

return ;

}

main()

{ int m;

printf("\n 输入整数: ");

scanf("%d", &m);

printf("%lf \n",fun(m));

}

1.985714

下列程序中,函数fun的功能是:计算并输出k以内的最大的10个能被13和17整除的自然数之和。请改正程序中的错误,并运行正确的程序。当从键盘输入2500时,给出程序运行的正确结果#include

int fun(int k)

{ int m=0, mc=0, j;

while((k>=2) && mc<10)

/*下行有错*/

{ if ((k%13==0) || (k%17==0))

{ m=m+k; mc++; }

k--;

}

/*下行有错*/

return ;

}

main()

{ int k;

printf("\n 请输入整数:");

scanf("%d", &k);

printf("%d\n",fun(k));

}

14365

下面的程序是求1000以内的最大的30个素数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。

程序:#include

#include

#include

int fun(int high)

{ int sum=0, n=0, j, yes;

/*下行有错*/

while((high>=2) ||(n<10))

{yes=1 ;

for(j=2; j<=sqrt(high); j++)

if(high%j==0)

/*下行有错*/

yes=0; break;

if(yes) {sum+=high;n++;}

high--;

}

return sum;

}

main()

{

printf("%d \n",fun(1000));

}

26846

下面程序是求[20,400]之间的能被9整除的数的平方和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

main()

{

long sum;

int i;

/*下行有错*/

sum=1;

for (i=20;i<=400;i++)

{

if (fmod(i,9)==0)

sum+=i*i;

}

printf("%ld\n",sum);

}

2378565

下面的程序是求[100,999]之间所有的素数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 0;}

yes=1;

for(i=2; i<=sqrt(n); i++)

/*下行有错*/

if(n%i!=0)

{ yes=0; break;}

return yes;

}

main()

{ int count=0, i;

for(i=100;i<999; i++)

if(prime(i)) count+=1;

printf("%d\n", count);

}

143

下面的程序是求[20,700]之间所有的素数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 0;}

/*下行有错*/

yes=0;

for(i=2; i<=sqrt(n); i++)

if(n%i==0){ yes=0; break;}

return yes;

}

main()

{ int count=0, i;

for(i=20;i<=700; i++)

if(prime(i)) count+=1;

printf("%d\n", count);

}

117

下面的程序是求400以内的所有的素数之和。请修改程序中的错误,使它能得出正确的结

果,并给出正确结果。

程序:#include

#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 0;}

yes=1;

for(i=2; i<=sqrt(n); i++)

/*下行有错*/

if(n%i==0){ yes=1; break;}

return yes;

}

main()

{ int sum=0, i;

for(i=2;i<=400; i++)

if(prime(i)) sum+=i;

printf("%d\n", sum);

}

13887

以下程序求[1,650]之间能被5或6整除的数的个数。请改正程序中的错误,并运行修改后的程序,给出正确程序运行结果,填入相应窗口。#include

#include

main()

{

int i;

int count;

count=1;

for ( i=1;i<=650;i++)

{ /*下行有错*/

if (( fmod(i,5)==1)&&(fmod(i,6)==1))

/*下行有错*/

count=count+i;

}

printf("%d\n",count);

}

217

下面的程序是求500以内的所有的素数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 1;}

yes=1;

for(i=2; i<=sqrt(n); i++)

if(n%i==0){ yes=0; break;}

return yes;

}

main()

{ int count=0, i;

for(i=2;i<=500; i++)

/*下行有错*/

if(prime(i)) count+=i;

printf("%d\n", count);

}

95

下面程序是求

[5,145]之间的所有奇数的平方和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

main()

{

long sum;

int i;

sum=0;

/*下行有错*/

for (i=5;i<145;i++)

{

if (fmod(i,2)!=0)

sum+=i*i;

}

printf("%ld\n",sum);

}

518655

下面的程序是求表达式的值:

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

double fun(int n)

{ double s, t; int i;

/*下行有错*/

s=0.0; t=1.0;

for(i=1;i<=n; i--)

{ t=t*i/(2*i+1);

s+=t;

}

return s;

}

main()

{

printf("\n %12.10lf", fun(20));

}

1.5707961494

下面的程序是求表达式的值:

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=30时,程序的运行结果(按四舍五入保留10位小数)。程序:#include

#include

#include

double fun(int n)

{ double s, t; int i;

s=1.0; t=1.0;

for(i=1;i<=n; i++)

{ /*下行有错*/

t=t*n/(2*n+1);

/*下行有错*/

s=t;

}

return s;

}

main()

{printf("\n %12.10lf", fun(30));

}

1.5707963267

下面的程序是求[100,999]之间所有的素数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 0;}

yes=1;

for(i=2; i<=sqrt(n); i++)

/*下行有错*/

if(n%i!=0){ yes=0; break;}

return yes;

}

main()

{ int count=0, i;

for(i=100;i<999; i++)

if(prime(i)) count+=1;

printf("%d\n", count);

}

143

下面程序是求[50,300]之间的所有偶数的平方和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。程序:#include

#include

main()

{

long sum;

int i;

sum=0;

for (i=50;i<=300;i++)

{/*下行有错*/

if (fmod(i,2)!=0)

sum+=i*i;

}

printf("%ld\n",sum);

}

4525500

下面程序是求[1,550]之间同时满足除3余2和除5余3条件的数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

#include

main()

{

int sum;

int i;

sum=0;

for (i=1;i<=550;i++)

{

if (fmod(i,3)==2 && fmod(i,5)==3)

/*下行有错*/

sum+=1;

}

printf("%d\n",sum);

}10286

下面的程序是求如下表达式的值。

S=sqrt(ln(1)+ln(2)+ ln(3)+……+ln(n)) 请改正程序中的错误,并运行修改后的程序, 当n=40时,给出程序运行结果(按四舍五入保留6位小数)。

程序:#include

#include

#include

double fun(int n)

{

/*下行有错*/

double s; int i;

for(i=1;i

s+=log(1.0*i);

s=sqrt(s);

return s;

}

main()

{

/*下行有错*/

printf("%d\n",fun(40));

}

10.326266

下面的程序是求640以内的所有的素数的个数。请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。

程序:#include

#include

int prime(int n)

{

int yes, i;

if(n<=1)

{

/*下行有错*/

return 1;

}

yes=1;

for(i=2; i<=sqrt(n); i++)

if(n%i==0)

{

yes=0;

break;

}

return yes;

}

main()

{ int count=0, i;

/*下行有错*/

for(i=2;i<=640; i--)

{

if(prime(i)==1)

count+=1;

}

printf("%d\n",count);

}

115

相关文档