运行后就只能输入一次,然后就结束运行了,因为name我没有定义成数组,输入 的时候都只输入了一个字符,可还是不行,哥们帮我看看,问题应该在scanf_s附近。
#include<stdio.h>
struct student
{
int num;//学号
char name;//姓名
int wy;//外语
int zz;//政治
int sx;//数学
int zzk;//英语
int max;//总分
char pop;//复试
}stu[5];
void Cal_Mark()
{
int i = 0;
for (i=0;i<5;i++)
{
if (stu[i].wy >= 45 || stu[i].zz >= 45 || stu[i].sx >= 75 || stu[i].zzk >= 75)
{
stu[i].pop = 'P';
}
else
{
stu[i].pop = 'F';
}
}
}
void SelectionSort()
{
struct student *t;
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4 - i; j++)
{
if (stu[j].max < stu[j].max)
{
struct student *p1, *p2;
p1= &stu[j];
p2= &stu[j+1];
t = p1;
p1 = p2;
p2 = t;
}
}
}
}
int main()
{
int i = 0;
printf("请输入学生信息,顺序为|姓名|学号|外语|政治|数学|英语|");
for (i = 0; i < 5; i++)
{
scanf_s("%c%d%d%d%d%d",&stu[i].name, &stu[i].num, &stu[i].wy, &stu[i].zz, &stu[i].sx, &stu[i].zzk);
stu[i].max = stu[i].wy + stu[i].zz + stu[i].sx + stu[i].zzk;
}
Cal_Mark();
SelectionSort();
for (i = 0; i < 5; i++)
{
printf("姓名 学号 外语 政治 数学 英语 总分 复试情况");
printf("%c %d %d %d %d %d %d %c", stu[i].name, stu[i].num, stu[i].wy, stu[i].zz, stu[i].sx, stu[i].zzk, stu[i].max, stu[i].pop);
}
}
稍微修改以下:
#include<stdio.h>
struct student {
int num;//学号
char name[20];//姓名
int wy;//外语
int zz;//语文
int sx;//数学
int zzk;//英语
int max;//总分
char pop;//复试
} stu[5];
void Cal_Mark() {
int i = 0;
for (i = 0; i < 5; i++) {
if (stu[i].wy >= 45 || stu[i].zz >= 45 || stu[i].sx >= 75 || stu[i].zzk >= 75) {
stu[i].pop = 'P';
} else {
stu[i].pop = 'F';
}
}
}
void SelectionSort() {
struct student *t;
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4 - i; j++) {
if (stu[j].max < stu[j].max) {
struct student *p1, *p2;
p1 = &stu[j];
p2 = &stu[j + 1];
t = p1;
p1 = p2;
p2 = t;
}
}
}
}
int main() {
int i = 0;
printf("请输入学生信息,顺序为|姓名|学号|外语|语文|数学|英语|\n");
for (i = 0; i < 5; i++) {
scanf("%s%d%d%d%d%d", stu[i].name, &stu[i].num, &stu[i].wy, &stu[i].zz, &stu[i].sx, &stu[i].zzk);
stu[i].max = stu[i].wy + stu[i].zz + stu[i].sx + stu[i].zzk;
}
Cal_Mark();
SelectionSort();
printf("姓名 学号 外语 语文 数学 英语 总分 复试情况\n");
for (i = 0; i < 5; i++) {
printf("%s %d %d %d %d %d %d %c\n", stu[i].name, stu[i].num, stu[i].wy, stu[i].zz, stu[i].sx, stu[i].zzk, stu[i].max, stu[i].pop);
}
}