zoukankan      html  css  js  c++  java
  • 黑马程序员C++学习笔记

    1.关于if语句使用的逻辑问题【未解决】

    /*这里可以书写多行注释
     版权:copyright*/
    #include<iostream>
    using namespace std;
    
    int main()
    {
        //选择结构 单行if语句
        float score = 0;
        cout << "请输入你的分数" << endl;
        cin >> score;
        cout << "您输入的分数是" << score << endl;
        if (score >= 600)
        {
            cout << "恭喜您考上了一本大学" << endl;
        }
        else if(500 <= score < 600)
        {
            cout << "二本" << endl;
        }
        else if(score > 400)
        {
            cout << "专科" << endl;
        }
        else
        {
            cout << "nothing" << endl;
        }
        
        
    }

    当输入66时,程序输出二本,debug时发现程序直接运行了

    else if(500 <= score < 600)
        {
            cout << "二本" << endl;
        }然后跳出。


    2.结构体的应用案例引发的错误【待排查】

    #include<iostream>
    #include<string>
    using namespace std;
    
    
    //学生的结构体定义
    struct Student
    {
        string sName;
        int score;
    };
    
    //老师的结构体定义
    struct Teacher
    {
        string tName;
        struct Student sArray[5];
    };
    
    //给老师和学生赋值的函数
    void allocateSpace(struct Teacher tArray[], int len)
    {
        string nameSeed = "ABCDE";
        //给老师赋值
        for(int i = 0; i < len; i++ )
        {
            tArray[i].tName = "Teacher_";
            tArray[i].tName += nameSeed[i];
            for (int j = 0; j < 5; j++)
            {
                tArray[i].sArray[j].sName = "Student_";
                tArray[i].sArray[j].sName += nameSeed[j];
                tArray[i].sArray[j].score = 60;
            }    
        }
    }
    
    //打印所有信息
    void printInfo(struct Teacher tArray[], int len)
    {
        string nameSeed = "ABCDE";
        //给老师赋值
        for (int i = 0; i < len; i++)
        {
            cout << "老师姓名:" << tArray[i].tName << endl;  //编译器显示此行引起程序崩溃
            for (int j = 0; j < 5; j++)
            {
                cout << "学生姓名:" << tArray[i].sArray[j].sName << endl
                    << "考试分数:" << tArray[i].sArray[j].score << endl;
            }
        }
    }
    int main()
    {
        //1.创建三名老师的数组
        struct Teacher tArray[3];
        int len = sizeof(tArray) / sizeof(tArray[0]);
        allocateSpace(tArray, len);
        printInfo(tArray, 5);
        system("pause");
        return 0;
    }

     3.C++实现通讯录管理系统

    #include<iostream>
    #include<string>
    using namespace std;
    #define MAX 1000
    
    struct Person
    {
        string m_Name;
        int m_Sex;
        int m_Age;
        string m_Phone;
        string m_Addr;
    };
    
    struct Addressbooks
    {
        struct Person personArray[MAX];
        int m_Size;
    };
    
    
    //显示菜单
    void showMenu()
    {
        cout << "*************************" << endl;
        cout << "*****  1.添加联系人  *****" << endl;
        cout << "*****  2.显示联系人  *****" << endl;
        cout << "*****  3.删除联系人  *****" << endl;
        cout << "*****  4.查找联系人  *****" << endl;
        cout << "*****  5.修改联系人  *****" << endl;
        cout << "*****  6.清空联系人  *****" << endl;
        cout << "*****  7.打开python  *****" << endl;
        cout << "*****  0.退出" << endl;
        cout << "*************************" << endl;
    
    }
    
    
    //添加过程
    void add_person(Addressbooks * abs)
    {
        string name;
        cout << "请输入姓名" << endl;
        cin >> name;
        abs->personArray[abs->m_Size].m_Name = name;
    
        cout << "请输入性别" << endl;
        cout << "1 --- 男" << endl;
        cout << "2 --- 女" << endl;
        int sex = 0;
        while (true)
        {
            cin >> sex;
            if (sex == 1 || sex == 2)
            {
                abs->personArray[abs->m_Size].m_Sex = sex;
                break;
            }
            cout << "输入有误,请重新输入" << endl;
        }
    
    
        cout << "请输入年龄: " << endl;
        int age = 0;
        cin >> age;
        abs->personArray[abs->m_Size].m_Age = age;
    
        cout << "请输入联系电话: " << endl;
        string phone;
        cin >> phone;
        abs->personArray[abs->m_Size].m_Phone = phone;
    
        cout << "请输入家庭住址: " << endl;
        string address;
        cin >> address;
        abs->personArray[abs->m_Size].m_Addr = address;
    
        //更新通信录人数
        abs->m_Size++;
        cout << "添加成功" << endl;
    }
    
    //1.添加联系人
    void addPreson(Addressbooks* abs)
    {
        
        //判断通信录是否已满,如果满了就不再添加
        if (abs->m_Size == MAX)
        {
            cout << "通信录已满,无法添加!" << endl;
            return;
        }
        else
        {
            add_person(abs);
            system("pause");
            system("cls");
        }
    }
    
    
    //2.显示所有的联系人
    void showPerson(Addressbooks* abs)
    { 
    //判断通信录中人数是否为0,如果为0,提示记录为空
    //如果不为0,显示记录的联系人信息
    if (abs->m_Size == 0)
    {
        cout << "当前记录为空" << endl;
    }
    else
    {
        for (int i = 0; i < abs->m_Size; i++)
        {
            cout << "姓名:" << abs->personArray[i].m_Name << endl;
            cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "":"")<< endl;
            cout << "年龄:" << abs->personArray[i].m_Age << endl;
            cout << "电话:" << abs->personArray[i].m_Phone<< endl;
            cout << "地址:" << abs->personArray[i].m_Addr << endl;
            cout << endl;
        }
    }
        system("pause");
        system("cls");
    }
    
    
    //检测联系人是否存在,如果存在,返回联系人所在数组中的具体位置,不存在返回-1
    //参数一 通信录  参数二 对比姓名
    int isExist(Addressbooks * abs, string name)
    {
        for (int i = 0; i < abs->m_Size; i++)
        {
            if (abs->personArray[i].m_Name == name)
            {
                return i;
            }
        }
        return -1; //如果遍历结束都没有找到,返回-1
    }
    
    
    
    //3.删除指定的联系人
    void deletePerson(Addressbooks* abs)
    {
        cout << "请输入您要删除的联系人" << endl;
        string name;
        cin >> name;
    
        //ret == -1 未查到
        //ret != -1 查到了
        int ret = isExist(abs, name);
        if (ret != -1)
        {
            for (int i = ret; i < abs->m_Size; i++)
            {
                //数据前移
                abs->personArray[i] = abs->personArray[i + 1];
            }
            cout << "删除成功!" << endl;
        }
        else
        {
            cout << "查无此人" << endl;
        }
        system("pause");
        system("cls");
    }
    
    
    //4.查找指定的联系人信息
    void findPerson(Addressbooks* abs)
    {
        cout << "请输入您要查找的联系人" << endl;
        string name;
        cin >> name;
    
        //判断指定的联系人是否存在通信录中
        int ret = isExist(abs, name);
        if (ret != -1)
        {
            cout << "姓名:" << abs->personArray[ret].m_Name << endl;
            cout << "性别:" << (abs->personArray[ret].m_Sex == 1 ? "" : "") << endl;
            cout << "年龄:" << abs->personArray[ret].m_Age << endl;
            cout << "电话:" << abs->personArray[ret].m_Phone << endl;
            cout << "地址:" << abs->personArray[ret].m_Addr << endl;
            cout << endl;
        }
        else
        {
            cout << "查无此人" << endl;
        }
        system("pause");
        system("cls");
    }
    
    
    //5.修改指定联系人
    void modifyPerson(Addressbooks * abs)
    {
        cout << "请输入您要修改的联系人" << endl;
        string name;
        cin >> name;
    
        int ret = isExist(abs, name);
    
            if (ret != -1)
            {
                abs->m_Size = ret;
                add_person(abs);
                cout << "修改成功!" << endl;
            }
            else
            {
                cout << "查无此人" << endl;
            }
            system("pause");
            system("cls");
    
    }
    
    
    //6.清空联系人
    void cleanPerson(Addressbooks* abs)
    {
        cout << "该操作会删除全部联系人,是否确认清空?(y/n)" << endl;
        while (true)
        {
            int choose;
            cin >> choose;
            if (choose == 1 || choose == 2)
            {
                if (choose == 1)
                {
                    abs->m_Size = 0;
                    cout << "通讯录已清空!" << endl;
                }
                else
                {
                    cout << "已取消删除!" << endl;
                }
                break;
            }
            else
            {
                cout << "输入有误,请重新输入" << endl;
            }
    
        }
    
        system("pause");
        system("cls");
    }
    
    
    
    
    int main()
    {
        //创建通信录结构体变量
        Addressbooks abs;
        //初始化通信录中当前人员个数
        abs.m_Size = 0;
        int select = 0; //创建用户选择输入变量
        while (true)
        {
            showMenu();
            cin >> select;
            switch (select)
            {
            case 1:
                addPreson(&abs);  //利用地址传递,可以修改实参
                break;
            case 2:
                showPerson(&abs);
                break;
            case 3:
                deletePerson(&abs);
                break;
            case 4:
                findPerson(&abs);
                break;
            case 5:
                modifyPerson(&abs);
                break;
            case 6:
                cleanPerson(&abs);
                break;
            case 7:
                system("python");
            case 0:
                cout << "欢迎下次使用" << endl;
                system("pause");
                return 0;
                break;
            default:
                break;
            }
        }
    
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    Docker概念学习系列之详谈Docker 的核心组件与概念(5)
    全网最详细的如何在谷歌浏览器里正确下载并安装Postman【一款功能强大的网页调试与发送网页HTTP请求的Chrome插件】(图文详解)
    全网最详细的一款满足多台电脑共用一个鼠标和键盘的工具Synergy(图文详解)
    [转]华为开发者联盟开放的服务
    [转]英语发音规则---E字母常见的发音组合有哪些
    [转]【信息系统项目管理师】重点整理:高项知识地图
    [转]【信息系统项目管理师】高项案例分析攻略
    [转]【信息系统项目管理师】案例分析记忆题
    [转]850 Basic English words
    [转]信息系统项目管理师计算题汇总
  • 原文地址:https://www.cnblogs.com/lijitao/p/12272711.html
Copyright © 2011-2022 走看看