糯米文學吧

位置:首頁 > 計算機 > 計算機二級

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

引導語:計算機上機考試要靈活應變,以下是本站小編分享給大家的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) ;

}