糯米文學吧

位置:首頁 > 計算機 > C語言

計算機二級考試C語言預測上機鞏固試題

C語言1.14W

距離2017年3月計算機等級考試越來越近了,本站小編為大家整理了2017年計算機二級考試C語言預測上機鞏固試題,希望對各位有所幫助!

計算機二級考試C語言預測上機鞏固試題

  一、程序填空題

請補充main()函數,該函數的功能是:如果數組arr的前一個元素比後一個元素小,則把它保存在數組bb中並輸出。

例如,若數組中的元素為:“40,68,62,33,35,52,48,95,66,73”,則輸出:“40,33.35,48,66”。

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

請勿改動函數()main和其他函數中的任何內容,僅在main()函數的橫線上填入所編寫的若干表達式或語句。

試題程序:

#include

#include

世define M 10

void main()

{

int i,n=0;

int arr[M]={40,68,62,33,35,52,48,95,66,73};

int bb[M];

system("CLS");

for(i=0;i<【1】 ;i++)

if(arr[i]   【2】 ;

printf("n***display bb***n"):

for(i=0;i   printf("bb[%d]=%2d”,【3】);

}

  二、程序改錯題

給定程序中,函數proc()的功能是:使數組中的元素的值縮小5倍。

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

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

試題程序:

#include

#include

#include

float m[10];

//****found****

int proc(void)

{

int j;

printf(”In subfunc after callingn”);

for(j=0;j<10;j++)

{

//****found****

printf("%f",m[j]%5);

}

}

void main()

{

int i;

printf("In main before callingn");

for(i=0;i<10;i++)

{

m[i]=i+20:

printf("%f",m[i]);

}

proc();

printf("nln main after callingn");

for(i=0;i<10;i++)

printf("%f",m[i]/5);

}

  三、程序設計題

學生的記錄由學號和成績組成,M名學生的數據已在主函數中放人結構體數組stu中,請編寫函數proc(),其功能是:按分數的高低排列學生的記錄,高分在前。

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

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

試題程序:

#include

#define M l6

typedef struct

{

char num[10];

int s;

}

STREC;

void proc(STREC a[])

{

int i,j;

STREC t:

for(i=1;i   排序*/

for(j=0;j   if(a[j].s   的記錄,高分在

前*/

{t=a[j];a[j]=a[j+1];a[j+1]=t;)

)

void main()

{

STREC stu[M]={{"GA005",85),{"GA003",

76},

{"GA002",59),{"GA004",85},{"GA001",91),

{fIGA007”,72),{"GA008",64),("GA006",87),

{”GAOl5”,"t5},{"GA013",91),{"GA012",64},

{"GA014",91),{"GAO11",66},{"GA017",64),

{¨GA018",64),{¨GA016",72));

int i;

proc(stu);

printf("The data after sorted:n");

for(i一0;i   {

if(i%4==O)

//每行輸出4個學生記錄

printf("n");

printf("%S%4d",stu[i],stu[i].s);

}

printf("n");

}

  上機考試試題答案與解析

一、程序填空題

【1】M-1【2】bb[n++]=arr[i]【3】i,bb[i]

【解析】由整個for循環可知,變量i為數組art的下標,題目中要求取出前一個元素比後一個元素小的元素,所以只需要判斷前M-1個元素即可。因此,【1】處填“M-l”;如果第i個元素比第i+1個元素小,將第i個元素放入數組bb中,因此,【2】處填“bb[n++]=arr[i]”。最後,要輸出數組bb中的每一個元素。因此,【3】處填“i,bb[i]”。

二、程序改錯題

(1)錯誤:int proc(void)

正確:void proc(void)

(2)錯誤:printf("%f",m[j]%5);

正確:printf("%f",m[j]/5);

【解析】由主函數中的函數調用可知,函數proc()沒有返回值。因此,“int proc(void)”應改為“void proc(void)”。題目中要求使數組中元素的值縮小到1/5,而不是對5取餘。因此,“printf("%f",m[j]%5);”應改為“printf("%f",m[j]/5);”。

三、程序設計題

void proc(STREC a[])

{

int i,j;

STREC t:

for(i=1;i  排序

for(j=0;j  if(a[j].s  的記錄,高分在前

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

【解析】要按分數的高低排列學生的記錄,可以使用冒泡排序法。將每一個學生的成績與其他學生的成績相比較,對不符合要求的記錄交換位置。