32次机试试题 参考答案.docx
《32次机试试题 参考答案.docx》由会员分享,可在线阅读,更多相关《32次机试试题 参考答案.docx(15页珍藏版)》请在冰豆网上搜索。
32次机试试题参考答案
32-1套参考答案:
一、程序调试题(文件名为test1-1.c)(40分)
#include
voidfun(char*s,char*t,charp)/*改为:
char*p*/
{
inti,j,k=0;
for(i=0;s[i]!
='\0';i++)
{
for(j=0;t[j]!
='\0';j++)
if(s[i]==t[i])/*改为:
t[j]*/
{p[k]=s[i];
k++;
break;
}
}
p[k-1]='\0';/*改为:
p[k]*/
}
voidmain()
{
FILE*fp;
chars[80],t[80],p[80];
if((fp=fopen("test1-1.txt","r"))==NULL)/*改为:
w*/
{
printf("Cannotopenthefile.\n");
exit(0);
}
gets(s);
gets(t);
fun(s,t,p);
printf("Result:
\n");
puts(p);
fputc(p,fp);/*改为:
fputs*/
fclose(fp);
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test1-2.c)(60分)
评分标准:
1.fun函数编写40分:
2.main函数编写20分:
1)函数定义、形参书写正确(10分)1)正确定义变量,并能正确的输入输出(10分)
2)求最大公约数正确(20分)2)能正确调用fun函数(10分)
3)返回值正确(10分)
参考程序:
#include
intfun(intx,inty)
{
intt;
while(y!
=0)
{
t=x%y;
x=y;
y=t;
}
returnx;
}
voidmain()
{
inta,b,c,d;
printf("Input3numbers:
\n");
scanf("%d%d%d",&a,&b,&c);
d=fun(a,fun(b,c));
printf("Result=%d\n",d);
}
32-2套参考答案:
一、程序调试题(文件名为test2-1.c)(40分)
#include
#include
#include
#defineN80
charinsert(charstr,inti,charch)/*改为:
char*str*/
{
intj,len;
len=strlen(str);
if(i>len)/*改为:
i{
for(j=len-1;j>=i;j++)/*改为:
j--*/
str[j+1]=str[j];
str[i]=ch;
str[len]='\0';/*改为:
len+1*/
}
else
{
i=len;
str[i]=ch;
str[len+1]='\0';
}
}
voidmain()
{
charstr[81],ch;
inti;
FILE*fp;
fp=fopen("test1-2.dat","r");/*改为:
w*/
if(fp==NULL)
{
printf("filecannotopen!
\n");
exit(0);
}
printf("Inputastring:
");
gets(str);
printf("Inputinsertpositionandcharacter:
");
scanf("%d,%c",&i,&ch);
insert(str,i,ch);
printf("%s\n",str);
fprintf(fp,"%s\n",str);
fclose(fp);
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test2-2.c)(60分)
评分标准:
1.fun函数编写40分:
2.main函数编写20分:
1)函数定义、形参书写正确(10分)1)能正确定义变量,并能正确的输入输出(10分)
2)求平均值正确(10分)2)能正确调用fun函数(10分)
3)正确将大于平均值的整数放入数组b中(10分)
4)返回值正确(10分)
参考程序:
#include
#defineN10
intfun(int*a,int*b)
{
inti,j;
doublesum=0,aver;
for(i=0;isum=sum+a[i];
aver=sum/N;
for(i=0,j=0;iif(a[i]>aver)
b[j++]=a[i];
returnj;
}
voidmain()
{
inta[N],b[N],i,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
k=fun(a,b);
for(i=0;iprintf("%5d",b[i]);
}
32-3套参考答案:
一、程序调试题(文件名为test3-1.c)(40分)
#include
#defineM10
#defineN80
voidmain()
{
intmax,lin,i=0,a[M];
charstr[M][N];
intfun(char[M][N],int*);
FILE*fp;
if((fp=fopen("test3-1.dat","r"))==null)/*改为:
NULL*/
{
printf("Cannotopenfile.\n");
exit(0);
}
while(!
feof(fp))
gets(str[i++],N,fp);/*改为:
fgets*/
fclose(fp);
fun(str,a);/*改为:
max=fun(str,a)*/
printf("max=%d\n",max);
}
intfun(charstr[][N],inta[])
{
inti,j=0,max;
for(i=0;i{
while(str[i][j])j++;
a[i]=i;/*改为:
a[i]=j*/
j=0;
}
max=a[0];
for(i=1;iif(a[i]>max)
max=a[i];
return;/*改为:
returnmax*/
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test3-2.c)(60分)
评分标准:
1.fun函数编写35分:
2.main函数编写25分:
1)函数定义、形参书写正确(10分)1)正确定义变量,并能正确的输入输出(15分)
2)查找方法正确(15分)2)能正确调用fun函数(10分)
3)返回值正确(10分)
参考程序:
#include
#defineN10
intsearch(int*r,intk)
{
intt;
for(t=0;tif(k==r[t])
returnt;
return-1;
}
voidmain()
{
inta[30],s;
inti,k;
printf("Enter%dnumbers:
",N);
for(i=0;iscanf("%d",&a[i]);
printf("Findwhat:
");
scanf("%d",&s);
k=search(a,s);
if(k==-1)
printf("Searchingfailed!
\n");
else
printf("Positionis%d.\n",k+1);
}
32-4套参考答案:
一、程序调试题(文件名为test4-1.c)(40分)
#defineN20
#include
intfun(chars)/*改为:
char*s*/
{
inti,t=0;
for(i=0;s[i]!
='\0';i++)
if(s[i]>='0'||s[i]<='9')/*改为:
&&*/
t=t*10+s[i];/*改为:
t=t*10+s[i]-'0'*/
returnt;
}
voidmain()
{
chars[20];
intt;
file*fp;/*改为:
FILE*/
if((fp=fopen("test4-1.dat","w"))==NULL)
{
printf("Cannotopenfile!
\n");
exit(0);
}
gets(s);
t=fun(s);
printf("t=%d\n",t);
fprintf("t=%d\n",t);/*改为:
fp,"t=%d\n",t*/
fclose(fp);
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test4-2.c)(60分)
评分标准:
1.fun函数编写40分:
2.main函数编写20分:
1)函数定义、形参书写正确(10分)1)正确定义变量,并能正确的输入输出(10分)
2)排序方法正确(30分)2)能正确调用sort函数(10分)
参考程序:
#include
#include
#defineN80
voidsort(char*r)
{
inta,b,t,len;
len=strlen(r);
for(a=1;afor(b=0;bif(r[b]{
t=r[b];
r[b]=r[b+1];
r[b+1]=t;
}
}
voidmain()
{
charstr[N];
printf("Enterastring:
");
scanf("%s",str);
sort(str);
printf("Resultis:
%s\n",str);
}
32-5套参考答案:
一、程序调试题(文件名为test5-1.c)(40分)
#include
#defineN10
intfun(int*a,intc[])
{
inti,j,k=0;
for(i=0;i{
for(j=2;j<=*(a+i)/2;j++)
if(*(a+i)/j==0)break;/*改为:
*(a+i)%j*/
if(j<*(a+i)/2)/*改为:
j>*(a+i)/2*/
{
c[k]=a+i;/*改为:
*(a+i)*/
k++;
}
}
returnk;
}
voidmain()
{
inta[N],c[N],cnt,i;
FILE*fp;
fp=fopen(test5-1.dat,"r");/*改为:
"test5-1.dat"*/
if(fp==NULL)
{
printf("Cannotopenfile!
\n");
exit(0);
}
for(i=0;ifscanf("%d",a+i,fp);/*改为:
fp,"%d",a+i*/
cnt=fun(a,c);
printf("amount:
%4d\n",cnt);
printf("primenumber:
");
for(i=0;iprintf("%4d",c[i]);
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test5-2.c)(60分)
评分标准:
1.fun函数编写40分:
2.main函数编写20分:
1)函数定义、形参书写正确(10分)1)正确定义变量,二维数组初始化正确(5分)
2)转置方法正确(30分)2)能正确输出(10分)
3)能正确调用函数(5分)
参考程序:
#include
#defineN4
voidconvert(inta[][N])
{
inti,j,t;
for(j=0;jfor(i=j+1;i{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
voidmain()
{
inti,j;
inta[N][N]={{1,2,3,4},{3,4,5,6},{5,6,6,7},{7,8,9,0}};
printf("Beforeconvert:
\n");
for(i=0;i{for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
convert(a);
printf("Afterconvert:
\n");
for(i=0;i{for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
32-6套参考答案:
一、程序调试题(文件名为test6-1.c)(40分)
#defineN80
#include
intfun(charp,inta[])/*改为:
char*p*/
{
inti=0,j=0,flag=0,val=0,d;
while((p+i)!
='\0')/*改为:
*(p+i)*/
{
if(*(p+i)<'0'&&*(p+i)>'9')/*改为:
||*/
{
if(flag)
a[j++]=val;
flag=val=0;
}
else
{
d=*(p+i)-48;
val=val+10+d;/*改为:
*10*/
flag=1;
}
i++;
}
if(*(p+i)=='\0'&&flag)
a[j++]=val;
returnj;
}
voidmain()
{
charstr[N];
inta[N],n,i;
FILE*fp;
if((fp=fopen("test6-1.dat","r"))==NULL)
{
printf("Cannotopenthefile!
\n");
exit(0);
}
fgets(fp,str,N-1);/*改为:
str,N-1,fp*/
fclose(fp);
n=fun(str,a);
for(i=0;iprintf("%d\n",a[i]);
printf("\nsumto%ddata.\n",n);
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test6-2.c)(60分)
评分标准:
1.fun函数编写40分:
2.main函数编写20分:
1)函数定义、形参书写正确(10分)1)定义变量、数组和输入正确(10分)
2)输出结果正确(30分)2)能正确调用函数(10分)
参考程序:
#include
#defineN4
voidfun(inta[])
{
inti,j,k,m;
for(i=N;i>0;i--)
{
k=a[N-1];
for(j=N-1;j>0;j--)
a[j]=a[j-1];
a[0]=k;
for(m=0;mprintf("%3d",a[m]);
printf("\n");
}
}
voidmain()
{
inti,a[N];
printf("Enter%dnumber:
",N);
for(i=0;iscanf("%d",&a[i]);
fun(a);
}