文档库

最新最全的文档下载
当前位置:文档库 > C语言国家计算机二级考试真题训练

C语言国家计算机二级考试真题训练

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

S=sqrt(ln(1)+ln(2)+ln(3)+......+ln(n))

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

程序:

#include

#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));

}

以下程序求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);

}

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

if (s==n)

{

count+=1;

}

}

printf("%d",count);

}

以下程序求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);

}

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

程序:

#include

#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);

}

以下程序求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);

}

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

程序:

#include

#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);

}

若某个整数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);

}

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

程序:

#include

#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);

}

若某个整数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);

}

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

程序:

#include

#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);

}

若某个整数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);

}

已知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);

}

已知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;

}

clrscr();

printf("%12.0lf",f1);

}

已知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;

}

clrscr();

printf("%12.0lf",f2);

}

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

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));

}

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

程序:

#include

#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));

}

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

程序:

#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);

}

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

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));

}

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

程序:

#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); }