| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1351 人关注过本帖
标题:只用for语句求平均值的单行输出问题
只看楼主 加入收藏
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
 问题点数:0 回复次数:11 
只用for语句求平均值的单行输出问题
大家好,初学C++,现在遇到一道用for语句求平均值的问题
题目:使用一条for语句求若干整数的平均值并打印结果。假定最后读入的值是标记值9999。
     一次运行的示范输入序列如下:
   10 8 11 7 9 9999
  表明程序应计算9999之前的所有值的平均值。

我的语句如下:
#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int total = 0;
    int counter;
    double average;
    int a;      //a代表输入值
   
    cout << "Enter(9999 to quit):";
    cin >> a;      //此行为输入一个值,进行判断
   
    for ( counter = 1; a != 9999; counter++ )
    {
        
        cout << a << endl;      
        total += a;
        
        cin >> a;
        //average = static_cast< double >( total )/counter;
    }
      
    cout << " The average is:" << average << endl;
   
    system("pause");
    return 0;
}  

问题来了,程序可以运行,但显示的只是一行一个输入值,就是以下效果
1
2
3
4

怎样才能显示 1 2 3 4 这样的效果?

PS,附带另外一个问题,希望大家可以解答!
如果程序中有一句“cout << fixed <<setprecosion(2);”这样的语句,是表示在这语句之后的所有输出语句,都会显示两位小数吗?
搜索更多相关主题的帖子: 输出 单行 语句 平均值 
2010-09-30 21:57
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
求帮助.....
2010-10-01 07:09
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
继续求解答...
2010-10-02 07:31
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
输入时,数之间用空格,输入9999时回车!

★★★★★为人民服务★★★★★
2010-10-02 07:44
聋眼睛瞎耳朵
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:29
专家分:123
注 册:2010-9-24
收藏
得分:0 
你的程序出现一行输出一个输出值的原因是:你写输出函数(cout<<a<<endl;)时,用endl了,endl会让你的每一次输出都换行。
你把输出函数改为:cout<<a<<" ";就可达到你想要的效果了
2010-10-02 17:09
terry64no
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-29
收藏
得分:0 
好,我先试一试!
2010-10-04 16:40
sunmingchun
Rank: 4
来 自:安徽-滁州
等 级:业余侠客
帖 子:198
专家分:277
注 册:2010-4-2
收藏
得分:0 
楼主你的程序输出平均值了吗?
我改了一下 你看看
#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int total = 0;
    int counter;
    double average;
    int a;      //a代表输入值
   
    cout << "Enter(9999 to quit):";
    cin >> a;      //此行为输入一个值,进行判断
   
    for ( counter = 1; a != 9999; counter++ )
    {
        
        cout <<"  "<<a;      
        total += a;
        
        cin >> a;
        average=1.0*total/counter;

        //average = static_cast< double >( total )/counter;
    }
      
    cout << " The average is:" << average << endl;
   
    system("pause");
    return 0;
}  


[ 本帖最后由 sunmingchun 于 2010-10-4 21:18 编辑 ]
2010-10-04 21:17
zaq2008
Rank: 2
等 级:论坛游民
帖 子:23
专家分:13
注 册:2010-8-14
收藏
得分:0 
这样子修改应该符合LZ要求了
程序代码:
#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int total = 0;
    int counter; 
    double average;
    int a; //a代表输入值 

    cout << "Enter(9999 to quit):";
    cin >> a; //此行为输入一个值,进行判断 

    for ( counter = 1; a != 9999; counter++ )
    {

        counter-1? cout  << " "<< a:cout << a;
        total += a;

        cin >> a;
    average = static_cast< double >( total )/counter;
    }
    cout << "\n" << " The average is:" << average << endl;
    return 0;
} 


[ 本帖最后由 zaq2008 于 2010-10-5 14:58 编辑 ]
2010-10-05 14:56
zaq2008
Rank: 2
等 级:论坛游民
帖 子:23
专家分:13
注 册:2010-8-14
收藏
得分:0 
回复 楼主 terry64no
应该是setprecision  是控制小数点后面位数的 要包含 iomanip 头文件
用法 在输出浮点数前先输出setprecision(n)
用完以后改回原来的 需输出setprecision(6)
2010-10-05 15:11
tansuo
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-6
收藏
得分:0 
语句这有“cout<<a<<endl”当然会换行了。把“endl”去了改成空格键就行了。是的,后面的都是按2位,小数输出,不要忘了iomanip的头文件。只有setw的设置才对其后的一个输出项有效。
2010-10-07 21:56
快速回复:只用for语句求平均值的单行输出问题
数据加载中...
 
   



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

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