給定程序中,函數fun的功能是:在形參s所指字符串中尋找與參數c相同的字符,並在其後插入一個與之相同的字符,若找不到相同的字符則函數不做任何處理。
例如,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;
}