VC++ 6.0 C语言问题
报错语法错误,说我种类前少一个分号,但是我看报错的那一行并没有错呀,该定义的都在最开始的地方定义了,唯一需要分号的就是在结尾,但是结尾我已经打了呀,其他地方好像并没有需要封号的地方。
以下是代码:
#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;
}
}
}
}