标题:请大家帮我看一下这两个程序有什么不同的,为什么?
只看楼主
百合园
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-11-12
 问题点数:0 回复次数:4 
请大家帮我看一下这两个程序有什么不同的,为什么?
错误程序:
#include<iostream>
using namespace std;
int main()
{
    char a,b,c;
    double average;
    while (scanf("%c %c %c",&a,&b,&c)!=EOF)
    {
        average=(double)(a+b+c)/3;
        cout<<average<<endl;
    }
    return 0;
}   


正确程序:
#include<iostream>
using namespace std;
int main()
{
    char a,b,c;
    double a1,a2,a3,s;
    while (cin>>a>>b>>c)
    {
        a1=a;a2=b;a3=c;
        s=(a1+a2+a3)/3;
        cout<<s<<endl;
    }
    return 0;
}  
有什么不同啊?紧急求助....
搜索更多相关主题的帖子: double average 
2011-11-12 21:24
百合园
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-11-12
得分:0 
现对这个问题很是纠结,我个人觉得没有什么区别啊,但是就是提交不过......很大家积极思考一下下,在此先谢过了,这不仅是给予别人帮助,也是给自己一个挑战.....
2011-11-12 22:02
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
得分:0 
scanf(" %c%c%c",&a,&b,&c)!=EOF前面要加一个空格,不然第二次及以后的循环,a的值是'\n';这是scanf()的问题,%c前的空格可以匹配掉所有的空白字符(回车、换行、制表符)。
或者可以在输入前加fflush(stdin);清空缓存。。。
2011-11-12 22:21
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
得分:0 
程序代码:
#include<iostream>
using namespace std;
int main()
{
    char a,b,c;
    double average;
    while (scanf(" %c%c%c",&a,&b,&c)!=EOF)
    {
        average=(double)(a+b+c)/3;
        cout<<average<<endl;
    }
    return 0;
}   #include<iostream>
using namespace std;
int main()
{
    char a,b,c;
    double average;
    while (scanf("%c%c%c",&a,&b,&c)!=EOF)
    {
        average=(double)(a+b+c)/3;
        cout<<average<<endl;
        fflush(stdin);
    }
    return 0;
}   

2011-11-12 22:23
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
得分:0 
回复 楼主 百合园
你写的第一个错误的程序,在我这里没错啊,编译执行都不会有问题,结果也没错啊。。。。。
2011-11-18 13:10



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




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

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