當前位置:才華齋>計算機>計算機一級>

2016年計算機二級C語言上機試試題及答案

計算機一級 閱讀(2.05W)

  一、程式改錯題(共24分)

2016年計算機二級C語言上機試試題及答案

下列給定程式中,函式proc()的功能是根據整型形參n,計算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值為l0,則應輸出0.817962。

請修改程式中的錯誤,使它能得到正確結果。

注意:不要改動main()函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include

#include

#include

double proc(int n)

{

double y=1.0;

f|****found****

int J=1; .

int i;

for(i=2;i<=n;i++)

{

j=-l*j;//****found****

y+=1/(i*i);

)

return(y);

)

void main()

{

int n=10:

system("CLS"):

printf("nThe result is%lfn",proc(n));

)

  二、程式設計題(共18分)

編寫一個函式,從傳人的M個字元中找出最長的一個字串,並通過形參指標max傳回該串地址(用****作為結束輸入的標誌)。

注意:部分源程式給出如下。

請勿改動main()函式和其他函式中的任何內容,僅在函式proc()的花括號中填人所編寫的`若干語句。

試題程式:

#include

#include

#include

char*proc(char(*a)[81],int num)

{

)

void main()

{

char ss[l0][81],*max;

int n,i=0;

printf("輸入若干個字串:");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")= =0)

{

i++:

gets(ssEi]);

puts(ss[i]);

)

n=i:

max=proe(SS,n);

printf("nmax=%sn",max);

}

  【參考答案及解析

程式改錯題

(1)錯誤:int j=1;正確:double j=1.0;

(2)錯誤:y+=1/(i*i); 正確:y+=j/(i*i);

【解析】由函式proc()可知,變數j的作用是控制每一項符號的變化,並且作為運算的分子,應改為double型變數。因此,“int j=1;”應改為“double j=1.0;”。變數y中存放多項式的值,多項式中的每一項符號由變數j決定。因此,“y+=1/(i*i);”應改為“y+=j/(i*i);”。

程式設計題

char*proc(char(*a)[81],int M)

{

char*max;

int i=0:

max=a[O]:

for(i=0;i  if(strlen(max)  max=a[i];

return max; //返回最長字串的地址

}

【解析】本題首先要定義一個字元指標用於儲存最長的字串,並使其初始值指向第一個字串;再迴圈遍歷字串陣列,通過if語句比較字串的長度,並把最長的字串地址賦給字元指標;最後返回最長字串的地址。