3.編一個程序,輸入10個學(xué)生的學(xué)號、姓名、3門課程的成績,求出總分最高的學(xué)生姓名并輸出。
【解】類似上一程序,直接給出程序如下:
# include
# include
# define N 10
struct stu {
char no[10];
char name[20];
int score[3];
} students[N],*p, *maxp;
void main()
{ char buf[120]; int maxs;
printf("輸入%d個學(xué)生的編號、姓名、三門課程成績 \n", N);
for(p= students;p< students+N;p++) {
scanf("%s", buf); strncpy(p -> no, buf, 9);
scanf("%s", buf); strncpy( p -> name, buf,19);
scanf("%d%d%d",&p -> score[O], &p -> score[1], &p -> score[2]);
}
for(maxp= p =students, maxs=-1; p< students+N; p++)
if( p -> score[0] + p -> score[1]+p -> score[2]> maxs) {
maxp=p;maxs=p ->score[0]+p -> score[1]+p ->score[2];
}
printf("最高總分的學(xué)生是%s他的總分是 %d \n", maxp -> name, maxs);
}
4.編一個程序,輸入下列學(xué)生成績表中的數(shù)據(jù),并用結(jié)構(gòu)體數(shù)組存放,然后統(tǒng)計并輸出三門課程的名稱和平均分數(shù)。
name foxbase pascal c
wang 98.0 87.0 77.0
qian 90.5 91.0 88.0
sun 74.0 77.5 66.5
li 84.5 64.5 55.0
【解】類似上一程序,直接給出程序如下:
# include
# include
# define N 100
struct stu {
char namep[20];
int foxbase;
int pascal;
int c;
} students[N], *p;
void main ()
{ int n, sf, sb, sc;
char buf[120];
printf("輸入n(< %d) ! \n", N);
do {
scanf("%d", &n);
if(n>0 && n
} while(1);
printf("輸入%d個人的姓名、Foxbase成績、Pascal成績、C成績 \n", n);
for( p= students;p< students+n; p++);
scanf("%s",buf );strncpy(p -> name, buf, 19);
scanf("%d%d%d", &p -> foxbase,&p -> pascal,&p -> c)
}
sf=sb=sc =0;
for( p=students; p
}
printf("Foxbase:%.2f \t Pascal:%.2f \t c:%.2f \n",
(float)sf/n,(float)sb/n,(float)sc/n);
}
更多軟考資料請訪問:考試吧軟件水平考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |