四川省二级C语言29次机试试题
(第一套)
(60分钟)
一、程序调试题(40分)
磁盘上有一程序test1-1.c,其中函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长
请改正程序中的错误 ,使程序能得出正确的结果。
注意:不得增行或删行,也不得更改程序结构。
源程序如下:
# include
# include
# define M 5
# define N 20
void fun(char (*ss)[N])
{ int i,j,k=0,n,m,len;
for(i=0;i
{ len=strlen(ss[i]);
if(i=0) n=len;
if(len
{ n=len;
k=i;
}
}
for(i=0;i
if(i!=k)
{ m=n;len=strlen(ss);
for(j=len;j>=0;j--)
ss[i][m--]=ss[i][j];
for(j=0;j
ss[i][j]='*';
}
}
void main()
{ char ss[M][N];
int i;
FILE *fp;
fp=fopen("test1-1.in","r");
if(fp==NULL)
{ printf("File cannot open!\n");
exit(0);
}
for(i=0;i
fscanf("%s",ss[i]);
printf("\nThe original strings are:\n");
for(i=0;i
printf("%s\n",ss[i]);
printf("\n");
fun(ss);
for(i=0;i
printf("%s\n",ss[i]);
fclose(fp);
}
二、编写程序test1-2.c(60分)
程序的功能是:删除一个字符串中指定的字符。
编写fun函数,其功能是删除一个字符串中指定的字符。假设字符串为:turbo c and borland c++,指定要删除的字符为n,则删除后的字符串变为:turbo c ad borlad c++。如果输入的字符在字符串中不存在,则字符串照原样输出。同一字母的大、小按不同字符处理。
在main函数中输入一个字符串(可以有空格)和一个要删除的字符,调用函数fun,最后输出结果。
(第二套)
(60分钟)
一、程序调试题(40分)
磁盘上有一个名为test2-1.c的C程序,其中函数fun的功能是:用下面的公式求的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:
例如,程序运行后,输入0.0001,则程序输出3.1414 。
请改正程序中的错误,使程序能得出正确的结果。
注意:不得增行或删行,也不得更改程序结构。
源程序如下:
# include
# include
float fun(float num)
{ int s;
float n,t,pi;
t=1;pi=0;n=1;s=1;
while(t>=num)
{ pi=pi+t; n=n+2; s=-s;
t=s%n;
}
pi=pi*4;
return;
}
main()
{
float n1,n2;
FILE *fp;
fp=fopen("test2-1.out","r");
if(fp==NULL)
{ printf("\nFile cannot open!\n");
exit(0);
}
printf("Enter a float number:");
scanf("%f",&n1);
n2=fun();
printf("%6.4f\n",n2);
fprintf(fp,"Result=%6.4f\n",n2);
fclose(fp);
}
二、编写程序test2-2.c(60分)
编写函数fun,其功能是:将形参指针a指向的字符顺序放入形指针c指向的字符串中,再把形参指针b指针的字符串逆序放入形参指针c指向的字符串中。注:不能使用字符串的复制和连接函数。
例如:a指向的字符串为adcb,b指向的字符串为213,则字符串c中的内容为adcb312。
(第三套)
(60分钟)
一、程序调试题