一、程序填空题
在此程序中,函数fun的功能是:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计符合条件的字符个数作为函数值返回。
例如,形参s所指的字符串为:Abc@1x56*,程序执行后t所指字符数组中的字符串应为A@156*。
#include <stdio.h>
int fun(char *s, char *t)
{ int n=0;
while(*s)
{ if(*s < 97) {
/**********found**********/
*(t+n)= __1__ ; n++; }
/**********found**********/
__2__ ;
}
*(t+n)=0;
/**********found**********/
return __3__ ;
}
void main()
{ char s[81],t[81]; int n;
printf("\nEnter a string:\n"); gets(s);
n=fun(s,t);
printf("\nThere are %d letter which ASCII code is less than 97: %s\n",n,t);
}
答案:(1) *s (2) s++ (3) n
二、程序修改题
在此程序中,函数fun的功能是:给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。
例如,n=8时,输出193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763。所得平均值为195.838745,在平均值以上的实数个数应为5。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
int fun(float x[], int n)
/************found************/
int j, c=0; float xa=0.0;
for (j=0; j<n; j++)
xa += x[j]/n;
printf("ave =%f\n",xa);
for (j=0; j<n; j++)
/************found************/
if (x[j] => xa)
c++;
return c;
}
void main ()
{float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763};
system("cls");
printf("%d\n", fun (x, 8));
}
答案:(1) {int j, c=0; float xa=0.0; (2) if(x[j]>=xa)
三、程序设计题
在此程序中,编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。
例如,m=12,n=8时,运行结果为495.000000。
#include <stdio.h>
float fun(int m, int n)
{
}
void main() /* 主函数 */
{ void NONO ();
printf("P=%f\n", fun (12,8));
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, m, n ;
float s;
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(fp, "%d,%d", &m, &n) ;
s = fun(m, n) ;
fprintf(wf, "%f\n", s) ;
}
fclose(fp) ;
fclose(wf) ;
}
答案:
float p1=1,p2=1,p3=1;
int i;
for(i=1;i<=m;i++)
p1*=i;
for(i=1;i<=n;i++)
p2*=i;
for(i=1;i<=(m-n);i++)
p3*=i;
return p1/(p2*p3);