weixin_45942111 2020-01-31 12:37 采纳率: 0%
浏览 439
已采纳

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 2020-02-01 23:37
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