那位大神帮忙修改C语言程序!!!急急!!!(有关文件查找系统!)

#include<stdio.h>
//#include<malloc.h>
#include<string.h>
//#define LEN sizeof(struct student)
struct student
{
long int num;
char name[20];
char jp[20];
struct student *next;
};

//int n=0;
void isearch(struct student*head)
{
long num;
struct student *p1;
int c=0;
p1=head;
scanf("%ld",&num);
for(p1=head;p1!=NULL;p1=p1->next)
{
if(num=p1->num)
{
c=c+1;
printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jp);
}
}
}
void nsearch(struct student*head)
{
char name[20];
struct student *p1;
int c=0;
p1=head;
printf("请输入要查询学生的姓名:");
scanf("%s",name);
for(p1=head;p1!=NULL;p1=p1->next) /*直到末尾*/
{
if(strcmp(name,p1->name)==0)
{
c=c+1;
printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jp);
}
}
}

void jsearch(struct student*head)
{
char jg[20];
struct student *p1;
int c=0;
p1=head;
printf("请输入要查询学生的籍贯:");
scanf("%s",jg);
for(p1=head;p1!=NULL;p1=p1->next)
{
if(strcmp(jg,p1->jg)==0)
{
c=c+1;
printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jp);
}
}
}

void search (struct student*head) /*查询数据*/
{
int a;
for(;a>=-1||a<4;)
{
printf("\n 欢迎来到查找信息系统,请选择:\n");
printf("\n 0. 退出 ");
printf("\n 1. 按学生学号查询\n");
printf("\n 2. 按学生姓名查询\n");
printf("\n 3. 按学生籍贯查询\n");
printf(" 请输入0~3的数:");
scanf("%d",&a);
//clrecr();

switch(a)
{case 0:printf("感谢您的使用!");break;
case 1:isearch(head);break;
case 2:nsearch(head);break;
case 3:jsearch(head);break;
default:printf("没有该同学信息!\n");break;
}
}
}

void main()
{
struct student *head;
int a;
for(;a>=-1||a<5;)
{printf("\n 欢迎来到学生管理系统~~~\n");
printf(" \n 菜单\n");
printf(" \n 0.退出\n");
printf(" \n 1.输入\n");
printf(" \n 2.读取数据\n");
printf(" \n 3.查询数据\n");
printf(" \n 4.删除和更新\n");
printf(" \n 请输入你要选择的项目~!\n");
scanf("%d",&a);
//clrscr();
}
switch(a)
{
case 0:printf("感谢使用该系统,欢迎再次使用~");
//case 1:head=creat();break;
//case 2:loadf();break;
case 3:search(head);break;
//case 4:head=manage(head);break;
default:printf("输入错误,请再次输入!:");break;
}
}

:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\1.c(63) : error C2039: 'jg' : is not a member of 'student'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\1.c(7) : see declaration of 'student'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\1.c(63) : error C2198: 'strcmp' : too few actual parameters
Error executing cl.exe.
1.obj - 2 error(s), 0 warning(s)

第1个回答  2013-03-14
说得很清楚啊

#include<stdio.h>
//#include<malloc.h>
#include<string.h>
//#define LEN sizeof(struct student)
struct student
{
long int num;
char name[20];
char jp[20];
struct student *next;
};

//int n=0;
void isearch(struct student*head)
{
long num;
struct student *p1;
int c=0;
p1=head;
scanf("%ld",&num);
for(p1=head;p1!=NULL;p1=p1->next)
{
if(num=p1->num)
{
c=c+1;
printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jp);
}
}
}
void nsearch(struct student*head)
{
char name[20];
struct student *p1;
int c=0;
p1=head;
printf("请输入要查询学生的姓名:");
scanf("%s",name);
for(p1=head;p1!=NULL;p1=p1->next) /*直到末尾*/
{
if(strcmp(name,p1->name)==0)
{
c=c+1;
printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jp);
}
}
}

void jsearch(struct student*head)
{
char jg[20];
struct student *p1;
int c=0;
p1=head;
printf("请输入要查询学生的籍贯:");
scanf("%s",jg);
for(p1=head;p1!=NULL;p1=p1->next)
{
if(strcmp(jg,p1->jg)==0) //改成p1->jp
{
c=c+1;
printf("%ld\t%s\t\t%s\n",p1->num,p1->name,p1->jp);
}
}
}

void search (struct student*head) /*查询数据*/
{
int a;
for(;a>=-1||a<4;)
{
printf("\n 欢迎来到查找信息系统,请选择:\n");
printf("\n 0. 退出 ");
printf("\n 1. 按学生学号查询\n");
printf("\n 2. 按学生姓名查询\n");
printf("\n 3. 按学生籍贯查询\n");
printf(" 请输入0~3的数:");
scanf("%d",&a);
//clrecr();

switch(a)
{case 0:printf("感谢您的使用!");break;
case 1:isearch(head);break;
case 2:nsearch(head);break;
case 3:jsearch(head);break;
default:printf("没有该同学信息!\n");break;
}
}
}

void main()
{
struct student *head;
int a;
for(;a>=-1||a<5;)
{printf("\n 欢迎来到学生管理系统~~~\n");
printf(" \n 菜单\n");
printf(" \n 0.退出\n");
printf(" \n 1.输入\n");
printf(" \n 2.读取数据\n");
printf(" \n 3.查询数据\n");
printf(" \n 4.删除和更新\n");
printf(" \n 请输入你要选择的项目~!\n");
scanf("%d",&a);
//clrscr();
}
switch(a)
{
case 0:printf("感谢使用该系统,欢迎再次使用~");
//case 1:head=creat();break;
//case 2:loadf();break;
case 3:search(head);break;
//case 4:head=manage(head);break;
default:printf("输入错误,请再次输入!:");break;
}
}追问

case 3:search(head);break;
这个地方又出现错误..是不是要改成
case 3:head=search;break; ????

追答

case 3:search(head);break; 不要改,没有错啊
看附近有没有错误?

main函数里面的a没有初始化,进入不了for循环,所以后面的switch判断也是错误的,所以加一个a=0;
还有你的search函数里面也一样

本回答被提问者采纳
第2个回答  2013-03-14
第一个问题:jg应该是你手误吧,student的成员是jp
你改过来再贴新的问题
相似回答
大家正在搜