安徽C语言省考参考答案.docx
《安徽C语言省考参考答案.docx》由会员分享,可在线阅读,更多相关《安徽C语言省考参考答案.docx(19页珍藏版)》请在冰豆网上搜索。
安徽C语言省考参考答案
第一套
参考答案:
ERROR1:
n=0;
ERROR2:
if(x<10);
ERROR3:
elsen=4;
其他参考答案略。
参考答案:
BLANK1:
&a[i]或a+i
BLANK2:
a[0]或*(a+0)
BLANK3:
max1
其它参考答案略。
voidmain()
{
inti,j;
doubles=0,s1;
for(i=1;i<=10;i++)
{s1=1;
for(j=1;j<=i;j++)
s1=s1*j/(2*j+1);
if(i%2)
s+=s1;
else
s-=s1;
}
printf("s=%f\n",s);
答案二
voidmain()
{
inti;
doubles=0,s1=1;
for(i=1;i<=10;i++)
{s1=s1*i/(2*i+1);
if(i%2)
s+=s1;
else
s-=s1;
}
printf("s=%f\n",s);
第二套
下面是计算1-1/3+1/5-1/7+……..的值,知道某项的绝对值小于0.00006为止
2.改错
#include
#include
#defineEPS0.00006
voidmain()
{
longi;
intsing;
doubles,t;
i=1;
s=1;/*$ERROR1$*/
sing=1;t=1;
while(fabs(t)>=EPS)/*$ERROR2$*/
{s=s+t;
i=i+1;/*$ERROR3$*/
sing=-sing;
t=sing*1.0/i;
}
printf("%e\n",s);
}
3.程序填空
#include
voidmain()
{
inti,a1,a2,s;
s=0;/*$BLANK1$*/
for(i=1;i<100;i++)/*$BLANK2$*/
{a1=i%10;
a2=i/10;
if(i%3==0)
if((a1==5)||(a2==5))/*$BLANK3$*/
s+=i;
}
printf("%d\n",s);
}
4.程序设计。
求S=1*2*3-2*3*4+3*4*5-4*5*6+5*6*7……….-20*21*22
输出格式S=23516
voidmain()
{
inti;
longs=0;
for(i=1;i<=20;i++)
{
if(i%2)
s+=i*(i+1)*(i+2);
else
s-=i*(i+1)*(i+2);
}
printf("s=%ld\n",s);
运行结果:
s=-4950
第三套
2.改错
#include
voidmain()
{
inti,x;
for(i=1;i<=10;i++)
{
scanf("%f",x);/*$ERROR1$*/
if(x/7=0)/*$ERROR2$*/
{printf("%d\n",x);
continue;/*$ERROR3$*/
}
}
if(i>10)printf("notexist");
}参考答案:
ERROR1:
scanf("%d",&x);
ERROR2:
if(x%7==0)
ERROR3:
break;
其他参考答案略。
程序填空
#include
voidmain()
{intn,i,sum;
printf("INPUTn:
");
scanf("%d",&n);/*$BLANK1$*/
sum=0;/*$BLANK2$*/
for(i=2;i<=n-1;i++)
if(n%i==0)
sum+=i;/*$BLANK3$*/
printf("sum=%d\n",sum);
}
参考答案:
BLANK1:
&n
BLANK2:
=0
BLANK3:
i
其它参考答案略。
4.程序设计
voidmain()
{
inti;
floats=0;
for(i=1;i<=50;i++)
s+=1.0*i/(2*i+1);
printf("s=%f\n",s);
运行结果:
s=24.026167
第四套
2.改错
#include
#include/*$ERROR1$*/
voidmain()
{intn=0,i;
charc[80];
gets(c);/*$ERROR2$*/
i=0;
while(c[i]!
='\0')/*$ERROR3$*/
{if(c[i]>='0'&&c[i]<='9')i++;
else{c[n]=c[i];n++;i++;}}
c[n]='\0';
puts(c);
}参考答案:
ERROR1:
#include
ERROR2:
gets(c);
ERROR3:
while(c[i]!
='\0')
其他参考答案略。
3.填空
#include
#include
voidmain()
{charstr[30],t[80];
inti,j;
gets(str);
for(i=0,j=0;str[i]!
='\0';i++)/*$BLANK1$*/
t[j++]=str[i];
for(--i;i>=0;i--)/*$BLANK2$*/
t[j++]=str[i];
t[j]='\0';/*$BLANK3$*/
puts(t);
}BLANK1:
'\0'
BLANK2:
0
BLANK3:
'\0'
其它参考答案略。
4.设计
除二余一…….
voidmain()
{intn;
n=1;
while
(1)
{
if(n%2==1&&n%3==2&&n%4==3&&n%5==4&&n%7==5)
break;
n++;
}
printf("n=%d\n",n);
运行结果:
n=299
第五套
2.改错
3.填空
4.设计
第六套
2.改错
#include
floatmean(intx,intnum)/*$ERROR1$*/
{inti;
floatavg;
for(avg=0,i=0;iavg+=x[i];
avg%=num;/*$ERROR2$*/
return(avg);
}
voidmain()
{
inti,a[15];
for(i=0;i<15;i++)
a[i]=i+3;
printf("average:
%6.2f\n",mean(a));/*$ERROR3$*/
}
参考答案:
ERROR1:
floatmean(int*x,intnum)
ERROR2:
avg/=num;
ERROR3:
printf("average:
%5.2f\n",mean(a,15));
其他参考答案略。
3.填空
#include
#include
voidmain()
{inti;
FILE*fp;
if((fp=fopen("myfile.txt",___))==NULL)/*$BLANK1$*/
exit(0);
for(i=1;i<11;i++)
fprintf(___,"%d%f\n",i,sqrt(i));/*$BLANK2$*/
fclose(___);/*$BLANK3$*/
}参考答案:
BLANK1:
"w"
BLANK2:
fp
BLANK3:
fp
其它参考答案略。
4.设计
计算200到700之间能被九整除且个位数不为5的数之和
参考答案:
#include
PRINT(ints)
{
FILE*out;
if((out=fopen("result.txt","w+"))!
=NULL)
fprintf(out,"%d",s);
fclose(out);
}
voidmain()
{
inti,s=0;
for(i=200;i<=700;i++)
if(i%9==0&&i%10!
=5)
s+=i;
printf("%d\n",s);
PRINT(s);
}
运行结果:
第七套
2.改错
#include
#defineMAX20
voidmain()
{intn,i;
intf[max];/*$ERROR1$*/
printf("inputn:
");
scanf("%d",n);/*$ERROR2$*/
f[1]=1;f[2]=1;
for(i=3;if[i]=f[i-1]+f[i-2];
printf("%d\n",f[n]);
}参考答案:
ERROR1:
intn,i,f[MAX];
ERROR2:
scanf("%d",&n);
ERROR3:
for(i=3;i<=n;i++)
其他参考答案略。
3.填空
#include
ints(intk)
{inta,b,c;
a=k%10;
b=k/10%10;
c=k/100;
if(k___a*a*a+b*b*b+c*c*c)/*$BLANK1$*/
return
(1);
else
return(___);/*$BLANK2$*/
}
voidmain()
{inti,sum;
sum=0;
for(i=101;i<=999;i++)
if(___!
=0)/*$BLANK3$*/
{printf("%d\n",i);
sum=sum+i;
}
printf("SUM=%d\n",sum);
}参考答案:
BLANK1:
==
BLANK2:
0
BLANK3:
s(i)
其它参考答案略。
4.设计
参考答案:
#include
PRINT(floatf)
{
FILE*out;
if((out=fopen("result.txt","w+"))!
=NULL)
fprintf(out,"A30=%f",f);
fclose(out);
}
voidmain()
{floata,b,s;
inti;
a=1;b=1;
for(i=3;i<=30;i++)
{s=i/(a+b);
a=b;
b=s;
}
printf("A30=%f\n",s);
PRINT(s);
}
运行结果:
A30=3.921752
第八套
2.改错
#include
voidmain()
{
inti,j;
i=1;
while(i<5)/*$ERROR1$*/
{
for(j=i;j<2*i;j++)
printf("%f",j+64);/*$ERROR2$*/
printf("\n");
i--;/*$ERROR3$*/
}
}参考答案:
ERROR1:
while(i<6)
ERROR2:
printf("%c",j+64);
ERROR3:
i++;
其他参考答案略。
3.填空
structstu
{intnum;
charname[12];
doublescore;
};
#include
voidmain()
{___stud[5]={{101,"Liping",45},/*$BLANK1$*/
{102,"Zhangping",62.5},
{103,"Hefang",92.5},
{104,"Chengling",87},
{105,"Wangming",58}};
inti,n=0;
printf("num\tname\tscore\n");
i=0;
while(i<5)
{
if(___<60)/*$BLANK2$*/
{printf("%d\t%s\t%.2f\n",stud[i].num,stud[i].name,stud[i].score);
___;/*$BLANK3$*/
}
i++;
}
printf("n=%d\n",n);
}参考答案:
ERROR1:
while(i<6)
ERROR2:
printf("%c",j+64);
ERROR3:
i++;
其他参考答案略。
4.设计
voidmain()
{longs;
inti;
s=0;
for(i=2;i<=150;i++)
{
if((i*i%10==i)||(i*i%100==i)||(i*i%1000==i))
s+=i;
}
printf("s=%ld\n",s);
PRINT(s);
}
运行结果:
s=112
第九套
2.改错
#include
voidmain()
{
inta[10]={63,10,-47,28,96,2,19,-62,-22,25};
inti,j,temp;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])/*$ERROR1$*/
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=a[j];/*$ERROR2$*/
}
}
}
for(i=0;i<=9;i++)
printf("%5d",&a[i]);/*$ERROR3$*/
}
参考答案:
ERROR1:
if(a[j]ERROR2:
a[j+1]=temp;
ERROR3:
printf("%5d",a[i]);
其他参考答案略。
3.填空
#include
intfac(intn)
{
intk,f;
f=___;/*$BLANK1$*/
for(k=1;k<___;k++)/*$BLANK2$*/
f*=k;
return(___);/*$BLANK3$*/
}
voidmain()
{inti;
for(i=1;i<=5;i++)
printf("%d!
=%d\n",i,fac(i));
}参考答案:
BLANK1:
!
=0或>0
BLANK2:
<=n或BLANK3:
return(f)或returnf
其它参考答案略。
4.设计
大于500的素数中,输出前五个素数和。
参考答案1:
#include
PRINT(ints)
{
FILE*out;
if((out=fopen("RESULT.TXT","w+"))!
=NULL)
fprintf(out,"s=%d",s);
fclose(out);
}
voidmain()
{ints=0,i,j,n=1;
for(i=501;n<=5;i+=2)
{for(j=3;j<=i/2;j+=2)
if(i%j==0)break;
if(j>i/2)
{s=s+i;n++;printf("%d\n",i);}
}
printf("s=%d\n",s);
PRINT(s);
}
参考答案2:
#include
PRINT(ints)
{
FILE*out;
if((out=fopen("result.txt","w+"))!
=NULL)
fprintf(out,"s=%d",s);
fclose(out);
}
voidmain()
{ints=0;
inti=0,j,n;
n=500;
do/*直到型循环,当素数个数达到5个时结束循环*/
{
for(j=2;j<=n/2;j++)/*判断n是否为素数*/
if(n%j==0)
break;
if(j>n/2)
{s+=n;/*n是素数则求和*/
i++;/*n素数个数加1*/
}
n++;
}
while(i<5)
printf("s=%d\n",s);
PRINT(s);
}
运行结果:
s=2597