看看下面代码的错误应该如何改正

#include<string.h>


extern int count=0;

void input();
void search();
void alter();
void remove();
void grade();
int menu_select();

struct student;
extern struct student
{

       char name[20];

       char num[20];

       int math,chinese;

       int sum;

}

int main()
{
    struct student stu[100];
    for(;;)
{
   switch(menu_select())
   {
       case 1:
            input();
           break;
       case 2:
            search();
           break;
       case 3:
           alter();
           break;
       case 4:
           remove();
           break;
       case 5:
            grade();
           break;
       case 6:
           printf("Goodbye\n");
           exit(0);

   }
}

    return 0;
}


int menu_select()
{
    char s;
    int cn;
    printf("1. 输入学生成绩信息\n");
    printf("2. 查询学生成绩信息\n");
    printf("3. 删除学生成绩信息\n");
    printf("4. 修改学生成绩信息\n");
    printf("5. 统计学生成绩信息\n");
    printf("6. 退出系统\n");
    printf("Please input 1-6:");

    do
    {
        s=getchar();
        cn=(int)s-48;
    }while(cn<1||cn>6);
    return cn;
}


void input()
{

       int len;

       do

       {
       printf("请输入学生的学号(12位)\n");

       scanf("%s",&stu[count].num);

       len=strlen(stu[count].num);

       }while(len<13);

       printf("请输入学生的姓名\n");
       scanf("%s",&stu[count].name);
       printf("请依次输入学生的数学、语文成绩\n");
       scanf("%d,%d",&stu[count].math,&stu[count].chinese);
       stu[count].sum=stu[count].math+stu[count].chinese;

       count++;

}


void search()
{
       char s[20];

       int j;

       if(count==0)

       {
              printf("当前并未存储学生信息,无法查询");

              return;
       }

       else

       {
              printf("请输入你想查询学生的学号\n");

              scanf("%s",&s);

              fflush(stdin);

              for(j=0;j<count;j++)

              {

                     if(strcmp(stu[j].num,s)==0)

                     {
                            printf("姓名:%s\n",stu[j].name);

                            printf("学号:%s\n",stu[j].num);

                            printf("数学成绩:%d\n",stu[j].math);

                            printf("语文成绩:%d\n",stu[j].chinese);
                     }
              }
       }
}


