指针,链表不会用,只能这样写了,结构体数组引用错误,希望各位大侠指教!
#include<stdio.h>#include<string.h>
struct student
{
int num;
char name[20];
char sex;
int date;
int l;
}; //定义结构体。
int main()
{
void head(); //声明界面函数。
int find(struct student a[],int n); //声明查找函数。
int add(struct student a[],int n); //声明添加函数。
int delate(struct student a[],int n); //声明删除函数。
int altet(struct student a[],int n); //声明修改函数。
int print(struct student a[],int n); //声明打印函数。
struct student a[50]={{1110,"zhangsan",'m',19920423,1234593},{2201,"lisi",'m',19921102,3847294},
{1293,"laoxie",'m',19910221,2938263},{2736,"xiening",'w',19920530,3847292}}; //定义结构体数组。
int b,d=1; //d,i,j 控制循环,b控制选择,f查找,n标记数组号。
do
{
void head();
scanf("%d",&b); //输入选择的功能。
switch (b)
{
case 1: find(a,50);break;
case 2: add(a,50);break;
case 3: delate(a,50);break;
case 4: altet(a,50);break;
case 5: print(a,50);break;
default: d=0;
} //调用各功能函数。
}
while(d==1);
printf("谢谢使用!!!");
return 0;
}
void head() //定义界面函数。
{
printf("\t\t欢迎使用同学录系统\n");
printf("*****************************************\n");
printf("请选择服务:\n");
printf("\n\n\n");
printf("\t1、查找 2、添加 3、删除 4、修改 5、打印 6、退出");
printf("\n\n\n");
printf("*****************************************\n");
}
int find(struct student a[],int n) //定义查找函数。实参是struct student a[50]这个结构体数组。
{ //这里的struct student a[],是形参。
int i; //局部变量。
char name[20]; //定义数组,用于存放输入的名字。
printf("请输入要查找的人的姓名:");
scanf("%s",name);
for(i=0;a[i].name!='\0';i++)
{
if(strcmp(name,a[i].name)==0) //这里比较输入的名字与原来定义的结构体数组中的名字,等于零则
{ //输出相应的信息。
printf("******************************************\n");
printf("您要查找的人的信息如下:\n\n\n");
printf("\t学号\t姓名\t性别\t生日\t\t联系方式\n");
printf("\t%d\t%s\t%c\t%d\t%d\n",a[i].num,a[i].name,a[i].sex,
a[i].date,a[i].l);
printf("\n\n\n");
printf("谢谢使用!!");
printf("******************************************\n");
}
else
{
printf("*******************************************\n");
printf("\n\n\n");
printf("\t\t没找到您要找的人!\n");
printf("\t谢谢使用!!\n\n");
printf("*******************************************\n");
}
}
return 0;
}
int add(struct student a[],int n) //定义添加函数。
{
printf("*******************************************\n");
printf("请输入同学的信息:");
int i;
for(i=0;i<n;i++)
{
if(a[i]='\0') //查找到第一个没存放数据的数组单元,然后在其后的数组单元进行输入添加。(这里的a[i]='\0'错了,但平时普通数组这样处理没错,下
{ // 面也有类似的错误,不知为何,各位网友给讲解讲解。谢谢!)
printf("输入学号:");!!!
scanf("%d",&a[i].num);
printf("输入姓名:");
scanf("%s",a[i].name);
getchar(); //接收enter键的输入结束对名字的输入。
printf("输入性别:");
scanf("%c",&a[i].sex);
printf("输入生日:");
scanf("%d",&a[i].date);
printf("输入联系方式:");
scanf("%d",&a[i].l);
break;
}
}
printf("\n添加成功!!! 谢谢使用!!!\n");
printf("********************************************\n");
return 0;
}
int delate(struct student a[],int n) // 定义删除函数。。
{
int i,j;
char name[20];
printf("**********************************************\n");
printf("请输入要删除的人的名字:");
scanf("%s",name);
getchar();
for(i=0;a[i]!='\0';i++)
{
if(strcmp(a[i].name,name)==0)//首先查找,找到了对应的人所在的数组单元
{ //然后其后面的数组单元的值往前移
j=i; //用for循环控制前移。
for(;j<n;j++)
{
a[j]=a[j+1];
}
printf("删除成功!谢谢使用!!");
}
else printf("没找到这个人。谢谢使用!!");
}
printf("**********************************************\n");
return 0;
}
int altet(struct student a[],int n) //定义修改函数。
{
int i;
char name[20];
printf("*********************************************\n");
printf("请输入您要修改的人的名字:");
scanf("%s",name);
for(i=0;a[i]!='\0';i++)
{
if(strcmp(a[i].name,name)==0) //首先查找,再处理。
{
printf("请重新输入同学的信息:\n");
printf("学号:");
scanf("%d",&a[i].num);
printf("姓名:");
scanf("%s",a[i].name);
getchar();
printf("性别:");
scanf("%c",&a[i].sex);
printf("生日:");
scanf("%d",&a[i].date);
printf("联系方式:");
scanf("%d",&a[i].l);
printf("修改成功!! 谢谢使用!!");
}
else printf("没找到您要找的人。谢谢使用!!");
}
printf("********************************************\n");
return 0;
}
int print(struct student a[],int n) //定义打印函数。
{
int i;
printf("*********************************************\n");
printf("所有同学的信息如下:");
printf("\t学号\t姓名\t性别\t生日\t\t联系方式");
for(i=0;a[i]!='\0';i++)
{
printf("\t%d\t%s\t%c\t%d\t%d",a[i].num,a[i].name,a[i].sex,a[i].date,a[i].l);
printf("\n");
}
printf("*********************************************\n");
return 0;
}
它的错误是这样的。按平时数组这没错阿!
--------------------Configuration: 同学录 - Win32 Debug--------------------
Compiling...
同学录.cpp
K:\我的同学录\同学录.cpp(87) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'const char' (or there is no acceptable conversion)
K:\我的同学录\同学录.cpp(115) : error C2676: binary '!=' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
K:\我的同学录\同学录.cpp(139) : error C2676: binary '!=' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
K:\我的同学录\同学录.cpp(168) : error C2676: binary '!=' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
执行 cl.exe 时出错.
同学录.obj - 1 error(s), 0 warning(s)
首先谢谢各位网友了!!