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; }