注册 登录
编程论坛 C++教室

新手编程,一个关于while循环无法跳出的问题,请高手帮忙,谢谢。

piaoyuayi 发布于 2008-09-29 14:51, 1196 次点击
#include<iostream>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int num1=0;
    int num2=0;
    double average=0;
    int yes_no=0;
    int count=0;
    while(std::tolower(yes_no)!='n')
    {
        cout<<"Enter a number please"<<endl;
             cin>>num1;
             num2+=num1;
             count++;
             cout<<"Do you want to enter anoter number"<<"("<<"y/n"<<")"<<endl;
             cin>>yes_no;
             cout<<endl;
    }
         average=num2/count;
    cout<<"The plused number is"<<num2<<endl;
    cout<<"The average number is"<<average<<endl;
    return 0;
}
        当输入了Y后进入死循环,cin语句不能正常执行非常郁闷。请帮忙解说下,我也能用其他语句解决,但是不知道为什么这样就不行。高手帮忙
17 回复
#2
blueboy820062008-09-29 15:04
你tolower的用法不对啊...
它的声明为:
int tolower( int c );
而且也不在STD里啊..

其实你只要把yes_no声明为char就行了,何必那么麻烦...
#3
piaoyuayi2008-09-29 15:36
#include<iostream>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int num1=0;
    int num2=0;
    double average=0;
    int yes_no=0;
    int count=0;
    while(yes_no!='n')
    {
        cout<<"Enter a number please"<<endl;
             cin>>num1;
             num2+=num1;
             count++;
             cout<<"Do you want to enter anoter number"<<"("<<"y/n"<<")"<<endl;
             cin>>yes_no;
             cout<<endl;
    }
         average=num2/count;
    cout<<"The plused number is"<<num2<<endl;
    cout<<"The average number is"<<average<<endl;
    return 0;
}
不用tolower 也不对啊,跳不出循环
#4
piaoyuayi2008-09-29 16:02
#include<iostream>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int num1=0;
    int num2=0;
    double average=0;
    int yes_no=0;
    int count=0;
    while(yes_no!='n')
    {
        cout<<"Enter a number please"<<endl;
             cin>>num1;
             num2+=num1;
             count++;
             cout<<"Do you want to enter anoter number"<<"("<<"y/n"<<")"<<endl;
             cin>>yes_no;
             cout<<endl;
    }
         average=num2/count;
    cout<<"The plused number is"<<num2<<endl;
    cout<<"The average number is"<<average<<endl;
    return 0;
}
不用tolower 也不对啊,跳不出循环
#5
blueboy820062008-09-29 16:11
#include<iostream>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int num1=0;
    int num2=0;
    double average=0;
    char yes_no='\0';//////////char
    int count=0;
    while(yes_no!='n')
    {
        cout<<"Enter a number please"<<endl;
             cin>>num1;
             num2+=num1;
             count++;
             cout<<"Do you want to enter anoter number"<<"("<<"y/n"<<")"<<endl;
             cin>>yes_no;
             cout<<endl;
    }
         average=num2/count;
    cout<<"The plused number is"<<num2<<endl;
    cout<<"The average number is"<<average<<endl;
    return 0;
}
#6
blueboy820062008-09-29 16:12
都说要改char了....
这次要是跳不出来就是有鬼....
#7
piaoyuayi2008-09-29 17:35
为什么要改成CHAR那为什么int 就不行啊??
#8
piaoyuayi2008-09-29 17:37
能说明下吗,char和int不过是占用字节大小不同为很么会影响到循环哪??
#9
blueboy820062008-09-29 17:57
你试一下:
int a;
cin>>a;
cout<<a<<endl;
//////////////////////
你输入一个n,看看输出是什么?
另外,要知道字符的比较实际是比较ACCIS码
n的ACCIS码是110
你要是再不明白,我就没办法了...
#10
piaoyuayi2008-09-29 18:05
明白了,谢谢拉。
#11
piaoyuayi2008-09-29 18:08
设置成int会输出8位数字,
设置成char会输出字母。知道了。谢谢
#12
blueboy820062008-09-29 18:11
回复 11# piaoyuayi 的帖子
其实,这涉及到流的东西...
在这就不多讲了...
你知道你那样不行就OK了...
#13
piaoyuayi2008-09-29 18:16
我在认真学C++啊,流是什么东西,我在这本书上似乎找不到的样子。
#14
blueboy820062008-09-29 18:23
[bo][un]piaoyuayi[/un] 在 2008-9-29 18:16 的发言:[/bo]

我在认真学C++啊,流是什么东西,我在这本书上似乎找不到的样子。

要真是这样的话,我建议你赶紧换书吧...
#15
blueboy820062008-09-29 18:25
回复 13# piaoyuayi 的帖子
要是你学C++不知流为何物,那就太遗憾喽...
#16
piaoyuayi2008-09-29 18:29
推荐一本书啊,这是我换的第2本书了。第一本国内的讲的云里雾里的,这本是外国人的叫C++入门经典
Ivor Horton的我觉得已经是武功秘籍型了讲的超详细。好像没看到流的讲解。你推荐下啊
#17
piaoyuayi2008-09-29 18:31
不好意思,我找到了在书倒数第2章我才看到第六章,见笑了。我加油看有不懂的再问你 谢谢拉,麻烦了
#18
blueboy820062008-09-29 18:32
回复 16# piaoyuayi 的帖子
你那本不错嘀~
你先好好学完这本吧....
我建议你有时间再看看C++ Primer
这些都是些入门的好书啊...
之后,再找些高级的看看...
基础一定要扎实啊...
1