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

求老师:关于cin.get的问题

linan03 发布于 2012-12-19 14:43, 405 次点击
Win7系统
使用Visual C++ 2010

题目要求 从键盘输入若干组选择题答案,每组连续输入5个,计算每组答案的正确率,直到输入ctrl+Z为止。
我的代码:
#include<iostream>
using namespace std;

void Judge(char a[5],char b[5])
{
    int i;
    char c[5];
    float n=0;
    for(i=0;i<5;i++)
    {
        if(a[i]==b[i])
        {
            c[i]=' ';
            n++;
        }   
        else
            c[i]='*';
    }
    for(i=0;i<5;i++)
    {
        cout<<c[i];
    }
    cout<<"正确率为:"<<n/5<<endl;
}

void main()
{
    int i;
    char c,r[5],answer[5]={'c','c','c','c','c'};
    cout<<"Enter:"<<endl;
        while(cin.get(c))
        {
            if(c!='\n')
            {
                r[i]=c;
                i++;
            }
            else
            {   
                Judge(r,answer);
                i=0;
            }   
        }
}
7 回复
#2
linan032012-12-19 14:48
奇怪,我的问题描述怎么不见了......

程序开始时,我直接输入字符然后回车,系统会自动弹出 程序已停止工作 的窗口。
要在程序开始时输入一个 回车 ,让它执行一次,然后才可以正常继续下去。
我开始以为是cin缓存区的问题,加了个cin.clear()也没用。
求解释~~~
#3
rjsp2012-12-19 16:20
我开始以为是cin缓存区的问题,加了个cin.clear()也没用。
------ clear是清除错误标志,不碰缓存区的
#4
rjsp2012-12-19 16:31
程序代码:
#include<iostream>
using namespace std;

void Judge( const char a[5], const char b[5] )
{
    char c[5];
    int n = 0;
    for( int i=0; i<5; ++i )
    {
        if(a[i]==b[i])
        {
            c[i] = ' ';
            ++n;
        }
        else
            c[i] = '*';
    }
    for( int i=0; i<5; ++i )
    {
        cout<<c[i];
    }
    cout << "正确率为:" << n/5.0 << endl;
}

int main()
{
    const char answer[5] = {'c','c','c','c','c'};

    char r[5];
    int i = 0;
    for( char c; cin.get(c); )
    {
        if( c == '\n' )
        {
            if( i == 5 )
                Judge( r, answer );
            i = 0;
            continue;
        }

        r[i++] = c;
    }

    return 0;
}

#5
linan032012-12-21 12:22
回复 3楼 rjsp
可是我还是不明白,为什么我的那段代码会出现这个问题,逻辑上没有错吧,为什么换一种表现形式就可以避免了~~
我那段代码错在哪里呢?????????
#6
linan032012-12-22 18:27
...  
求解释......大神们哪里去了...

魂~归来兮~~~~~
#7
lz10919149992012-12-22 22:22
当然了,刚开始的时候你的i还没初始化,你知道r[i]=c;会出现什么问题吗?当你输入回车之后就会进入else里面,在else里面i被赋值为0自然之后输入就没问题了。
#8
linan032012-12-23 13:02
回复 7楼 lz1091914999
原来如此...

非常感谢~~   
1