void alter();
{

       char s[20];

       int j,course;

       if(count==0)

       {

              printf("当前并未存储学生信息,无法修改!");

              return;

       }

       else

       {

              printf("请输入你想要修改的学生学号:\n");

              scanf("%s",&s);

              fflush(stdin);

              for(j=0;j<count;j++)

              {

                     if(strcmp(stu[j].num,s)==0)

                     {

                            printf("请问你要修改哪个课程的成绩:1.数学  2.语文\n");

                            scanf("%d",&course);

                            printf("请输入修改后的成绩:\n");

                            soitch(course)

                            {

case 1:scanf("%d",&stu[j].math);break;

case 2:scanf("%d",&stu[j].chinese;break;

default:printf("无效的选择,请重新输入!\n");break;

                            }

                     }

              }

       }

}


void remove()
{

       int choice;

       if(count==0)

       {

              printf("当前并未存储学生信息,无法删除!\n");

              return;

       }

       else

       {

              int j,index=0,k=count;

              char s[20];

              printf("请输入你想要删除的学生学号:\n");

              scanf("%s",&s);

              fflush(stdin);

              for(j=0;j<count;j++)

              {

                     if(strcmp(stu[j].num,s)==0)

                     {

                            for(j=index;j<count;j++)

                            {

                                   stu[j]=stu[j+1];

                                   count--;

                                   if(count<k)

                                          printf("你已删除成功!\n");

                            }

                            index++;

                     }

              }

       }

}


void grade()
{

       int choice,i,j,k,amount=0,max=0,min=0,index,x=0;
        float pass=0.0;
       printf("请选择要进行统计的课程:1.数学 2.语文\n");
       printf("若想查询总分排名,请输入3\n");

       scanf("%d",&choice);

       switch(choice)

       {

       case 1:
           {    
               min=stu[0].math;
              for(i=0;i<count;i++)

              {
                     amount+=stu[i].math;

                     if(stu[i].math>max)
                        max=stu[i].math;
                    
                     if(stu[i].math<min)
                        min=stu[i].math;
                     
                     if(stu[i].math>=60)
                         x++;
              }

              float average=(float)amount/count;
              pass=(float)x/count;

              printf("数学平均分为:%d\n",average);
              printf("数学最高分为:%d\n",max);
              printf("数学最低分为:%d\n",min);
              printf("数学的及格率为:%d\n",pass);
           }
            break;

       case 2:
           {  
               min=stu[0].chinese;
              for(i=0;i<count;i++)

              {
                     amount+=stu[i].chinese;

                     if(stu[i].math>max)
                        max=stu[i].chinese;
                    
                     if(stu[i].chinese<min)
                        min=stu[i].chinese;
                     
                     if(stu[i].chinese>=60)
                         x++;
              }

              float average=(float)amount/count;
              pass=(float)x/count;

              printf("语文平均分为:%d\n",average);
              printf("语文最高分为:%d\n",max);
              printf("语文最低分为:%d\n",min);
              printf("语文的及格率为:%d\n,pass);
           }
              break;

       case 3:
        {
           for(i=0;i<count;i++)
           {
               i=index;
               for(k=i+1;k<count;k++)
               {
                   if(stu[k].sum>stu[index].sum)
                   {
                        stu[k].sum=j;
                        stu[k].sum=stu[index].sum;
                        stu[index].sum=j;
                   }
               }
           }
           for(i=0;i<count;i++)
           {
               printf("第%d名的总分为:%d\n",i+1,stu[i].sum);
           }
        }break;

       default:
           printf("输入错误!请重新输入!");

      }

错误:
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(28) : error C2628: 'student' followed by 'int' is illegal (did you forget a ';'?)
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(52) : error C2065: 'exit' : undeclared identifier
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(57) : error C2440: 'return' : cannot convert from 'const int' to 'struct student'
        No constructor could take the source type, or constructor overload resolution was ambiguous
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(58) : warning C4508: 'main' : function should return a value; 'void' return type assumed
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(92) : error C2065: 'stu' : undeclared identifier
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(92) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(92) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(94) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(94) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(99) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(99) : error C2228: left of '.name' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(136) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(136) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(139) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(139) : error C2228: left of '.name' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(141) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(141) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(143) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(143) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(145) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(145) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(153) : error C2447: missing function header (old-style formal list?)
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(247) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(247) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(255) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(255) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(255) : error C2106: '=' : left operand must be l-value
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(292) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(292) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(296) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(296) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(298) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(298) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(299) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(299) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(301) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(301) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(302) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(302) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(304) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(304) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(320) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(320) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(324) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(324) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(326) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(326) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(327) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(327) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(329) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(329) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(330) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(330) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(332) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(332) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(342) : error C2001: newline in constant
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(343) : error C2143: syntax error : missing ')' before '}'
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(343) : error C2143: syntax error : missing ';' before '}'
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(355) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(355) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(357) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(357) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(363) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(363) : error C2228: left of '.sum' must have class/struct/union type
执行 cl.exe 时出错.

1、结构体后面没有分号,要加上分号

img

2、stu变量要定义成全局变量,不然其他方法没法访问

img

3、要包含stdio.h头文件,否则找不到stdin变量

img

4、alter方法后面不要加分号,不然就变成了声明,把分号去掉就行

img

5、输入字符串不用取地址,把&去掉

img

6、switch拼错了,chinese后面少了括号

img

7、printf里面少了个双引号

img

8、最后还少了}

img

9、remove可能会和标准库里的remove函数冲突,建议改成remove_stu

img

10、完整代码

#include<string.h>
#include<stdio.h>

extern int count = 0;

void input();
void search();
void alter();
void remove_stu(); //void remove();
void grade();
int menu_select();

struct student;
extern struct student
{

    char name[20];

    char num[20];

    int math, chinese;

    int sum;

};

struct student stu[100];
int main()
{
    for (;;)
    {
        switch (menu_select())
        {
        case 1:
            input();
            break;
        case 2:
            search();
            break;
        case 3:
            alter();
            break;
        case 4:
            remove_stu();
            break;
        case 5:
            grade();
            break;
        case 6:
            printf("Goodbye\n");
            exit(0);

        }
    }

    return 0;
}


int menu_select()
{
    char s;
    int cn;
    printf("1. 输入学生成绩信息\n");
    printf("2. 查询学生成绩信息\n");
    printf("3. 删除学生成绩信息\n");
    printf("4. 修改学生成绩信息\n");
    printf("5. 统计学生成绩信息\n");
    printf("6. 退出系统\n");
    printf("Please input 1-6:");

    do
    {
        s = getchar();
        cn = (int)s - 48;
    } while (cn < 1 || cn>6);
    return cn;
}


void input()
{

    int len;

    do

    {
        printf("请输入学生的学号(12位)\n");

        scanf("%s", &stu[count].num);

        len = strlen(stu[count].num);

    } while (len < 13);

    printf("请输入学生的姓名\n");
    scanf("%s", &stu[count].name);
    printf("请依次输入学生的数学、语文成绩\n");
    scanf("%d,%d", &stu[count].math, &stu[count].chinese);
    stu[count].sum = stu[count].math + stu[count].chinese;

    count++;

}


void search()
{
    char s[20];

    int j;

    if (count == 0)

    {
        printf("当前并未存储学生信息,无法查询");

        return;
    }

    else

    {
        printf("请输入你想查询学生的学号\n");

        scanf("%s", s); //scanf("%s", &s);

        fflush(stdin);

        for (j = 0; j < count; j++)

        {

            if (strcmp(stu[j].num, s) == 0)

            {
                printf("姓名:%s\n", stu[j].name);

                printf("学号:%s\n", stu[j].num);

                printf("数学成绩:%d\n", stu[j].math);

                printf("语文成绩:%d\n", stu[j].chinese);
            }
        }
    }
}


void alter()
{

    char s[20];

    int j, course;

    if (count == 0)

    {

        printf("当前并未存储学生信息,无法修改!");

        return;

    }

    else

    {

        printf("请输入你想要修改的学生学号:\n");

        scanf("%s", &s);

        fflush(stdin);

        for (j = 0; j < count; j++)

        {

            if (strcmp(stu[j].num, s) == 0)

            {

                printf("请问你要修改哪个课程的成绩:1.数学  2.语文\n");

                scanf("%d", &course);

                printf("请输入修改后的成绩:\n");

                switch(course)//soitch(course)

                {

        case 1:scanf("%d", &stu[j].math); break;

        case 2:scanf("%d", &stu[j].chinese); break; //case 2:scanf("%d", &stu[j].chinese; break;

        default:printf("无效的选择,请重新输入!\n"); break;

                }

            }

        }

    }

}


void remove_stu()
{
    int choice;

    if (count == 0)

    {

        printf("当前并未存储学生信息,无法删除!\n");

        return;

    }

    else

    {

        int j, index = 0, k = count;

        char s[20];

        printf("请输入你想要删除的学生学号:\n");

        scanf("%s", &s);

        fflush(stdin);

        for (j = 0; j < count; j++)

        {

            if (strcmp(stu[j].num, s) == 0)

            {

                for (j = index; j < count; j++)

                {

                    stu[j] = stu[j + 1];

                    count--;

                    if (count < k)

                        printf("你已删除成功!\n");

                }

                index++;

            }

        }

    }

}


void grade()
{
    int choice, i, j, k, amount = 0, max = 0, min = 0, index, x = 0;
    float pass = 0.0;
    printf("请选择要进行统计的课程:1.数学 2.语文\n");
    printf("若想查询总分排名,请输入3\n");

    scanf("%d", &choice);

    switch (choice)

    {

    case 1:
    {
        min = stu[0].math;
        for (i = 0; i < count; i++)

        {
            amount += stu[i].math;

            if (stu[i].math > max)
                max = stu[i].math;

            if (stu[i].math < min)
                min = stu[i].math;

            if (stu[i].math >= 60)
                x++;
        }

        float average = (float)amount / count;
        pass = (float)x / count;

        printf("数学平均分为:%d\n", average);
        printf("数学最高分为:%d\n", max);
        printf("数学最低分为:%d\n", min);
        printf("数学的及格率为:%d\n", pass);
    }
    break;

    case 2:
    {
        min = stu[0].chinese;
        for (i = 0; i < count; i++)

        {
            amount += stu[i].chinese;

            if (stu[i].math > max)
                max = stu[i].chinese;

            if (stu[i].chinese < min)
                min = stu[i].chinese;

            if (stu[i].chinese >= 60)
                x++;
        }

        float average = (float)amount / count;
        pass = (float)x / count;

        printf("语文平均分为:%d\n", average);
        printf("语文最高分为:%d\n", max);
        printf("语文最低分为:%d\n", min);
        printf("语文的及格率为:%d\n", pass);//printf("语文的及格率为:%d\n,pass);
    }
    break;
    case 3:
    {
        for (i = 0; i < count; i++)
        {
            i = index;
            for (k = i + 1; k < count; k++)
            {
                if (stu[k].sum > stu[index].sum)
                {
                    stu[k].sum = j;
                    stu[k].sum = stu[index].sum;
                    stu[index].sum = j;
                }
            }
        }
        for (i = 0; i < count; i++)
        {
            printf("第%d名的总分为:%d\n", i + 1, stu[i].sum);
        }
    }break;
    default:
        printf("输入错误!请重新输入!");
    }
}

11、运行截图

img

1、在结构体的位置错了
2、每个方法都要返回。


extern struct student
{
 
       char name[20];
 
       char num[20];
 
       int math,chinese;
 
       int sum;
 
}  ;  /* 这里缺少个 ;分号 */
  • 结构体定义,缺个 ; 号