张飞马超
2022-01-01 20:25
采纳率: 100%
浏览 59

语法错误说:种类前少一个分号,但是我觉得我并没有错

VC++ 6.0 C语言问题
报错语法错误,说我种类前少一个分号,但是我看报错的那一行并没有错呀,该定义的都在最开始的地方定义了,唯一需要分号的就是在结尾,但是结尾我已经打了呀,其他地方好像并没有需要封号的地方。

img


以下是代码:

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
struct canhui//定义结构体
    {
        char name[40];
        char tel[11];
        char id[18];
        char unit[60];
        char room[6];
    }huiyuan;

int MENU()//第6组总领菜单,包含3大题
{
    printf("**************************************************\n");
    printf("          《第6组    参会人员管理系统》            \n");
    printf("                                                  \n");
    printf("                1.勾股数                          \n");
    printf("                2.大赛现场统分                    \n");
    printf("                3.参会人员管理系统                \n");//4.看书上的班级管理系统3.0以及相关知识点
    printf("                4.退出                            \n");
    printf("                                                  \n");
    printf("           请选择对应序号查看相应问题求解         \n");
    printf("**************************************************\n");
    printf("                                                  \n");
    }



void gougushu(int a,int b)//给定区间,三循环穷举求勾股数
{
    int x,y,z;
    for(x=a;x<=b;x++)
        for(y=a;y<=b;y++)
            for(z=a;z<=b;z++)
            {
                if(x*x+y*y==z*z&&x<=y&&x<z&&y<z)
                    printf("%d*%d+%d*%d=%d*%d\n",x,x,y,y,z,z);
            }
}


void daoli_gougushu(int a,int b)//给定区间,三循环穷举求勾股数
{
    int x,y,z;
    for(z=a;z<=b;z++)
        for(y=a;y<=b;y++)
            for(x=a;x<=b;x++)
            {
                if((x*x+y*y)*z*z==x*x*y*y&&x>y&&y>z&&x>z)
                    printf("1/(%d*%d)+1/(%d*%d)=1/(%d*%d)\n",x,x,y,y,z,z);
            }
}



int max,min;
int max2[20],min2[20];
void max_min(int a[20][20],int p,int q)//求二维数组每一行的最大值和最小值,并分别存入最大值数组和最小值数组
{
    int i,j;
    for(j=0;j<p;j++)
    {for(i=0;i<q;i++)
        {
            if(a[j][i]>max)
                max=a[j][i];
            if(a[j][i]<min)
                min=a[j][i];
            max2[j]=max;
            min2[j]=min;
        }
    }
}






void menu()//第三题的菜单
{
    printf("*******************************************************\n");
    printf("                    《参会人员管理系统》               \n");
    printf("                                                       \n");
    printf("                1.查找某个参会人员的房间号             \n");
    printf("                2.修改某个参会人员的房间号             \n");
    printf("                3.删除某个参会人员的相关信息           \n");
    printf("                4.插入某个参会人员的相关信息           \n");
    printf("                5.统计某指定单位的参会人员人数         \n");
    printf("                6.退出                                 \n");
    printf("                                                       \n");
    printf("*******************************************************\n");
    printf("                                                  \n");
    }


void searchByID(struct canhui huiyuan[20],int m)//对应第三题的第2问,查找房间号
{
    
    char ID[20];
    int i;
    int counter=0;
    scanf("%s",&ID);
    if(m!=0)
    {
        printf("请输入要查询会员的身份证号码");
        scanf("%s",&ID);
        printf("姓名    电话     单位     房间号\n");
        for(i=0;i<m;i++)
        {
            if(strcmp(huiyuan[i].id,ID)==0)
            {   
                //判断名字是否相同,相同则输出人员信息
                printf("%s\t",huiyuan[i].name);
                printf("%s\t",huiyuan[i].tel);
                printf("%s\t",huiyuan[i].unit);
                printf("%s\t",huiyuan[i].room);
                printf("\n");
                counter++;
            }
   
        }
    if(counter==0) //查找的人还没参会
    printf("\n%s 这个人没有参会!\n",ID);
  
    }
 else
  printf("无人参会\n"); 
}


