学生信息管理系统运行后出现错误

未提示输入学生人数;反复重复功能1

代码如下:#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define len sizeof (struct student)
#define N 30

typedef struct student
{
char number;
char name[20];
int score[10];
int total;

}student;

void menu();
void add(student stu[],int i,int m); //添加
void output(student stu[],int i,int m); //浏览
void search_by_number(student stu[],int i,int m); //按学号查询信息
void search_by_name(student stu[],int i,int m); //按姓名查询信息
void sortjiang_by_total(student stu[],int i,int m); //按总分降序
void sort_by_name(student stu[],int i,int m); //按姓名排序
void deleted_by_number(student stu[],int i,int m); //给定学号,删除该学生信息
void change_by_number(student stu[],int i,int m); //给定学号,修改该学生信息
void sortsheng_by_total(student stu[],int i,int m); //按总分升序

//主函数
int main()
{
int q,w,m; //记录用户输入的功能选项,人数,科目数量
student stu[w];
int i,j,s; ////i、j作为学生人数和科目门数的循环变量,s为标记变量
P:menu();
printf ("请选择您所需要的功能:");
scanf ("%d",&q);
//查错
if (q<0||q>10)
{
do{

    printf ("请输入正确的功能序号:") ;
    scanf ("%d",&q);
    }while (q<0||q>10);

}
if (q!=1)
    {
        do{
            printf ("请先选择功能1录入学生信息:");
            scanf ("%d",&q);
        }while (q!=1);
    }

if (q==0)
{
    printf ("感谢您使用本系统!再见!");
    exit(0);
}

switch (q)
{
    case 0:
        break;
    case 1:
        if(s==1)                                   //首次录入信息
        printf("请输入学生人数:");
        scanf("%d",&w);
        printf("请输入科目门数:");
        scanf("%d",&m);
        for(i=0;i<w;i++)
        {                               //循环录入学号和姓名
            printf("请请输入学号,姓名,各科成绩:\n");
            scanf("%d",&stu[i].number);
            scanf("%s",stu[i].name);
            for(j=0;j<m;j++)
            {                           //循环录入各科成绩
                scanf("%d",&stu[i].score[j]);
            }
        }
        printf("\n  \n");
        s=0;                                           //记录首次录入信息完毕
        goto P;                                        //回到功能菜单
        if(s==0)
        {                                     //防止用户重复录入
            do
            {
                printf("您已经录入过学生信息啦!\n");
                printf("如想增加学生信息,请选择功能2!");
                printf("\n  \n");
            }while(s!=1);
        goto P;

        }
    case 2:
        add(stu,i,m);    //添加
        i++;
        printf ("\n  \n");
        goto P;
    case 3:
        output(stu,i,m);    //浏览
        printf ("\n  \n");
        goto P;
    case 4:
        search_by_number(stu,i,m);    //按学号查询
        printf ("\n  \n");
        goto P;
    case 5:
        search_by_name(stu,i,m);         //按姓名查询
        printf ("\n  \n");
        goto P;
    case 6:

        sortjiang_by_total(stu,i,m);     //按总分降序
        printf ("\n  \n");
        goto P;
    case 7:
        sort_by_name(stu,i,m);    //按姓名排序
        printf ("\n  \n");
        goto P;
    case 8:
        deleted_by_number(stu,i,m);    //给定学号,删除该学生信息
        printf ("\n  \n");
        goto P;
    case 9:
        change_by_number(stu,i,m);     //给定学号,修改该学生信息
        printf ("\n  \n");
        goto P;
    case 10:
        sortsheng_by_total(stu,i,m);     //按总分升序
        printf ("\n  \n");
        goto P;

}
return 0;

}
void menu()
{

    printf("欢迎登录学生信息管理系统,请选择:\n");
    printf("1.初次录入学生信息\n");
    printf("2.增加一名学生的信息\n");
    printf("3.学生信息浏览\n");
    printf("4.信息查询(按学号查)\n");
    printf("5.信息查询(按姓名查)\n");
    printf("6.信息排序(按总分降序)\n");
    printf("7。信息排序(按姓名排序) \n");
    printf("8.信息删除(给定学号,删除该学生信息)\n");
    printf("9.信息修改(给定学号,修改该学生信息)\n");
    printf("10.信息排序(按学号升序)\n");
    printf("0.退出\n");

}

void add(student stu[],int i,int m) //添加
{
int j;
printf("请输入所添加学生的学号,姓名,各科成绩:\n");
scanf ("%d",&stu[i].number);
scanf ("%s",&stu[i].name);
for(j=0;j<m;j++)
{
scanf ("%f",&stu[i].score[j]);

}

system("pause");

}

void output(student stu[],int i,int m) //浏览
{
int j,r;
for (j=0;j<i;j++)
{
printf ("%d %s",&stu[j].number,&stu[j].name);
for (r=0;r<m;r++)
{
printf ("%d",&stu[j].score[r]);
}
printf ("\n");
}
system("pause");

}

void search_by_number(student stu[],int i,int m) //按学号查询信息
{
int t,j,y=1;
int number;
printf ("请输入您所要查询的学号:");
scanf ("%d",&number);
for (t=0;t<i;t++)
{
if (number==stu[t].number)
{
y=0;
printf ("%d %s",&stu[t].number,&stu[t].name);
for (j=0;j<m;j++)
{
printf ("%d",&stu[t].score[j]);
}
printf ("\n");
}
}
if (y==1)
{
printf ("查无信息!");
}
system("pause");
}

void search_by_name(student stu[],int i,int m) //按姓名查询信息
{
int t,j,y=1;
char name;
printf ("请输入您所要查询的姓名:");
scanf ("%d",&name);
for (t=0;t<i;t++)
{
if (name==stu[t].name[i])
{
y=0;
printf ("%d %s",&stu[t].number,&stu[t].name);
for (j=0;j<m;j++)
{
printf ("%d",&stu[t].score[j]);
}
printf ("\n");
}
}
if (y==1)
{
printf ("查无此人!");
}
system("pause");
}

void sortjiang_by_total(student stu[],int i,int m) //按总分降序
{
student temp;
int o,k;
if(m==-1)
{
for(o=0;o<i;o++)
{
for(k=o+1;k<i;k++)
{
if(stu[k].total>stu[o].total)
{
temp=stu[k];
stu[k]=stu[o];
stu[o]=temp;
}
}

}
for(o=0;o<i;o++)
{
    printf("%s  ",stu[o].name);
    printf("%d\n",stu[o].total);
}
}
else
{
    for(o=0;o<i;o++)
{
    for(k=o+1;k<i;k++)
    {
        if(stu[k].number>stu[o].number)
        {
            temp=stu[k];
            stu[k]=stu[o];
            stu[o]=temp;
        }
    }

}
for(o=0;o<i;o++)
{
    printf("%s  ",stu[o].name);
    printf("%d\n",stu[o].number);
}
}
system("pause");

}

void sort_by_name(student stu[],int i,int m) //按姓名排序
{
int j,h,w;
char k[20];
for(i=0; i<w; i++)
{
scanf("%d\t\t%s\t\t",&stu[i].number,&stu[i].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[i].score[j]);
}
}
strcpy(k,stu[0].name);
for(i=1; i<w; i++)
{
if(strcmp(k,stu[i].name)<0)
strcpy(k,stu[i].name);
}
j=k[i];
printf("%d\t\t%s\t\t",stu[j].number,stu[j].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[j].score[h]);
}
system("pause");
}

void deleted_by_number(student stu[],int i,int m) //给定学号,删除该学生信息
{
int j,h,w,temp=0;
int c;
printf("请输入需要删除的学生信息的学号:\n");
scanf("%d",&c);
for(i=0; i<=w; i++)
{
if(stu[i].number==c)
{
temp=1;
for(j=i; j<w-1; j++)
{
stu[j]=stu[j+1];
}
}
}
if(temp==0)
printf("该学生不存在\n");
if(temp==1)
{
printf("删除成功\n");
w--;
for(i=0; i<w; i++)
{
printf("%d\t\t%s\t\t",stu[j].number,stu[j].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[j].score[h]);
}
}
}
system("pause");
}

void change_by_number(student stu[],int i,int m) //给定学号,修改该学生信息
{
int c,h,w;
printf("请输入你要修改的学生的学号:");
scanf("%d",&c);
for(i=0;i<w;i++)
{
if(c==stu[i].number)
{
printf("请重新录入该学生信息\n");
scanf("%d\t\t%s\t\t",&stu[i].number,&stu[i].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[i].score[h]);
}
}
}
system("pause");
}

void sortsheng_by_total(student stu[],int i,int m)
{
int a,c,j,n,z,k,S;
int sum[S];
int v;
student temp;
for(j=0;j<i;j++){
for(c=0;c<m;c++){
sum[j]+=stu[j].score[c];
}
}
for(n=0;n<i-1;n++){
for(k=n+1;k<i;k++){
if(sum[k]<sum[n]){
temp=stu[k];
stu[k]=stu[n];
stu[n]=temp;
v=sum[k];
sum[k]=sum[n];
sum[n]=v;
}
}
}
for(a=0;a<i;a++){
printf("%d\t\t%s\t\t",stu[a].number,stu[a].name);
for(z=0;z<m;z++){
printf("%d\t",stu[a].score[z]);
}
printf("总分%d\t\t",sum[a]);
printf("\n");
}

}

img

源代码有问题,死雄环。

给你修改位置,有问题可以问。

img

img

运行报了什么错误?没有正确输入功能号吗?