C语言国家计算机二级考试真题训练.docx
《C语言国家计算机二级考试真题训练.docx》由会员分享,可在线阅读,更多相关《C语言国家计算机二级考试真题训练.docx(15页珍藏版)》请在冰点文库上搜索。
C语言国家计算机二级考试真题训练
下面的程序是求如下表达式的值。
S=sqrt(ln
(1)+ln
(2)+ln(3)+......+ln(n))
请改正程序中的错误,并运行修改后的程序,当n=60时,给出程序运行结果(按四舍五入保留6位小数)。
程序:
#include
#include
#include
doublefun(intn)
{doubles=0.0;inti;
/*下行有错*/
for(i=1;is+=log(1.0*i);
s=sqrt(s);
returns;
}
main()
{
/*下行有错*/
printf("%ld\n",fun(60));
}
以下程序求1000以内的所有的完全数之和,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
"完全数"是指:
一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:
6=1+2+3,则6就是一个完全数。
程序:
#include
#include
#include
main()
{
intsum;
intn,m,s,k;
sum=0;
for(n=3;n<=1000;n++)
{
s=1;
k=n/2+1;
for(m=2;mif(n%m==0)
/*下行有错*/
s=s+1;
if(s==n)
{
sum+=s;
}
}
printf("%d",sum);
}
以下程序求10000以内的所有完全数的个数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
"完全数"是指:
一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:
6=1+2+3,则6就是一个完全数。
程序:
#include
#include
#include
main()
{
intcount,n,m,s,k;
count=0;
for(n=3;n<=10000;n++)
{
/*下行有错*/
s=1;
k=n/2+1;
for(m=1;mif(n%m==0)
/*下行有错*/
s+=1;
if(s==n)
{
count+=1;
}
}
printf("%d",count);
}
以下程序求1000以内最大的完全数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
"完全数"是指:
一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:
6=1+2+3,则6就是一个完全数。
程序:
#include
#include
#include
main()
{
intn,m,s,k,big;
for(n=3;n<=1000;n++)
{
/*下行有错*/
s=1;
k=n/2+1;
for(m=1;mif(n%m==0)
/*下行有错*/
s+=1;
if(s==n)
{
big=n;
}
}
printf("%d",big);
}
以下程序求10000以内最大的完全数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
"完全数"是指:
一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:
6=1+2+3,则6就是一个完全数。
程序:
#include
#include
#include
main()
{
intn,m,s,k,big;
for(n=3;n<=10000;n++)
{/*下行有错*/
s=1;
k=n/2+1;
for(m=1;mif(n%m==0)
s+=m;
if(s==n)
{
big=n;
}
}
printf("%d\n",big);
}
以下程序求1000以内的所有的完全数的个数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
"完全数"是指:
一个数如果刚好与它所有的真因子
(不包括该数本身)之和相等,如:
6=1+2+3,则6就是一个完全数。
程序:
#include
#include
#include
main()
{
intcount,n,m,s,k;
count=0;
for(n=3;n<=10000;n++)
{/*下行有错*/
s=1;
k=n/2+1;
for(m=1;mif(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()
{
inta,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()
{
inta,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()
{
inta,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()
{
inta,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()
{
inta,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()
{
inta,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)=1ifn=1
F
(2)=1ifn=2
F(n)=F(n-1)+F(n-2)ifn>2
以下程序是求F(50),请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
程序:
#include
#include
main()
{
doublef1,f2;
inti;
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)=1ifn=1
F
(2)=1ifn=2
F(n)=F(n-1)+F(n-2)ifn>2
以下程序是求F(35),请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
程序:
#include
#include
main()
{
doublef1,f2;
inti;
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)=1ifn=1
F
(2)=1ifn=2
F(n)=F(n-1)+F(n-2)ifn>2
以下程序是求F(40),请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
程序:
#include
#include
main()
{
doublef1,f2;
inti;
/*下行有错*/
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
floatfun(intn)
{inti;
floats=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
intfun(inthigh)
{intsum=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--;
}
returnsum;
}
main()
{
printf("%d\n",fun(1000));
}
下面的程序是求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;
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
floatfun(intn)
{inti;
floats=1.0,t=1.0;
/*下行有错*/
for(i=2;i<=n;i--)
{t=t+i;
/*下行有错*/
s+=s+1/t;
}
returns;
}
main()
{printf("\n%f",fun(80));
}
已知24有8个因子,而24正好被8整除。
下面程序求[1,100]之间所有能被其因子的个数整除的整数中最大的数。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
程序:
#include
#include
#include
main()
{
inta,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);
}