例如,s所指字符串为:baacda,c中的字符为:a,执行后s所指字符串为:baaaacdaa。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的.BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
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]!=’�’) 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(" The string: %s ",s);
printf(" Input a character: "); scanf("%c",&c);
fun(s,c);
printf(" The result is: %s ",s);
}
解题思路:
第一处:在for循环中终止值要判断字符串是否结束符,所以应填:’�’。
第二处:n用于统计参数c后还有多少个字符,要对其进行初始化,所以应填:0。
第三处:要求插入相同的字符c,所以应填:c。
在主函数中从键盘输入若干个数放入数组中, 用0结束输入并放在最后一个元素中。给定程序MODI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。
例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,
则程序的运行结果为:19.250000。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
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( " Please enter some data (end with 0): " );
do
{ scanf("%d", &x[i]); }
while (x[i++] != 0);
printf("%f ", 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
float fun(int n)
{
}
main()
{ int n; float s;
printf(" Please enter N:"); scanf("%d", &n);
s = fun(n);
printf("the result is: %f ", 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;
}
1.
2.
3.
4.
5.
6.
7.
8.