| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 624 人关注过本帖
标题:指针,链表不会用,只能这样写了,结构体数组引用错误,希望各位大侠指教!
只看楼主 加入收藏
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:4 
指针,链表不会用,只能这样写了,结构体数组引用错误,希望各位大侠指教!
#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)





首先谢谢各位网友了!!


   

   





   

   
   


搜索更多相关主题的帖子: 希望 声明 结构体 delate include 
2012-06-02 10:32
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:20 
结构体不能这么操作吧,等号两边数据不匹配

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-06-02 11:00
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 2楼 pauljames
恩,对对!谢谢!!!
2012-06-02 11:11
heifeng2012
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:53
专家分:113
注 册:2012-3-22
收藏
得分:0 
if(a[i]='\0')    这肯定是错的啊,, 这里是判断不是赋值
2012-06-02 12:10
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 4楼 heifeng2012
恩恩,以后注意。谢谢网友提醒。
2012-06-02 21:27
快速回复:指针,链表不会用,只能这样写了,结构体数组引用错误,希望各位大侠指 ...
数据加载中...
 
   



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

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