标题:求老师:关于cin.get的问题
只看楼主
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
结帖率:44.44%
已结贴  问题点数:7 回复次数:7 
求老师:关于cin.get的问题
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;
            }   
        }
}
搜索更多相关主题的帖子: 选择题 include 
2012-12-19 14:43
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 
奇怪,我的问题描述怎么不见了......

程序开始时,我直接输入字符然后回车,系统会自动弹出 程序已停止工作 的窗口。
要在程序开始时输入一个 回车 ,让它执行一次,然后才可以正常继续下去。
我开始以为是cin缓存区的问题,加了个cin.clear()也没用。
求解释~~~
2012-12-19 14:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
我开始以为是cin缓存区的问题,加了个cin.clear()也没用。
------ clear是清除错误标志,不碰缓存区的
2012-12-19 16:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
程序代码:
#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;
} 

2012-12-19 16:31
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 
回复 3楼 rjsp
可是我还是不明白,为什么我的那段代码会出现这个问题,逻辑上没有错吧,为什么换一种表现形式就可以避免了~~
我那段代码错在哪里呢?????????
2012-12-21 12:22
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 
...  
求解释......大神们哪里去了...

魂~归来兮~~~~~
2012-12-22 18:27
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
得分:4 
当然了,刚开始的时候你的i还没初始化,你知道r[i]=c;会出现什么问题吗?当你输入回车之后就会进入else里面,在else里面i被赋值为0自然之后输入就没问题了。

My life is brilliant
2012-12-22 22:22
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 
回复 7楼 lz1091914999
原来如此...

非常感谢~~   
2012-12-23 13:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-392068-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.213942 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved