文档介绍:第51套:
给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,
作为函数值返回。为便于统计,规定各单词之间用空格隔开。
例如,形参s所指的字符串为:This is a C language program.,函数
的返回值为6。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结
果。
注意:。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <>
int fun(char *s)
{ int n=0, flag=0;
while(*s!='\0')
{ if(*s!=' ' && flag==0) {
/**********found**********/
__1__ ; flag=1;}
/**********found**********/
if (*s==' ') flag= __2__ ;
/**********found**********/
__3__ ;
}
return n;
}
main()
{ char str[81]; int n;
printf("\nEnter a line text:\n"); gets(str);
n=fun(str);
printf("\nThere are %d words in this text.\n\n",n);
}
解题思路:
本题是统计字符串中包含的单词个数。
第一处:单词个数用变量n来统计,当当前字母不是空格且flag状态标志为0时,则单词数
就加1,将状态标志flag置为1,所以应填:n++。
第二处:当当前字符是空格时,flag状态标志置0,所以应填:0。
第三处:到字符串下一个位置,所以应填:s++。
***************************************************
fun 的功能是:从n(形参)个学生的成绩中统计出低
于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单
元中。
例如,若输入 8 名学生的成绩: 60 72 98 88 64
则低于平均分的学生人数为: 4 (平均分为: )。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <>
#define N 20
int fun ( float *s, int n, float *aver )
{ float ave, t = ;
int count = 0, k, i ;
for ( k = 0 ; k < n ; k++ )
/**************found**************/
t = s[k] ;
ave = t / n ;
for ( i = 0 ; i < n ; i++ )
if ( s[ i ] < ave ) count++ ;
/**************found**************/
*aver = Ave ;
return count ;
}
main()
{ float s[30], aver ;
int m, i ;
printf ( "\nPlease enter m: " ) ; scanf ("%d", &m ) ;
printf ( "\nPlease enter %d mark :\n ", m ) ;
for( i = 0 ; i < m ; i++ ) scanf ( "%f", s + i ) ;
printf( "\nThe number of students : %d \n" , fun ( s, m, &aver ) );
printf( "Ave = %f\n", aver ) ;
}
解题思路:
第一处:应求累加和,而不赋值,所以应改为t+=s[k];。
第二处:ave不需要取地址,直接赋给*aver就可以了。
***************************************************
请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所
指的存储单元中。
例如, 输入如下整数: 876 675 896 101 301 401 980 431 4