|

楼主 |
发表于 2021-9-3 17:31:53
|
显示全部楼层
- #include <stdio.h>
- int a[100];
- typedef struct{
- int no;
- float sc[3];
- float total;
- int rank;
- int a[100];
- }STU;
- #define N 10
- void input_data(STU s[])
- {
- /********** Begin **********/
- int i;
- for(i=0;i<N;i++)
- {
- scanf("%d %f %f %f",&s[i].no,&s[i].sc[0],&s[i].sc[1],&s[i].sc[2]);
-
- }
- /********** End **********/
- }
- void calculate(STU s[])
- {
- /********** Begin **********/
- int i;
- for(i=0;i<N;i++)
- {
- s[i].total=s[i].sc[0]+s[i].sc[1]+s[i].sc[2];
- }
- /********** End **********/
- }
- void sort_total(STU s[])
- {
- /********** Begin **********/
- int i;
- int j;
- float temp;
- for(i=0;i<N;i++){
- for(j=0;j<N-1-i;j++){
- if(s[j].total<s[j+1].total){
- temp =s[j+1].total;
- s[j+1].total = s[j].total;
- s[j].total = temp;
-
- }
- }
- a[i] = s[j].no;
- //printf("%d\n",s[j].no);
- }
- /********** End **********/
- }
- void add_rank(STU s[])
- {
- /********** Begin **********/
- int i;
- for(i=1;i<N+1;i++)
- {
- s[i].rank = i;
- }
- /********** End **********/
- }
- void print_data(STU s[])
- {
- /********** Begin **********/
-
-
- int i;
- int j;
- printf("学号: 语文: 数学: 英语: 总分: 名次:\n");
- for(i=0;i<N;i++)
- {
-
-
-
- printf("%5d %.1f %.1f %.1f %.1f %6d\n",a[i],s[i].sc[0],s[i].sc[1],s[i].sc[2],s[i].total,s[i].rank+1);
- }
- /********** End **********/
- }
- int main()
- {
- STU s[10];
- input_data(s);
- calculate(s);
- sort_total(s);
- add_rank(s);
- print_data(s);
- return 0;
- }
复制代码 这是我写的,但是不对 |
|