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

2017計算機二級C語言上機測試題附答案

計算機二級 閱讀(9.51K)

引導語:計算機上機考試要靈活應變,以下是本站小編分享給大家的2017計算機二級C語言上機試題附答案,歡迎測試!

2017計算機二級C語言上機測試題附答案

 1.程式填空

給定程式的功能是判斷字元ch是否與串str中的某個字元相同:若相同,什麼也不做,若不同,則插在串的最後。

請在程式的下劃線處填入正確的內容並把下劃線刪除,使程式得出正確的結果

注意:不得增行或刪行,也不得更改程式的結構!

試題程式:

#include

#include

void fun(char*str, char ch )

{  while ( *str && *str != ch ) str++;

if( *str  1  ch )

{ str[0] =ch;

2  = 0;

}

}

main( )

{  char s[81], c;

printf( "nPlease enter a string:n" ); gets ( s );

printf ("n Please enter the character to search : " );

c = getcharO;

fun( 3  ) ;

printf( "nThe result is %sn", s);

 2.程式修改

【答案】

(1)錯誤:第5行fun(int**a,int m)

正確:fun(int a[][M],Int m)

(2)錯誤:第9行 a[j][k]=k*j;

正確:a[j][k]=(k+1)*(j+1);

【評析】

第5行:第二個形參m是使用者輸入的維數,沒有別的名堂,第一個形參是為了指明在函式fun()中要產生的多維陣列,"**a"是不能正確表示一個多維陣列的',我們應當使用"int a[M][M]"。

第9行:迴圈體的內容是給m維的多維陣列賦值,這個多維陣列在列方向是由1開始的自然數,在行方向上是行首第一數的n倍數,顯然,"a[j][k]=k*j;"不符合題意,我們應當使用"a[j][k]=(k+1)*(j+1);"。

3.程式設計

已知學生的記錄由學號和學習成績構成,N名學生的資料已存入a結構體陣列中。請編寫函式fun,函式的功能是:找出成績最高的學生記錄,通過形參返回主函式(規定只有一個最高分)。已給出函式的首部,請完成該函式。

請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你編寫的若干語句。

試題程式:

#include

#include

#include

#define N 10

typedef struct ss

{ char num[10];int s;} STU;

fun(STU a[],STU *s)

{

}

main()

{STU

a[N]= { {"A01",81}, {"A02",89}, {"A03",66}, {"A04", 87}, {"A05",77}, {"A06",90}, {"A07",79}, {"A08",61}, {"A09",80 }, {"A10",71 }},m;

int i;

elrser();

printf("***** The original data *****n");

for (i=0;i  fun(a,&m);

printf("***** THE RESULT *****n");

printfCThe top : %s, %dn",,m.s);

NON0( );

}

NON0( )

{*本函式用於開啟檔案,輸入 資料,呼叫函式,輸出資料,關閉檔案。*/

FILE *rf, *wf;

STU a[N], m ;

Int i;

rf = fopen("", "r,) ;

wf= fopen("", "w") ;

for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i], &a[i].s) ;

fun(a, &m) ;

fprintf (wf, "The top : %s, %dn", , re.s) ;

fclose(rf) ;

fclose(wf) ;

}