3. 編程題
學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個,函數(shù)返回分?jǐn)?shù)最低學(xué)生的人數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include
#define N 16
typedef struct
{ char num[10];
int s ;
}STREC;
int fun (STREC *a, STREC *b)
{
}
main ()
{
STREC s[N]={{"GA005",82},{"GA003",75},{"GA002",85},{"GA004",78},
{"GA001",95},{"GA007",62},{"GA008",60},{"GA006",85},
{"GA015",83},{"GA013",94},{"GA012",78},{"GA014",97},
{"GA011",60},{"GA017",65},{"GA018",60},{"GA016",74}};
STREC h[N];
int i, n;
FILE *out;
n=fun(s,h);
printf("The %d lowest score :\n",n);
for (i=0; i printf("%s %4d\n",h[i].num,h[i].s); /*輸出最低分學(xué)生的學(xué)號和成績*/ printf("\n"); out=fopen("out19.dat", "w"); fprintf(out, "%d\n",n); for(i=0; i fprintf(out, "%4d\n ",h[i].s); fclose(out); } 答案及評析: int fun (STREC *a, STREC *b) { int i,j=0,min=a[0].s; for(i=0;i if(min>a[i].s) min=a[i].s; /*找出最小值*/ for(i=0;i if(min==a[i].s) b[j++]=a[i]; /*找出成績與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/ return j; /*返回最低成績的學(xué)生人數(shù)*/ } 【解析】該程序使用循環(huán)嵌套,第1個for語句的作用是找出最小值。第2個循環(huán)的作用是找出與min相等的成績,也即最低成績的學(xué)生記錄,并存入b中。 2011計(jì)算機(jī)等級二級C語言模擬試題及答案匯總 計(jì)算機(jī)等級考試二級C語言歷年真題匯總(2005-2010)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |