weixin_45942111
weixin_45942111
2020-01-31 12:37
采纳率: 25%
浏览 365

c++ 通讯录管理系统有个搞不懂的问题

先是创建了两个结构体,联系人结构体和通讯录结构体,代码如下

#define max 1000
//联系人结构体
struct person 
{
    //姓名
    string name;
    //性别(1.男 2.女)
    int sex;
    //年龄
    int age;
    //家庭住址
    string address;
    //电话号码
    string phoneNumber;
};

//通讯录结构体
struct addressBook 
{
    //通讯录
    person personsArray[max];
    //储存的成员个数
    int number;

};

录入联系人函数代码如下

void addPersons(addressBook* adk ) 
{
    if (adk->number == 1000)    
        cout << "通讯录已满" << endl;
    else
    {
        //输入姓名
        cout << "请输入联系人姓名" << endl;
        cin >> adk->personsArray[adk->number].name;
        //输入性别(1.男 2.女)
        cout << "请输入联系人性别" << endl;
        int sex;
        bool flag = true;
        while (flag == true) 
        {
            cin >> sex;
            if (sex == 1 || sex == 2)
            {
                adk->personsArray[adk->number].sex = sex;
                flag = false;
            }
            else
                cout << "请输入正确的性别" << endl;
        }

        //输入年龄
        cout << "请输入联系人年龄" << endl;
        cin >> adk->personsArray[adk->number].age;
        //输入住址
        cout << "请输入联系人家庭住址" << endl;
        cin >> adk->personsArray[adk->number].address;
        //输入电话号码
        cout << "请输入联系人联系方式" << endl;
        cin >> adk->personsArray[adk->number].phoneNumber;

        cout << "录入成功" << endl;
        adk->number++;
    }

}

如果结构体person中电话号码时int类型,那么在执行完录入函数时会出现系循环,一直重复输出“请输入正确的性别”。
实在是搞不懂,有没有大神帮忙解决下??

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • wlj1234
    wlj1234 2020-02-01 23:37
    已采纳

    类成员number没有初始化,在C语言(.c文件)中会默认给0,而在c++(.CPP文件)中会随机给定一个非常大的值,这个值通常远超过1000。所以会一直输出。

    点赞 评论

相关推荐