2016下半年計算機等級二級C語言上機模擬試題及答案

學識都 人氣:9.27K

給定程序中,函數fun的功能是:在形參s所指字符串中尋找與參數c相同的字符,並在其後插入一個與之相同的字符,若找不到相同的字符則函數不做任何處理。

2016下半年計算機等級二級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;

}