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

请大家帮我看一下这两个程序有什么不同的,为什么?

百合园 发布于 2011-11-12 21:24, 527 次点击
错误程序:
#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;
}  
有什么不同啊?紧急求助....
4 回复
#2
百合园2011-11-12 22:02
现对这个问题很是纠结,我个人觉得没有什么区别啊,但是就是提交不过......很大家积极思考一下下,在此先谢过了,这不仅是给予别人帮助,也是给自己一个挑战.....
#3
Toomj2011-11-12 22:21
scanf(" %c%c%c",&a,&b,&c)!=EOF前面要加一个空格,不然第二次及以后的循环,a的值是'\n';这是scanf()的问题,%c前的空格可以匹配掉所有的空白字符(回车、换行、制表符)。
或者可以在输入前加fflush(stdin);清空缓存。。。
#4
Toomj2011-11-12 22:23
程序代码:
#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;
}   

#5
hxcet2011-11-18 13:10
回复 楼主 百合园
你写的第一个错误的程序,在我这里没错啊,编译执行都不会有问题,结果也没错啊。。。。。
1