标题:下面代码的结果不知道怎么运行不下去,知道的大神教导下??结果图在下面
只看楼主
krisdei
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2018-4-6
结帖率:50%
已结贴  问题点数:10 回复次数:5 
下面代码的结果不知道怎么运行不下去,知道的大神教导下??结果图在下面
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct
{
    char score;//编号
    char name[10];//姓名
    char num[15];//号码
    char email;//邮箱
    char age[8];//年龄
    char adds[20];//住址
}Person;

Person per[80];
int menu_select()//菜单显示
{
    char c;
    do
    {
        system("cls");
        printf("\t\t********通讯录********\n");
        printf("\t\t*                    *\n");
        printf("\t\t*       1.添加       *\n");
        printf("\t\t*       2.显示       *\n");
        printf("\t\t*       3.删除       *\n");
        printf("\t\t*       4.查询       *\n");
        printf("\t\t*       5.修改       *\n");
        printf("\t\t*       0.退出       *\n");
        printf("\t\t**********************\n");
        printf("\t\t请您选择(0~5)");
        c=getchar();
    }while(c<'0'||c>'5');
     return(c-'0');
}

int Input(Person per[],int n)//添加记录
{
    int i=0;
    char sign,x[10];
    while(sign!='n'&&sign!='N')
    {
        printf("\t编号:");
        scanf("\t%d",&per[n+i].score);
        printf("\t姓名:");
        scanf("\t%s",per[n+i].name);
        printf("\t年龄:");
        scanf("\t%s",per[n+i].age);
        printf("\t电话号码:");
        scanf("\t%s",per[n+i].num);
        printf("\t通讯住址:");
        scanf("\t%s",per[n+i].adds);
        printf("\t电子邮箱:");
        scanf("\t%s",per[n+i].email);

        gets(x);
        printf("\n\t是否继续添加?(Y/N)");
        scanf("\t%c",&sign);
        i++;
    }
    return(n+i);
}

void Display(Person per[],int n)//显示记录
{
    int i;
    printf("-------------------------------------------------\n");//格式
    printf("  编号   姓名   年龄   电话号码   住址    邮箱");
    printf("--------------------------------------------------\n");
    for(i=1;i<n+1;i++)
    {
        printf("%-5d%-8s%-6s%-13s%-15s%-15s",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email);
        if(i>1&&i%10==0)
        {
            printf("\t--------------------------------------------\n");
            printf("\t");
            system("pause");
            printf("\t---------------------------------------------\n");
        }
    }
    printf("-------------------------------------------------\n");
    system("pause");
}


int Delete_a_record(Person per[],int n)//删除记录
{
    char s[20];
    int i=0,j;
    printf("\t请输入想删除记录中的名字:");
    scanf("%s",s);
    while(strcmp(per[i].name,s)!=0&&i<n)
        i++;
    if(i==n)
    {
        printf("\t通讯录中没有此人!\n");
        return(n);
    }
    for(j=i;j<n-1;j++)
    {
        strcpy(per[j].num,per[j+1].num);
        strcpy(per[j].name,per[j+1].name);
        strcpy(per[j].age,per[j+1].age);
        strcpy(per[j].adds,per[j+1].adds);
        per[j].score=per[j+1].score;
    }
    printf("\t\t已经成功删除!\n");
    return(n-1);
}

void Query_a_record(Person per[],int n)//查询记录
{
    int m;
    printf("\t\n请选择查询方式:\n");
    printf("\t|---------------------|\n");
    printf("\t|     1——姓名       |\n");
    printf("\t|     2——电话       |\n");
    printf("\t|     3——年龄       |\n");
    printf("\t|     4——返回       |\n");
    printf("\t|---------------------|\n");
    printf("请选择:");
    scanf("%d",&m);
    while(m!=1&&m!=2&&m!=3&&m!=4)
    {
        printf("输入错误!");
        scanf("%d",&m);
    }
    if(m==1)
    {
        char s[20];
        int i=0;
        printf("\t请输入想查询的姓名:");
        scanf("\t%s",s);
        while(strcmp(per[i].name,s)!=0&&i<n)
            i++;
        if(i==n)
        {
            printf("\t通讯录没有此人\n");
            return;
        }
            printf("\t此人编号:%d\n",per[i].score);
            printf("\t此人年龄:%s\n",per[i].age);
            printf("\t电话号码:%s\n",per[i].num);
            printf("\t通讯地址:%s\n",per[i].adds);
            printf("\t电子邮箱:%s\n",per[i].email);
    }
}

void Change(Person per[],int n)//修改记录
{
    char s[20];
    int i=0;
    printf("\t请输入想修改的记录的名字:");
    scanf("%s",s);
    while(strcmp(per[i].name,s)!=0&&i<n)
        i++;
    if(i==n)
    {
        printf("\t通讯录中没有此人!\n");
        return;
    }
    printf("\t编号:");
    scanf("\t%d",&per[i].score);
    printf("\t姓名:");
    scanf("\t%s",per[i].name);
    printf("\t年龄:");
    scanf("\t%s",per[i].age);
    printf("\t电话号码:");
    scanf("\t%s",per[i].num);
    printf("\t通讯地址:");
    scanf("\t%s",per[i].adds);
    printf("\t电子邮箱:");
    scanf("\t%s",per[i].email);
    printf("\t修改成功!");
}

void main()
{
    int n;
    for(;;)
    {
        switch(menu_select())
        {
        case 1:
            printf("\n\t添加到通讯录\n");
            n=Input(per,n);
            break;

        case 2:
            printf("\n\t\t\t通讯记录表\n");
            Display(per,n);
            break;

        case 3:
            printf("\n\t从通讯录中删除记录\n");
            n=Delete_a_record(per,n);
            break;

        case 4:
            printf("\n\t从通讯录中查找记录\n");
            Query_a_record(per,n);
            printf("\t");
            system("pause");
            break;

        case 5:
            printf("\n\t修改通讯录中的记录\n");
            Change(per,n);
            printf("\t");
            system("pause");
            break;
        case 0:
            printf("\n\t\t谢谢使用,再见!\n");
            printf("\n\t\t");
            system("pause");
            exit(0);
        }
    }
}
搜索更多相关主题的帖子: char int printf 记录 scanf 
2018-06-14 16:16
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:4
帖 子:103
专家分:537
注 册:2018-3-15
得分:5 
你机构体里面
 char email;//邮箱


printf("萌新一枚,请多指教");
2018-06-14 20:29
krisdei
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2018-4-6
得分:0 
回复 2楼 ab1412
不是很懂您的意思,我的这个程序是在按下回车键的时候就不能进行下一步程序选择了
2018-06-14 22:32
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:5 
    char email;//邮箱

不能用 %s
另外
    char sign,x[10];
    while(sign!='n'&&sign!='N')

sign是垃圾值 不能比较

https://zh.
2018-06-14 23:49
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:4
帖 子:103
专家分:537
注 册:2018-3-15
得分:0 
回复 3楼 krisdei
就是说你char email的话你的email值只能输入单个字符,如1,A,@等,应该改成char email[40]等,这样才能接受字符串。

[此贴子已经被作者于2018-6-15 05:53编辑过]


printf("萌新一枚,请多指教");
2018-06-15 05:52
krisdei
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2018-4-6
得分:0 
回复 5楼 ab1412
加了[40]还是错了,大神发一下答案吧,这次课程设计快要交了,找不到哪里错了
2018-06-15 09:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487896-1-1.html




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

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