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