二级C语言_上机题标准答案2012
二级C语言_上机题标准答案2012
1、 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
void fun(char *a,char *h,char *p)
{char b[81],*x;
int i=0,j=0;
x=a;
while (x
while (h<=p)
if (*h!='*') {b[j]=*h;j++;h++;}
else h++;
p++;
while (*p) {b[j]=*p;j++;p++;}
b[j]='\0';j=0;
while (b[j])
{ a[i]=b[j];i++;j++;}
a[i]='\0';
}
void NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
char s[81],*t,*f;
int i;
FILE *rf,*wf;
rf = fopen("b37.in","r");
wf = fopen("a37.out", "w") ;
for (i=0;i<4;i++)
{fscanf(rf,"%s",s);
t=f=s;
while(*t) t++;
t--;
while (*t=='*') t--;
while (*f=='*') f++;
fun(s,f,t);
fprintf(wf,"%s\n",s);
}
fclose(rf);
fclose(wf) ;
}
main()
{ char s[81],*t,*f;
printf("Enter a string:\n");gets(s);
t=f=s;
while(*t) t++;
t--;
while (*t=='*') t--;
while (*f=='*') f++;
fun(s,f,t);
printf("The string after deleted:\n");puts(s);
NONO();
}
2、 给定程序modi.c中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实际个数。
例如,n=8时输入:193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
int fun(float x[],int n)
/************found************/
{ int j,c=0;float xa=0.0;
for(j=0;j
xa+=x[j]/n;
printf("ave=%f\n",xa);
for(j=0;j
/************found************/
if (x[j]>=xa)
c++;
return c;
}
main()
{float x[100]={193.199f,195.673f,195.757f,196.051f,196.092f,196.596f,196.579f,196.763f};
system("cls");
printf("%d\n",fun(x,8));
}
3、 给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函