給定程式中,函式fun的功能是:在形參s所指字串中尋找與引數c相同的字元,並在其後插入一個與之相同的字元,若找不到相同的字元則函式不做任何處理。
例如,s所指字串為:baacda,c中的字元為:a,執行後s所指字串為:baaaacdaa。
請在程式的下劃線處填入正確的內容並把下劃線刪除,使程式得出正確的結果。
不得增行或刪行,也不得更改程式的結構!
給定源程式:
#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;
}