void edit(struct canhui huiyuan[],int m)//对应第三题的第3问,修改信息
{
    char room_num[10];
    int i,k;
    if(m!=0)
    {
        printf("输入要修改参会人员的房间号:");
        scanf("%s",&room_num);
        for(i=0;i<m;i++)
        {
            if(strcmp(huiyuan[i].room,room_num)==0)
                {
                    printf("请选择你的房间号:");
                    scanf("%s",&room_num);
                    for(k=0;k<m;k++)
                        {   
                            if(k==i) continue; //可以选择原来的房间
            if(strcmp(room_num,huiyuan[k].room)==0)//申请的房间已经有人
                                {   
                                    printf("你选择的房间已满,请选择其他房间\n");
                                    printf("请重新选择你的房间号:");
                                    scanf("%s",&room_num); //提示选择别的空房间
                                    k=-1; //为检验新的房间是否为空作准备
                                }
                        }
                }
        }
    }
}


int Delete(struct canhui huiyuan[],int m)//对应第三题第4问,删除数据
{
    int i,k;
    int counter=m;
    char room_num[10];
    if(m!=0)
    {
        printf("请你选择要删除参会人员房间的号码:");
        scanf("%s",&room_num);
        for(i=0;i<m;i++)
        {
            if(strcmp(huiyuan[i].room,room_num)==0)//删除人员
                {   
                    for(k=i;k<m-1;k++)
                    huiyuan[k]=huiyuan[k+1]; //把该人员的信息覆盖掉
                    printf("删除成功!!!");
                    m--;   
                }
        }
        if(counter==0) 
        printf("你要删除的人还没有参会!\n"); 
    }
    else
    printf("没有人员参会!\n");
    return m;
}

int tongji(struct canhui huiyuan[],int m)
{
    int i;
    int counter=0;
    char uname[20];
    scanf("%s",&uname);
    if(m!=0)
    {
        printf("请输入要统计的单位名称");
        scanf("%s",&uname);
        for(i=0;i<m;i++)
        {
            if(strcmp(huiyuan[i].unit,uname)==0)//判断名字是否相同,相同则输出人员信息
                counter++;
   
        }
    printf("\n%d人\n",counter);
    }
 else
  printf("无人参会\n"); 
}


