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

运行有问题,找错

韩学敏 发布于 2013-09-24 19:28, 550 次点击
#include<iostream.h>
void main()
{
    char a[8],b[8];

    int i=0,j=0;
    cout<<"please input a:";
    do
    {
        cin>>a[i];
    }while(a[i]!='\n');
    cout<<"please input b:";
    do
    {
        cin>>b[i];
    }while(b[i]!='\n');
        
    if(a[0]==b[0])
        cout<<"they are equal!"<<endl;
    else if(a[0]=='r'&&b[0]=='s')
        cout<<"the winner is a!"<<endl;
    else if(a[0]=='r'&&b[0]=='c')
        cout<<"the winner is b!"<<endl;
    else if(a[0]=='c'&&b[0]=='s')
        cout<<"the winner is b!"<<endl;
    else if(a[0]=='c'&&b[0]=='r')
        cout<<"the winner is a!"<<endl;
    else if(a[0]=='s'&&b[0]=='r')
        cout<<"the winner is b!"<<endl;
    else if(a[0]=='s'&&b[0]=='c')
        cout<<"the winner is a!"<<endl;
}
红色字输出不了,前面的赋值也不成功,求解释
7 回复
#2
3037709572013-09-24 23:32
變量i一直是0
#3
fxbszj2013-09-25 12:55
同2楼,do-while循环,请问第一个循环怎么结束。最后的运行的结果就是一遍又一遍的给a[0]赋值。do-while死循环,语句不会结束,当然不会进行后面的
#4
韩学敏2013-09-25 19:09
回复 3楼 fxbszj
#include<iostream.h>
void main()
{
    char a[8],b[8];
    int i=0,j=0;



    cout<<"please input a:";
    cin>>a[i];
    while(a[i]!='\n')
    {
        i++;
        cin>>a[i];
    }
    cout<<"please input b:";
    cin>>b[j];
    while(b[j]!='\n')
    {
        j++;
        cin>>b[j];
    }


        
    if(a[0]==b[0])
        cout<<"they are equal!"<<endl;
    else if(a[0]=='r'&&b[0]=='s')
        cout<<"the winner is a!"<<endl;
    else if(a[0]=='r'&&b[0]=='c')
        cout<<"the winner is b!"<<endl;
    else if(a[0]=='c'&&b[0]=='s')
        cout<<"the winner is b!"<<endl;
    else if(a[0]=='c'&&b[0]=='r')
        cout<<"the winner is a!"<<endl;
    else if(a[0]=='s'&&b[0]=='r')
        cout<<"the winner is b!"<<endl;
    else if(a[0]=='s'&&b[0]=='c')
        cout<<"the winner is a!"<<endl;
}
很不好意思,我改了一下,还是不行,能不能帮忙再看看,谢谢了。。
#5
IT男year2013-09-25 20:41
'\n'不是字符所以它进不来了数组,所以你循环是死循环。将'\n'改成别的字符就好了!请看下面程序:
#include<iostream.h>
 void main()
 {
     char a[8],b[8];
     int i=0,j=0;
 


    cout<<"please input a:";
     cin>>a[i];
     while(a[i]!='n')
     {
         i++;
         cin>>a[i];
     }
     cout<<"please input b:";
     cin>>b[j];
     while(b[j]!='n')
     {
         j++;
         cin>>b[j];
     }   
     if(a[0]==b[0])
         cout<<"they are equal!"<<endl;
     else if(a[0]=='r'&&b[0]=='s')
         cout<<"the winner is a!"<<endl;
     else if(a[0]=='r'&&b[0]=='c')
         cout<<"the winner is b!"<<endl;
     else if(a[0]=='c'&&b[0]=='s')
         cout<<"the winner is b!"<<endl;
     else if(a[0]=='c'&&b[0]=='r')
         cout<<"the winner is a!"<<endl;
     else if(a[0]=='s'&&b[0]=='r')
         cout<<"the winner is b!"<<endl;
     else if(a[0]=='s'&&b[0]=='c')
         cout<<"the winner is a!"<<endl;
 }
#6
rjsp2013-09-26 09:21
程序代码:
#include <iostream>
using namespace std;

int main()
{
    char a[8],b[8];

    ios::fmtflags save = cin.flags() & ios::skipws;
    cin.unsetf( ios::skipws );

    cout << "please input a:";
    for( int i=0; ; ++i )
    {
        if( i==7 )
        {
            a[i] = '\0';
            break;
        }

        cin >> noskipws >> a[i];
        if( a[i] == '\n' )
        {
            a[i] = '\0';
            break;
        }
    }

    cout << "please input b:";
    for( int i=0; ; ++i )
    {
        if( i==7 )
        {
            b[i] = '\0';
            break;
        }

        cin >> b[i];
        if( b[i] == '\n' )
        {
            b[i] = '\0';
            break;
        }
    }

    cin.setf( save );

    …………

    return 0;
}


不过,与其这么麻烦,为什么不用 string line; getlin(cin,line) ???
#7
西安郑鑫2013-09-26 17:01
以下是引用rjsp在2013/9/26 09:21:06的发言:

#include <iostream>
using namespace std;

int main()
{
    char a[8],b[8];

    ios::fmtflags save = cin.flags() & ios::skipws;
    cin.unsetf( ios::skipws );

    cout << "please input a:";
    for( int i=0; ; ++i )
    {
        if( i==7 )
        {
            a = '\0';
            break;
        }

        cin >> noskipws >> a;
        if( a == '\n' )
        {
            a = '\0';
            break;
        }
    }

    cout << "please input b:";
    for( int i=0; ; ++i )
    {
        if( i==7 )
        {
            b = '\0';
            break;
        }

        cin >> b;
        if( b == '\n' )
        {
            b = '\0';
            break;
        }
    }

    cin.setf( save );

    …………

    return 0;
}

不过,与其这么麻烦,为什么不用 string line; getlin(cin,line) ???

LZ应该是新手,他这个程序是培养逻辑思维能力,你说的这个可以当做LZ的提高训练。
#8
3037709572013-09-26 17:07
回复 6楼 rjsp
新手一般对标准库不太了解,何谈使用乎?
string line; getlin(cin,line); 这些都是标准库里面的东西,LZ是不是能看懂还不知道。
1