第100套:
给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。
例如,s所指字符串为:baacda,c中的字符为:a,执行后s所指字符串为:baaaacdaa。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h> void fun(char *s, char c) {int i, j, n; for(i=0; s[i]!=___1___ ; i++) if(s[i]==c) {n=___2___ ; while(s[i+1+n]!='\0') n++; for(j=i+n+1; j>i; j--) s[j+1]=s[j]; s[j+1]=___3___ ; i=i+1; } } main() {char s[80]="baacda", c; printf("\nThe string: %s\n",s); printf("\nInput a character: "); scanf("%c",&c); fun(s,c); printf("\nThe result is: %s\n",s); }
解题思路:
第一处:在for循环中终止值要判断字符串是否结束符,所以应填:’\0’。
第二处:n用于统计参数c后还有多少个字符,要对其进行初始化,所以应填:0。
第三处:要求插入相同的字符c,所以应填:c。
在主函数中从键盘输入若干个数放入数组中, 用0结束输入并放在最后一个元素中。给定程序MODI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。
例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,
则程序的运行结果为:19.250000。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h> double fun ( int x[]) {int sum = 0.0; int c=0, i=0; while (x[i] != 0) {if (x[i] > 0) {sum += x[i]; c++; } i++; } sum \= c; return sum; } main( ) {int x[1000]; int i=0; printf( "\nPlease enter some data (end with 0): " ); do {scanf("%d", &x[i]); } while (x[i++] != 0); printf("%f\n", fun ( x )); }
解题思路:
第一处:由于sum是存放实数值,因此不能定义为整型,所以应改为double sum=0.0;或float
sum=0.0;。
第二处:除的运算符是“/”。
编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
1 1 1
S=1 + ── + ─── + … + ──────
1+2 1+2+3 1+2+3+…+n
例如:若n的值为11时,函数的值为:1.833333
注意: 部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include <stdio.h> float fun(int n) {} main() {int n; float s; printf("\nPlease enter N:"); scanf("%d", &n); s = fun(n); printf("the result is: %f\n", s); NONO(); }
解题思路:
本题是根据给定的公式计算结果。使用for循环语句依次求出每一项的值,分别进行累加并把结果存入变量s中,最后返回s。
参考答案:
float fun(int n) {int i,j,t; float s=0; for(i=1;i<=n;i++) {t=0; for(j=1;j<=i;j++) t+=j; s=s+1./t; } return s; }