int main()//主函数
{
    int m;
    int sum=0;
    int ti_hao;
    int a,b,x,y,z;
    int n,i,j,pinfen[20][20],zuizhongfen[20],t,xuanshou_biaohao[20],d,e;
    int xuhao,counter,ID[20];

    struct canhui huiyuan[40];
    char xuanshou_bianhao[20];
    printf("               欢迎来到第6组题目                  \n");
    
    while(1)
    {
    MENU();//第6组总领菜单,包含3大题
    scanf("%d",&ti_hao);//输入题号查看相应问题求解
    switch(ti_hao)
    {
        case 1:printf("\n你选择了问题 一\n");
               biaohao1://做标记,方便goto跳转
               printf("(1)输入区间【a,b】可求出该范围内所有勾股数组 \n");
               printf("请输入a=");
               scanf("%d",&a);
               printf("请输入b=");
               scanf("%d",&b);
               if(a>=b)//输入的区间需符合要求
               {
                    printf("\n区间输入错误,请重新输入!\n");
                    goto biaohao1;
               }
               gougushu(a,b);//用于寻找勾股数的函数
               printf("第一问第1小题求解完成!\n");
               //1.做一个判定,若无输出,则输出无结果2.若输入小数,负数如何反映,反正考虑输入情况!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
               biaohao2://做标记,方便goto跳转
               printf("\n(2)输入区间【a,b】可求出该范围内所有的倒立勾股数组\n");
               printf("请输入a=");
               scanf("%d",&a);
               printf("请输入b=");
               scanf("%d",&b);
               if(a>=b)//输入的区间需符合要求
               {
                    printf("\n区间输入错误,请重新输入!\n");
                    goto biaohao2;
               }
               daoli_gougushu(a,b);//用于寻找倒立勾股数的函数
               printf("第一问第2小题求解完成!\n");
               break;//3.完成后反应?
        case 2:printf("\n你选择了问题 二\n");
               //5.过程操作可视化
               printf("某大奖赛有n个选手参赛,m(m>2)个评委为依次参赛的选手评判打分:最高10分,最低0分。\n");
               printf("统分规则:每个选手所得m个评分中,去掉一个最高分和一个最低分,然后将计算的平均值作为最后得分。\n");
               printf("根据n个选手的最后得分,从高到低排出名次,以便确定获奖名单。\n");
               printf("\n");
               printf("请确定参赛选手人数n和评委人数m\n");
               printf("选手人数n=");
               scanf("%d",&n);
               printf("评委人数m=");
               scanf("%d",&m);
               for(i=0;i<=n-1;i++)
                   xuanshou_bianhao[i]=65+i;
               printf("\n%d名参赛选手依次编号为:A",n);
               for(a=66;a<=64+n;a++)
                   printf(",%c",a);
               printf("\n");
               printf("\n请依次输入参赛选手的评委打分\n");
               for(i=0;i<=n-1;i++)
               {
                    printf("第%d个选手评分:",i+1);
                    for(j=0;j<=m-1;j++)
                        scanf("%d",&pinfen[i][j]);
               }//8.scanf无法同tab结束输入
               printf("\n输入数据如下:\n");
               for(i=0;i<=n-1;i++)
               {
                    printf("第%d个选手评分    ",i+1);
                    for(j=0;j<=m-1;j++)
                        printf("%-5d",pinfen[i][j]);//i选手j
                    printf("\n");
               }//9.输入结果可视化?
               for(i=0;i<n;i++)
               {for(j=0;j<m;j++)
                       sum=pinfen[i][j]+sum;
                zuizhongfen[i]=sum;
                sum=0;}

                max_min(pinfen,n,m);

                for(i=0;i<n;i++)
                    zuizhongfen[i]=(zuizhongfen[i]-max2[i]-min2[i])/(m-2);

                for(i=0;i<n;i++)
                    for(j=0;j<n-i;j++)
                    {
                        if(zuizhongfen[j]>zuizhongfen[j+1])
                        {
                            e=zuizhongfen[j+1];
                            zuizhongfen[j+1]=zuizhongfen[j];
                            zuizhongfen[j]=e;

                            d=xuanshou_biaohao[j+1];
                            xuanshou_biaohao[j+1]=xuanshou_biaohao[j];
                            xuanshou_biaohao[j]=d;
                        }
                    }
                printf("结果如下\n");
                for(i=0;i<n;i++)
                    printf("%c%d\t",xuanshou_biaohao[i],zuizhongfen[i]);
               break;
        case 3:while(1)
               {
                    printf("你选择了题目 3\n");
                    printf("请输入参会人员人数:");
                    scanf("%d",&m);//参会人数
                    printf("请依次输入参会人员信息:\n");
                    for(i=0;i<m;i++)
                    {
                        printf("姓名:");
                            scanf("%s",&huiyuan[i].name);
                        printf("电话:");
                            scanf("%s",&huiyuan[i].tel);
                        printf("身份证号码:");
                            scanf("%s",&huiyuan[i].id);
                        printf("单位:");
                            scanf("%s",&huiyuan[i].unit);
                        printf("房间号:");
                            scanf("%s",&huiyuan[i].room);
                    }
                    menu();
                    scanf("%d",&xuhao);
                    switch(xuhao)
                    {
                    case 1:void searchByID(struct canhui huiyuan[20],m);
                           break;
                    case 2:edit(huiyuan,m);break;
                    case 3:m=Delete(huiyuan,m);break;
                    case 4:for(m=0;huiyuan[m].name!=0;m++);
                           printf("请输入相关信息");
                           scanf("%s",&huiyuan[m+1].name);
                           scanf("%s",&huiyuan[m+1].tel);
                           scanf("%s",&huiyuan[m+1].id);
                           scanf("%s",&huiyuan[m+1].unit);
                           scanf("%s",&huiyuan[m+1].room);
                           break;
                    case 5:tongji(huiyuan,m);
                           break;
                    case 6:exit (0);break;
                }
               break;
        case 4:exit(0);break;
        default:printf("错误!");//6.循环输入或选择?
                //7.输入出错如何反映
                break;
    }
    }
}
}


  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • 最佳回答

    发完整代码出来看看,现在代码不完整,看不到问题。

    评论
    解决 无用
    打赏 举报 编辑记录
查看更多回答(1条)