c语言高手帮我看下 反复输入后就回出现错误的现实

2025-12-06 10:11:46
推荐回答(2个)
回答1:

改了一下,看看可以不

#include "stdio.h"
struct student
{
int num;
char name[18];
int score1;
int score2;
int score3;
int mean;
};
void main()
{
struct student f1[30];
struct student f2[30];
int count=1,sxm,z=0,s=0,y=1,d=0,temp=1,man=0;
do{
int i,j,a,b;
char x;
printf("输入学员信息(1)\n 查询学员(2)\n 学员排序(3)\n 删除学员(4)\n 退 出(0)\n\n请按上面的提示输入(0~4):");
scanf("%d",&sxm);
switch(sxm)
{
case 1:
for(i=z;i {
printf("请输入学员信息\n");
printf("\n请输入学号:");
scanf("%d",&f1[i].num);

fflush(stdin);
printf("\n请输入姓名:");
gets(f1[i].name);
fflush(stdin);
printf("\n三门成绩\n");
printf("成绩1:");
scanf("%d",&f1[i].score1);
fflush(stdin);
printf("成绩2:");
scanf("%d",&f1[i].score2);
fflush(stdin);
printf("成绩3:");
scanf("%d",&f1[i].score3);
fflush(stdin);
f1[i].mean=(f1[i].score1+f1[i].score2+f1[i].score3)/3;
count++;
temp++;
man++;
printf("\n\n是否要继续输入学员信息(Y or N)");
x=getchar();
fflush(stdin);
z++;
if(x=='n'||x=='N'){
count=count+1;
z++;
break;
}
if(x=='y'||x=='Y')
continue;
}
break;
case 2:
do{
printf("请输入要查询的学号:");
scanf("%d",&a);
fflush(stdin);
for(i=0;i {
y++;
if(a == f1[i].num)
{
printf("学号:%d 姓名:%s 平均成绩:%d\n\n",f1[i].num,f1[i].name,f1[i].mean);
break;
}
if(y == count)
printf("对不起!您输入的学号不存在,请重新输入。\n\n");
}
break;
}while(1);
break;

case 3:
{

printf("排序后学员信息如下:\n");
fflush(stdin);
for(i=0;i {
for(j=0;j {
if(f1[j].mean>f1[j+1].mean)
{
f2[j]=f1[j+1];
f1[j+1]=f1[j];
f1[j]=f2[j];
}
}
printf("学号:%d 姓名:%s 平均成绩:%d\n\n",f1[j].num,f1[j].name,f1[j].mean);
}
break;
}
case 4:
{
count++;
printf("请输入要删除的学号:");
scanf("%d",&b);
for(i=s;i {
if(f1[i].num==b)
{
for(j=i;j<=count;j++)
{
f1[j]=f1[j+1];
}
}
}
temp--;
z--;

}
break;
case 0:
return;
default:
printf("您输入的有误,请按上面的提示输入:");
break;
}
}while(1);
}

回答2:

问问题的时候最好也把程序要实现的功能写出来,不然鬼知道要改什么啊 !?