| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 529 人关注过本帖
标题:大仙们来看看小弟的程序错哪了
只看楼主 加入收藏
xueshukai
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-1-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
大仙们来看看小弟的程序错哪了
//***********************
//学生信息管理系统
//***********************
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define null 0
#define max 65536
static int n;
///*********************
// 图书结构体
//*********************
typedef struct
{
 char num[20];               //学号
 char name[20];               //姓名
 char addr[30];              //学院         
}
datatype;
datatype *x[max];              //定义两个指针数组
datatype *p;
//*****************************
//图书功能函数列表
//*****************************
void redo();                              //主递归函数
void creatlist(datatype *x[]);      //学生建立函数      
int menu_select();                        //功能菜单函数
void  find(datatype *x[],int n);          //查找函数
void delnode(datatype *x[]);              //插入函数
void printlist(datatype *x[]);            //显示函数
//*************************
//功能菜单函数                           
//*************************
int menu_select()
{
 int i;
 printf("   欢迎学生信息管理系统!\n");
 printf("===========================\n");
 printf("   1. 学生信息的采集\n");
 printf("   2. 新信息的插入\n");
 printf("   3. 学生信息的查询\n");
 printf("   4. 信息的删除\n");
 printf("   5. 信息的显示\n");
 printf("   0. 退出管理系统\n");
 printf("===========================\n");
 printf("   请选择0-5: ");
 scanf("%d",&i);
 while(i<0||i>5)
 {
  printf("\n\t输入出错,重选0-5: ");
  scanf("%d",&i);
 }
     return i;
}
//*****************************
//主递归函数程序
//*****************************
void redo()
{
 int i=0,j,n1,k=0,flage;
 for( ; ;)
 {
 switch( menu_select())
  {
  case 1:                                  //选项1的实现
   printf("***********************\n");
   printf("*     学生信息的建立   *\n");            
   printf("***********************\n");
   creatlist(x);
         break;
  case 2:                                  //选项2的实现
   printf("***********************\n");
   printf("*   新学生信息的添加  *\n");        
   printf("***********************\n");
            printf(" 插入的个数:");            
   scanf("%d",&n1);                      //输入插入新学生的个数
   for(i=0;i<n1;i++)
   {
    flage=0;
             p=(datatype *)malloc(sizeof(datatype));   //分配一个节点空间
       printf(" 姓名: ");
       scanf("%s",p->name);                      //输入插入学生的姓名
   
   
      if(flage==0)                           
      {
       n++;
                printf(" 第 %d 个学生数据:\n",n);     //插入新学生
                p=(datatype *)malloc(sizeof(datatype));
                x[n-1]=p;
                printf(" 姓名:");                     
                scanf("%s",x[n-1]->name);            //输入姓名  gets(*x[n-1].name)
                      printf(" 学号:");
                scanf(" %s",x[n-1]->num);            //输入学号
                printf(" 学院:");
                scanf(" %s",x[n-1]->addr);           // 输入学院
      }
   }
   break;
  case 3:
   printf("***********************\n");
   printf("*   学生信息的查询    *\n");      
   printf("***********************\n");
   find(x,n);
   break;
  case 4:
   printf("************************\n");
   printf("*    学生信息的删除    *\n");
   printf("************************\n");
   delnode(x);
   break;
  case 5:
   printf("************************\n");
   printf("*     学生信息的显示   *\n");
   printf("************************\n");
   printlist(x);
   break;
  case 0:
   printf("\t  谢谢使用,再见! \n");
   return;
  }
 }
//*************************
//主函数程序                             
//*************************
void main ()
{
 redo();                                     //调用主递归函数
}
//********************************
// 建立链表学生建造函数                           
//********************************
void  creatlist(datatype *x[])
{
 int i;
    printf(" 请输入要建立学生信息的个数:");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
    printf(" 第 %d 个学生数据:\n",i+1);
       p=(datatype *)malloc(sizeof(datatype));   //分配一个节点空间
    x[i]=p;
          printf(" 姓名:");                          //输入图书各项内容
    scanf("%s",x[i]->name);
          printf(" 学号:");
    scanf(" %s",x[i]->num);
    printf(" 学院:");
    scanf(" %s",x[i]->addr);
   
 }
}
//**********************************
// 查找函数程序                                 
//*********************************
void  find(datatype *x[],int n)
{
 
 char num[10];
 char name[9];
 int t,i;
 printf("=================\n");                //输出查找方式
 printf("  1.按学号查询  \n");
 printf("  2.按姓名查询  \n");
 printf("=================\n");
 printf("  请选择 : ");
    scanf("%d",&t);                              //输入选择信息
    if(t==1)                                    
 {
  printf(" 请输入要查找者的编号: ");
  scanf("%s",num);                         //输入学号                          
  for(i=0;i<n;i++)
  {
            if(strcmp(x[i]->num,num)==0)           //调用strcmp函数
   {               
    printf(" 学号      姓名      学院   \n");             //输出要查询学生的信息
    printf(" %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
   }
   else
    continue;
  }
 }
 else
 {
  printf("  请输入要查询的姓名: ");
  scanf("%s",name);                      // 输入姓名
        for(i=0;i<n;i++)
   {
               if(strcmp(x[i]->name,name)==0)
      {
                printf("学号      姓名      学院 \n");                      //输出要查询书的信息
       printf("  %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
      }
      else
       continue;
    }
 }
}
//******************************
//删除函数程序
//******************************
void delnode(datatype *x[])
{
    char num1[10],name1[10];                //定义两个字符数组
 int i,j,m=1,p;
 printf(" 1.按学号删除\n");              //输出选择方式
 printf(" 2.按姓名删除\n");
 printf(" 3.返回\n");
 printf(" 请选择:\n");
 scanf("%d",&p);                         //输入选择信息
 if(p>3||p<1)
 {
  printf(" 您的输入有误,请重新输入!\n");
  scanf("%d",&p);                             //重新输入选择信息
 }
 switch(p)                                 //实现删除程序
 {
    case 1:
        printf("  输入要删除学生的学号:\n");
        scanf(" %s",num1);
        for(i=0;i<n;i++)
     {
         if(strcmp(x[i]->num,num1)==0)               //调用strcmp函数
      {
           m=0;
           n--;
           for(j=i;j<n;j++)
           x[j]=x[j+1];                       //将该学生信息删除
                 printf(" 该学生信息已删除!\n");
      }
     }
        if(m==1)
           printf(" 没有这样的的学生信息\n");
        break;
    case 2:
     printf("  输入要删除学生的名字:\n");
     scanf("%s",&name1);
     for(i=0;i<n;i++)
     {
      if(strcmp(x[i]->name,name1)==0)             //调用strcmp函数
      {
       m=0;
       n--;
       for(j=i;j<n;j++)                         //将该学生信息删除
        x[j]=x[j+1];
       printf(" 该学生信息已删除!\n");
      }
     }
     if(m==1)
      printf(" 没有这样的的学生信息\n");
        break;
    case 3:
     break;
   
 }
}
//**************************************
// 输出程序
//**************************************
void printlist(datatype *x[])
{
 int i;
    printf("学号      姓名      学院\n");               //输出学生各项信息
 for(i=0;i<n;i++)
 {
  printf("  %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
 }
 printf("===============================================\n");
}


错误信息是这样的
D:\VC6\MyProjects\学生信息2\a.c(126) : error C2143: syntax error : missing ';' before 'type'
执行 cl.exe 时出错.
搜索更多相关主题的帖子: 结构体 null 学生 姓名 
2011-01-07 14:16
xueshukai
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-1-7
收藏
得分:0 
没有人吗。。
2011-01-07 14:25
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:20 
程序代码:
//***********************
//学生信息管理系统
//***********************
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define null 0
#define max 65536
static int n;
///*********************
// 图书结构体
//*********************
typedef struct
{
char num[20];               //学号
char name[20];               //姓名
char addr[30];              //学院         
}
datatype;
datatype *x[max];              //定义两个指针数组
datatype *p;
//*****************************
//图书功能函数列表
//*****************************
void redo();                              //主递归函数
void creatlist(datatype *x[]);      //学生建立函数      
int menu_select();                        //功能菜单函数
void  find(datatype *x[],int n);          //查找函数
void delnode(datatype *x[]);              //插入函数
void printlist(datatype *x[]);            //显示函数
//*************************
//功能菜单函数                           
//*************************
int menu_select()
{
int i;
printf("   欢迎学生信息管理系统!\n");
printf("===========================\n");
printf("   1. 学生信息的采集\n");
printf("   2. 新信息的插入\n");
printf("   3. 学生信息的查询\n");
printf("   4. 信息的删除\n");
printf("   5. 信息的显示\n");
printf("   0. 退出管理系统\n");
printf("===========================\n");
printf("   请选择0-5: ");
scanf("%d",&i);
while(i<0||i>5)
{
  printf("\n\t输入出错,重选0-5: ");
  scanf("%d",&i);
}
     return i;
}
//*****************************
//主递归函数程序
//*****************************
void redo()
{
int i=0,j,n1,k=0,flage;
for( ; ;)
{
switch( menu_select())
  {
  case 1:                                  //选项1的实现
   printf("***********************\n");
   printf("*     学生信息的建立   *\n");            
   printf("***********************\n");
   creatlist(x);
         break;
  case 2:                                  //选项2的实现
   printf("***********************\n");
   printf("*   新学生信息的添加  *\n");       
   printf("***********************\n");
            printf(" 插入的个数:");            
   scanf("%d",&n1);                      //输入插入新学生的个数
   for(i=0;i<n1;i++)
   {
    flage=0;
             p=(datatype *)malloc(sizeof(datatype));   //分配一个节点空间
       printf(" 姓名: ");
       scanf("%s",p->name);                      //输入插入学生的姓名
   
   
      if(flage==0)                           
      {
       n++;
                printf(" 第 %d 个学生数据:\n",n);     //插入新学生
                p=(datatype *)malloc(sizeof(datatype));
                x[n-1]=p;
                printf(" 姓名:");                     
                scanf("%s",x[n-1]->name);            //输入姓名  gets(*x[n-1].name)
                      printf(" 学号:");
                scanf(" %s",x[n-1]->num);            //输入学号
                printf(" 学院:");
                scanf(" %s",x[n-1]->addr);           // 输入学院
      }
   }
   break;
  case 3:
   printf("***********************\n");
   printf("*   学生信息的查询    *\n");     
   printf("***********************\n");
   find(x,n);
   break;
  case 4:
   printf("************************\n");
   printf("*    学生信息的删除    *\n");
   printf("************************\n");
   delnode(x);
   break;
  case 5:
   printf("************************\n");
   printf("*     学生信息的显示   *\n");
   printf("************************\n");
   printlist(x);
   break;
  case 0:
   printf("\t  谢谢使用,再见! \n");
   return;
  }
}
}
//*************************
//主函数程序                            
//*************************
void main ()
{
redo();                                     //调用主递归函数
}
//********************************
// 建立链表学生建造函数                          
//********************************
void  creatlist(datatype *x[])
{
int i;
    printf(" 请输入要建立学生信息的个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
    printf(" 第 %d 个学生数据:\n",i+1);
       p=(datatype *)malloc(sizeof(datatype));   //分配一个节点空间
    x[i]=p;
          printf(" 姓名:");                          //输入图书各项内容
    scanf("%s",x[i]->name);
          printf(" 学号:");
    scanf(" %s",x[i]->num);
    printf(" 学院:");
    scanf(" %s",x[i]->addr);
   
}
}
//**********************************
// 查找函数程序                                
//*********************************
void  find(datatype *x[],int n)
{

char num[10];
char name[9];
int t,i;
printf("=================\n");                //输出查找方式
printf("  1.按学号查询  \n");
printf("  2.按姓名查询  \n");
printf("=================\n");
printf("  请选择 : ");
    scanf("%d",&t);                              //输入选择信息
    if(t==1)                                   
{
  printf(" 请输入要查找者的编号: ");
  scanf("%s",num);                         //输入学号                         
  for(i=0;i<n;i++)
  {
            if(strcmp(x[i]->num,num)==0)           //调用strcmp函数
   {               
    printf(" 学号      姓名      学院   \n");             //输出要查询学生的信息
    printf(" %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
   }
   else
    continue;
  }
}
else
{
  printf("  请输入要查询的姓名: ");
  scanf("%s",name);                      // 输入姓名
        for(i=0;i<n;i++)
   {
               if(strcmp(x[i]->name,name)==0)
      {
                printf("学号      姓名      学院 \n");                      //输出要查询书的信息
       printf("  %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
      }
      else
       continue;
    }
}
}
//******************************
//删除函数程序
//******************************
void delnode(datatype *x[])
{
    char num1[10],name1[10];                //定义两个字符数组
int i,j,m=1,p;
printf(" 1.按学号删除\n");              //输出选择方式
printf(" 2.按姓名删除\n");
printf(" 3.返回\n");
printf(" 请选择:\n");
scanf("%d",&p);                         //输入选择信息
if(p>3||p<1)
{
  printf(" 您的输入有误,请重新输入!\n");
  scanf("%d",&p);                             //重新输入选择信息
}
switch(p)                                 //实现删除程序
{
    case 1:
        printf("  输入要删除学生的学号:\n");
        scanf(" %s",num1);
        for(i=0;i<n;i++)
     {
         if(strcmp(x[i]->num,num1)==0)               //调用strcmp函数
      {
           m=0;
           n--;
           for(j=i;j<n;j++)
           x[j]=x[j+1];                       //将该学生信息删除
                 printf(" 该学生信息已删除!\n");
      }
     }
        if(m==1)
           printf(" 没有这样的的学生信息\n");
        break;
    case 2:
     printf("  输入要删除学生的名字:\n");
     scanf("%s",&name1);
     for(i=0;i<n;i++)
     {
      if(strcmp(x[i]->name,name1)==0)             //调用strcmp函数
      {
       m=0;
       n--;
       for(j=i;j<n;j++)                         //将该学生信息删除
        x[j]=x[j+1];
       printf(" 该学生信息已删除!\n");
      }
     }
     if(m==1)
      printf(" 没有这样的的学生信息\n");
        break;
    case 3:
     break;
  
}
}
//**************************************
// 输出程序
//**************************************
void printlist(datatype *x[])
{
int i;
    printf("学号      姓名      学院\n");               //输出学生各项信息
for(i=0;i<n;i++)
{
  printf("  %-10s%-10s%-10s%\n",x[i]->num,x[i]->name,x[i]->addr);
}
printf("===============================================\n");
}

PS:少了}

小代码,大智慧
2011-01-07 14:36
xueshukai
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-1-7
收藏
得分:0 
太感谢了,终于好了。就是没找到哪里少了大括号
2011-01-07 14:42
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
你用那个编译器,我用VS2010不错,当然同经验有关系.

小代码,大智慧
2011-01-07 14:44
xueshukai
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-1-7
收藏
得分:0 
嗯,这个问题困惑了一个多小时。我用的vc6.0,你那个win7能用不
2011-01-07 14:52
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
应该可以,不过我用XP,起码语法检查功能,写错有提示

[ 本帖最后由 点线面 于 2011-1-7 15:01 编辑 ]

小代码,大智慧
2011-01-07 14:59
xueshukai
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-1-7
收藏
得分:0 
嗯,我试试
2011-01-07 15:03
劣质数轴
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:89
专家分:163
注 册:2010-11-19
收藏
得分:0 
个人经验,VC和VS的debug的能力都很不错的……
其实还推荐一个code::blocks,免费开源,有汉化的编译器。支持语法高亮显示,比如点一个大括号会高亮显示与之相匹配的大括号。体积不大,个人感觉比较好用……

PS这个是LZ的C语言课程设计?怎么那么多课程设计都是这个题目?

[ 本帖最后由 劣质数轴 于 2011-1-8 01:45 编辑 ]
2011-01-08 01:43
快速回复:大仙们来看看小弟的程序错哪了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025630 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved