c++请帮我看下这个程序,为什么当输入数字的时候输入字母,就会一直循环下去,谢谢

voidn_chars(char,int);voidmain(){inttimes;cout<<"请输入次数";cin>>times;charch;cout<<"请输入字... void n_chars(char ,int);
void main()
{
int times;
cout<<"请输入次数";
cin>>times;
char ch;
cout<<"请输入字符";
cin>>ch;
while(ch!='q')
{
n_chars(ch,times);
cout<<"请输入次数";
cin>>times;
cout<<"请输入字符";
cin>>ch;
}
cout<<"bye";
}
void n_chars(char c,int n)
{
while(n-->0)
cout<<c;
}
为什么一直循环呢?谢谢
如果没有循环的话,该输入数字的时候输入了字母,就没有错误了。还有,为什么输入数字后,没有用cin.get()提取换行呢,谢谢
展开
 我来答
左老师讲物理
2011-08-19 · TA获得超过1311个赞
知道小有建树答主
回答量:375
采纳率:100%
帮助的人:124万
展开全部
我不知道你在哪看到的这个程序。我大致看了下,发现你的程序有几点问题。按照C++标准,main()函数必须声明为int型。而你声明为viod型。第二个问题就是你所说的没有提取换行符,导致你输入数据后回车时,回车字符被下一个字符获取,但是这没有大问题。因为,在你输出时又输出换行。C++不能把字符自动转化为int,当你在输入数字的地方输入了字符,就会导致获取了不可预知的乱码内容,而你的循环条件是int型,但是你接受的不是数字,破坏了你的循环条件。
追问
还是不大明白,开始输入数字输入了字符,出现乱码,下一步要输入字符,cout>ch;还没到循环,怎么输入字符那步跳过了吗,循环条件是字符型不是int型啊,麻烦您在解释下,谢谢
追答
你不要忘记了,你有两个循环。
void n_chars(char c,int n)
{
while(n-->0)
cout<<c;
}
你的程序是重复输出n个由键盘输入的,相同的字符。这里的n被你赋值成非int型数据。他怎么循环输出呢?
yuanyuhua1987
2011-08-19
知道答主
回答量:19
采纳率:0%
帮助的人:4.8万
展开全部
循环条件和你的输入冲突了
追问
没明白啊,再多说两句吧,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友901ad5e33
2011-08-19 · TA获得超过149个赞
知道答主
回答量:207
采纳率:0%
帮助的人:120万
展开全部
C++不会提示类型不符的,它没这个功能。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式