首页 > 用户发贴区 > 编程问题提问区 > 帮忙看下这个程序~~~
2008
12-28

帮忙看下这个程序~~~

下面这个程序~我怎么改都不对`大家帮忙搞下~谢谢大家了~


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
struct studentinfo{ //学生的基本信息
       int cnum;
       char name[10];
       float CH,MA,EN;
   
       }stu[N];
struct registerinfo{//注册的信息
 char name[20];
 char password[18];
}reg[20];
 int total=0;
 FILE *rfp;
        FILE *sfp;
       int k;
    int n=0;
    int z;
    char b1[]=”1—-查看所有学生的信息”;
   char b2[]=”2—-根据学号查看学生的信息”;
   char b4[]=”4—-请选择”;
   char b3[]=”3—-退出”;
 
   void lookall();
   void looksomeone();
void zhuce()//注册
{
   


 int i;
    char pass_zc[20]=”",pass2[20]=”";
    char user_zc[20]=”";
 
    while(1)
    { 
      printf(“输入用户名\n”);
      gets(user_zc);
       for(i=0;i<total;i++)
                if (strcmp(reg[i].name,user_zc)!=0)
                    i++;
                else{
                     printf(“用户已存在!”);
                     return;
                }
      strcpy(reg[total].name,user_zc);
     
      printf(“输入口令\n”);
      gets(pass_zc);
      printf(“确认口令\n”);
      gets(pass2);
      if (strcmp(pass_zc,pass2)!=0)
      {
            printf(“口令不一致,重新注册\n”);
            continue;
      }
      else
      {
           
          
            strcpy(reg[total].password,pass_zc);
          
           
            printf(“注册成功\n”);
   if((rfp=fopen(“Registerinfo.txt”,”a+”))==NULL)//将用户写入文件中
 {  printf(“cannot openfile\n”);
 return;
   }
 
   fwrite(&reg[total],sizeof(struct registerinfo),1,rfp);
            total++;
   break;
      }
    }  
}
 void log()//登录
{ int i=0,count=0;
  char user_dl[20]=”";
  char pass_dl[20]=”";


  rfp=fopen(“Registerinfo.dat”,”rb”);
   rewind(rfp);
   for(i=0;i<100;i++)             //从注册文件中进行用户校检
    {  fread(&reg[i].name,20,1,rfp);
     
       fread(&reg[i].password,18,1,rfp);
   
    }
      while(count<=3)
    { 
      printf(“输入用户名\n”);
      gets(user_dl);
      i=0;
      while(i<total)
         if (strcmp(reg[i].name,user_dl)!=0)
            i++;
         else
            break;
      if (i==total)
         {
            printf(“没有这个用户,重新输入\n”);
            count=0;
            continue;
         }
      printf(“输入口令\n”);
      gets(pass_dl);
      fflush(stdin);
      count++;
      if (strcmp(reg[i].password,pass_dl)!=0)
      {
            printf(“口令错误,重新输入\n”);
            continue;
      }
      else
      {
            printf(“登录成功\n”);
            break;
      }   
   }
 }
   void addstu()//这里是加入学生的信息
{   printf(“查看学生信息请登录!”);
     log();
  
    if((sfp=fopen(“stuinfo.txt”,”a+”))==NULL)
     { printf(“cannot open file!”);
        return;
      }
 
    printf(“请输入学生的信息!学生信息包括学生学号、姓名、语、数、外!\n”);
     for(z=0;z<N;z++)
  { printf(“number:\n”);scanf(“%d”,&stu[z].cnum);
       printf(“name:\n”);scanf(“%s”,stu[z].name);
       printf(“yuwen:\n”);scanf(“%f”,&stu[z].CH);
       printf(“shuxue:\n”);scanf(“%f”,&stu[z].MA);
       printf(“english:\n”);scanf(“%f”,&stu[z].EN);
  }
      for(z=0;z<N;z++)
      fwrite(&stu[z],sizeof(struct studentinfo),1,sfp);/*写入文件*/
     rewind(sfp);
     printf(“以下所输入的学生信息\n”);
     for(z=0;z<N;z++)
     { fread(&stu[z],sizeof(struct studentinfo),1,sfp);
       printf(“%4 d%-10s%f %f %f\n”,stu[z].cnum,stu[z].name,stu[z].CH,stu[z].MA,stu[z].EN);
     }
 fclose(sfp);
   }


void lookstu()//查看学生的信息
{   printf(“查看学生信息请登录!”);
        log();
  
  
   printf(“%s\n”,b1);
   printf(“%s\n”,b2);
   printf(“%s\n”,b3);
   printf(“%s”,b4);
   scanf(“%d”,&n);
   switch(n)
   {  
     case 1: lookall();break;
     case 2: looksomeone();break;
     case 3:exit(1);
     default: printf(“选择无效!”);break;
   }
     void lookall()//查看所有的学生信息
   
  { sfp=fopen(“stuinfo.dat”,”rb”);
 
   for(k=0;k<N;k++)
     { fread(&stu[k],sizeof(struct studentinfo),1,sfp);
       printf(“%4d%-10s%f%f%f\n”,stu[k].cnum,stu[k].name,stu[k].CH,stu[k].MA,stu[k].EN);
       }
    fclose(sfp);
   }
   void looksomeone()//查看哪一个人的信息
   {
     int l;
  { 
   sfp=fopen(“stuinfo.dat”,”rb”);
     rewind(sfp);
     printf(“请输入要查的学号:”);
     scanf(“%d”,&l);
     l=26*(l-1);
    fseek(sfp,l+4,0);
    fread(stu[l].name,10,1,sfp);
    fread(&stu[l].CH,4,1,sfp);
    fread(&stu[l].MA,4,1,sfp);
    fread(&stu[l].EN,4,1,sfp);
    printf(“%s %d %d %d\n”,stu[l].name,stu[l].CH,stu[l].MA,stu[l].EN);
    }
  fclose(sfp);


   }
}
void countstu()//对学生数据进行计算
{ printf(“查看学生信息请登录!”);
log();
  int c;
  char c1[]=”1——对每个学生的各科进行求和”;
  char c2[]=”2——求每个学生的平均成绩”;
  char c3[]=”3——请选择”;
  char c4[]=”4——退出”;
 
       printf(“%s\n”,c1);
       printf(“%s\n”,c2);
       printf(“%s\n”,c4);
       printf(“%s”,c3);
     scanf(“%d”,&c);
    fflush(stdin);
   switch(c)
  {    case 1:sumstu();break;
       case 2:avestu();break;
       case 3:exit(1);
       default:printf(“选择无效”);
  }
 void sumstu()//进行和运算
  {   int s,sum[N];
     for(s=0;s<N;s++)
     { fread(&stu[s],sizeof(struct studentinfo),1,sfp);
       printf(“%4d%-10s%f%f%f\n”,stu[s].cnum,stu[s].name,stu[s].CH,stu[s].MA,stu[s].EN);
      }
    for(s=1;s<N;s++)
   sum[s]=stu[s].CH+stu[s].MA+stu[s].EN;
    for(s=1;s<N;s++)
   printf(“第%d个的总分为:%d\n”,s,sum[s]);
  }
void avestu()//进行平均值
  {  for(a=0;a<N;a++)
     { fread(&stu[a],sizeof(struct studentinfo),1,sfp);
       printf(“%4d%-10s%f%f%f\n”,stu[a].cnum,stu[a].name,stu[a].CH,stu[a].MA,stu[a].EN);
     }
     for(a=1;a<N;a++)
     { sum[a]=stu[a].CH+stu[a].MA+stu[a].EN;
       ave[a]=sum[a]/3;
       printf(“第i个人的平均分为:%d\n”,a,ave[a]);
     }
  }
}
main()
{ char a1[]=”1——register”;
  char a2[]=”2——-login”;
 char a3[]=”3——add stuinformation”;
  char a4[]=”4——lookstudentinfo”;
  char a5[]=”5——-countstudentinfo”;
  char a6[]=”0——out”;
  char a7[]=”7——chang one:”;
  
    int i=0;
 void zhuce();
 void log();
 void addstu();
 void lookstu();
 void countstu();
 
    while(1)
    {
       
       printf(“%s\n”,a1);
       printf(“%s\n”,a2);
          printf(“%s\n”,a3);
        printf(“%s\n”,a4);
        printf(“%s\n”,a6);
        printf(“%s”,a7);
        scanf(“%d”,&i);
        fflush(stdin);
        switch(i)
        {
               case 1: zhuce();break;
      case 2: log();break
               case 3: addstu();break;
               case 4: lookstu();break;
       case 5: countstu();break;
                case 0: exit(1);
                default: printf(“选择无效\n”);
        }
    }
}
下面是出错的信息:


:\Documents and Settings\l\桌面\新建文件夹\456.c(167) : error C2143: syntax error : missing ‘;’ before ‘type’
C:\Documents and Settings\l\桌面\新建文件夹\456.c(196) : error C2059: syntax error : ‘}’
C:\Documents and Settings\l\桌面\新建文件夹\456.c(272) : error C2143: syntax error : missing ‘;’ before ‘case’
Error executing cl.exe.


我用的是visual c++的编译器~


帮忙看下这个程序~~~》有 3 条评论

  1. longziyong 说:

    第一个错误456.c(167) : error C2143: syntax error : missing ‘;’ before ‘type’是因为函数“void countstu()//对学生数据进行计算”最后少了一个结束}

  2. longziyong 说:

    第二个错误是因为以下这个函数的花括弧有问题:

    void looksomeone()//查看哪一个人的信息
       {
         int l;
      { 
       sfp=fopen(“stuinfo.dat”,”rb”);
         rewind(sfp);
         printf(“请输入要查的学号:”);
         scanf(“%d”,&l);
         l=26*(l-1);
        fseek(sfp,l+4,0);
        fread(stu[l].name,10,1,sfp);
        fread(&stu[l].CH,4,1,sfp);
        fread(&stu[l].MA,4,1,sfp);
        fread(&stu[l].EN,4,1,sfp);
        printf(“%s %d %d %d\n”,stu[l].name,stu[l].CH,stu[l].MA,stu[l].EN);
        }
      fclose(sfp);

       }
    }

    应更正为:

    void looksomeone()//查看哪一个人的信息
       {
         int l;
       sfp=fopen(“stuinfo.dat”,”rb”);
         rewind(sfp);
         printf(“请输入要查的学号:”);
         scanf(“%d”,&l);
         l=26*(l-1);
        fseek(sfp,l+4,0);
        fread(stu[l].name,10,1,sfp);
        fread(&stu[l].CH,4,1,sfp);
        fread(&stu[l].MA,4,1,sfp);
        fread(&stu[l].EN,4,1,sfp);
        printf(“%s %d %d %d\n”,stu[l].name,stu[l].CH,stu[l].MA,stu[l].EN);
      fclose(sfp);

    }

  3. longziyong 说:

    第三个错误是因为在main函数中case 2: log();break语句最后少了一个分号

留下一个回复