1>使用菜单实现
2>功能1:完成对学生信息的录入,确定人数,完成输入
3>功能3:输出成绩最高和最低学生的信息
4>功能4:输出学生的总成绩和平局成绩
5>功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能
6>功能6:提示并输入要查要的学生名字,查找该名字是否存在该班级
7>功能0:退出
1 #include<stdio.h>
2 #include<string.h>
3 #define NUM 100
4 struct Stu //自定义结构体
5 {
6 char num[10]; //学号
7 char name[10]; //姓名
8 char sex; //性别
9 int score; //成绩
10
11 };
12 int main(int argc, const char *argv[])
13 {
14 int size=0; //需要录入的学生人数
15 int input=0; //
16 int max=0,min=0,i1=0,i2=0; //max 表示高成绩 min 表示最低成绩
17 //i1表示最好成绩下标,i2表示最差成绩下标
18 int sum_score=0; //sum_score表示总成绩
19 int d=0; //表示选择升序降序
20
21 struct Stu b[NUM]; //创建一个空结构体数组;
22 memset(b,0,sizeof(b)); //数组初始化
23 char show_name[10]={""};
24 while(1)
25 {
26 printf("\t-------------------学生信息管理系统-----------------\n");
27 printf("\t---------------输入1:录入学生信息------------------\n");
28 printf("\t---------------输入2:输出学生信息------------------\n");
29 printf("\t---------------输入3:输出最高和低学生成绩----------\n");
30 printf("\t---------------输入4:输出学生总成绩和平均成绩------\n");
31 printf("\t---------------输入5:对学生成绩进行升降序----------\n");
32 printf("\t---------------输入6:查找学生----------------------\n");
33 printf("\t---------------输入0:退出--------------------------\n"); //菜单
34
35 printf("请输入>>>>>");
36 scanf("%d",&input);
37
38 switch(input)
39 {
40 case 1:
41 printf("请输入需要录入的学生信息人数:");
42 scanf("%d",&size);
43 struct Stu a[NUM];
44 memset(a,0,sizeof(a)); //数组初始化
45 for(int i=0;i<size;i++)
46 {
47 printf("请输入第%d个学生的姓名:",i+1);
48 scanf("%s",a[i].name);
49 printf("请输入第%d个学生的学号:",i+1);
50 scanf("%s",a[i].num);
51 getchar();
52 printf("请输入第%d个学生的性别:",i+1);
53 scanf("%c",&a[i].sex);
54 printf("请输入第%d个学生的成绩:",i+1);
55 scanf("%d",&a[i].score);
56 putchar(10);
57 } //循环录入学生成绩
58 printf("成功录入!\n");
59 break;
60 case 2:
61 printf("-------------学生信息-----------\n");
62 printf("姓名\t学号\t性别\t成绩\n");
63 for(int i=0;i<size;i++)
64 {
65 printf("%s\t%s\t%c\t%d\n",a[i].name,a[i].num,a[i].sex,a[i].score);
66
67 } //循环输出学生成绩
68 break;
69 case 3:
70 /* for(int i=1;i<size;i++)
71 {
72 int j=0;
73 max=a[j].score;
74 if(max<a[i].score);
75 {
76 max=a[i].score;
77 i1=i;
78 }
79 } //遍历找到最高成绩
80 min=a[i2].score;
81 for(int i=1;i<size;i++)
82 {
83 if(min>a[i].score)
84 {
85 min=a[i].score;
86 i2=i;
87 }
88 } */
89 max=a[i1].score;
90 min=a[i2].score;
91 for(int i=1;i<size;i++)
92
93 {
94 if(a[i].score>max)
95 {
96 max=a[i].score;
97 i1=i;
98 } //更新最高成绩
99 if(a[i].score<min)
100 {
101 min=a[i].score;
102 i2=i; //更新最低成绩
103 }
104
105 }
106 printf("------------成绩最高学生信息------------\n");
107 printf("姓名\t学号\t性别\t成绩\n");
108 printf("%s\t%s\t%c\t%d\n",a[i1].name,a[i1].num,a[i1].sex,max);
109 printf("------------成绩最低学生信息------------\n");
110 printf("%s\t%s\t%c\t%d\n",a[i2].name,a[i2].num,a[i2].sex,min);
111 printf("姓名\t学号\t性别\t成绩\n");
112 break;
113
114 case 4:
115 for(int i=0;i<size;i++)
116 {
117 sum_score+=a[i].score;
118 }
119 printf("学生总成绩:%d\t平均成绩:%.2f\n",sum_score,(float)sum_score/size);
120 break;
121 case 5:
122 for(int i=1;i<size;i++)
123 {
124 for(int j=0;j<size-i;j++)
125 {
126 if(a[j].score>a[j+1].score)
127 {
128 int t=a[j].score;
129 a[j].score=a[j+1].score;
130 a[j+1].score=t; //成绩交换
131
132 char q=a[j].sex;
133 a[j].sex=a[j+1].sex;
134 a[j+1].sex=q; //性别交换
135
136 char sw_name[10]="";
137 strcpy(sw_name,a[j].name);
138 strcpy(a[j].name,a[j+1].name);
139 strcpy(a[j+1].name,sw_name); // 名字交换
140
141 char sw_num[10]="";
142 strcpy(sw_num,a[j].num);
143 strcpy(a[j].num,a[j+1].num);
144 strcpy(a[j+1].num,sw_num);//学号交换
145 }
146 }
147 }
148 printf("\t-------------------输入1:将成绩升序,输入学生信息-----------------\n");
149 printf("\t-------------------输入2:将成绩降序,输入学生信息-----------------\n");
150 printf("请输入>>>>");
151 scanf("%d",&d);
152 if(d==1) //选择降序或升序
153 {
154 printf("-------------学生信息-----------\n");
155 printf("姓名\t学号\t性别\t成绩\n");
156 for(int i=0;i<size;i++)
157 {
158 printf("%s\t%s\t%c\t%d\n",a[i].name,a[i].num,a[i].sex,a[i].score);
159 }
160 }
161 else if(d==2)
162 {
163 for(int i=size-1;i>=0;i--)
164 {
165 printf("%s\t%s\t%c\t%d\n",a[i].name,a[i].num,a[i].sex,a[i].score);
166 }
167
168 }
169 else
170 {
171 printf("输入错误!\n");
172 }
173
174 break;
175 case 6:
176 printf("请输入需要查找学生的名字:");
177 scanf("%s",show_name);
178 int i=0;
179 do{
180 if(strcmp(show_name,a[i].name)==0)
181 {
182 printf("该名字在这个班级\n");
183 break;
184 }
185 if(strcmp(show_name,a[i].name)!=0&&i==size-1)
186 {
187 printf("该名字不在这个班级\n"); //查找学生
188 }
189 i++;
190 }while(i<size);
191 break;
192 case 0:
193 break;
194 }
195 }
196 return 0;
197 }
功能1:
功能2:
功能3:
功能4:
功能5:
功能6: