这是我写的第一个有自己想发的程序,就是写个和手机上的电话本的功能差不多的程序,但是有个问题我不知道怎么解决,请大家帮忙并支持我。
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
void main()
{
cout < < "1: 添加电话号码 " < <endl;
cout < < "2: 显示所有电话号码 " < <endl;
cout < < "3: 搜索电话号码 " < <endl;
cout < < "4: 修改电话号码 " < <endl;
cout < < "5: 删除电话号码 " < <endl;
cout < < "6: 删除所有 " < <endl;
typedef map <string ,string> ::value_type valType;
map <string,string> trans_map;
cout < < " 请选择 1--6 : " ;
int number;
cin> > number;
while(number)
{
if(number==1)
{
cout < < "\t1:添加电话 ";
cout < < "\t0:退出 ";
int num;
cout < < "\t 请选择 ";
cin> > num;
while(num)
{
if(num==1)
{
cout < < "\t请输入名字: " ;
string name ;
cin> > name;
cout < < "\t请输入电话号码: ";
string a ;
cin> > a;
trans_map[name]=a;
cout < < "\t1:添加电话 ";
cout < < "\t0:退出 ";
cout < < "\t 请选择 ";
cin> > num;
}
if(num==0)
{
cout < < " 请选择 1--6 : " ;
cin> > number;
}
}
}
else
if(number==2)
{
int num ;
cout < < " 1:搜索 ";
cout < < " 2:退出 ";
cout < < "请选择 ";
while(num )
{
if(num ==1)
{
cout < < " 输入要搜索的人名: ";
string name;
cin> > name;
cout < < "\n\t电话: ";
cout < <trans_map[name] < <endl;
cout < < " 1:搜索 ";
cout < < " 2:退出 ";
cout < < "请选择 ";
cin> > num ;
}
if(num ==0)
{
cout < < " 请选择 1--6 : " ;
cin> > number;
}
}
}
}
}
这是我写的第一个有自己想发的程序,就是写个和手机上的电话本的功能差不多的程序,但是有个问题我不知道怎么解决,请大家帮忙并支持我。谢谢
问题是: 当运行输入1时,
输出是: 1:添加电话 0:退出 请选择
然后再输入 0时
问题就出来了。为什么不回到 请选择 1--6
而输出的还是 1:添加电话 0:退出 请选择
这是为什么啊???
[解决办法]
没法和你说,你继续学习。
[解决办法]
你的cout < < " 请选择 1--6 : "在两处出现,一处在最外层,一处在while(num)里面。
最外层的只会执行一次。while(num)里的只有当num!=0时才会执行。
当用户输完1再输入0时,num是0,所以不会再执行 cout < < " 请选择 1--6 : "。
简单来说,你的程序有逻辑错误。
[解决办法]
鼓励新人
另外 你第一个while把前面的括起来就行了
[解决办法]
只来接分
[解决办法]
没有算法可言,继续努力哦!