C++、初学者 2023-10-02 14:50 采纳率: 81%
浏览 4
已结题

一个简单的C++问题待解答

给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。
输入只有三个正整数a、b、c。
输出一行,包括三个的和、乘积、平均数。
数据之间用一个空格隔开,其中平均数保留小数后面两位。

样例输入

1 2 3

样例输出
6 6 2.00

img

输入的三个数据怎么隔开

  • 写回答

4条回答 默认 最新

  • 关注

    (1)你的题目输入样例是用空格隔开的,因此,读取输入的时候,直接用cin >> a >> b >> c;读取3个数据就可以了。
    cin >> a >> b >> c;可以实现读取用空格或者回车符分隔的3个整数。
    scanf("%d%d%d",&a,&b,&c); //(1)
    scanf("%d %d %d",&a,&b,&c); //(2)
    这两种写法也是可以的,(1)中%d之间没有空格,(2)中%d之间有空格,也可以实现读取3个以空格分隔的整数。scanf是C的写法,cin是C++的写法。
    (2)因为,a、b、c都是int类型,3也默认是int类型,因此,(a+b+c)/3计算的时候结果也是int类型,会丢失小数部分,如果想要保留小数部分,需要写成(a+b+c)/3.0,或者用强制类型转换,把(a+b+c)转成double或者float类型。3.0默认为double类型,(a+b+c)/3.0计算时,会把(a+b+c)提升为double类型进行计算。当然,为了避免数据越界,最好用sum/3计算平均值。
    (3)a、b、c都是int类型,但是这三个数的和、乘积可能会超出int类型范围,所以,和、成绩最好用double类型来保存,计算的时候,把a、b、c(其中任意一个均可)转为double类型进行计算,否则可能会出现数据越界的情况。


    正确的代码:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main()
    {
        int a,b,c;
        double sum,cj; //和、乘积,整数的和和乘积可能超出int类型范围,所以,和和乘积最好用double类型
        double ave; //平均数
        //读取3个以空格或者回车符分隔的整数,以下3种写法都是对的
        cin >> a >> b >> c;
        //scanf("%d %d %d",&a,&b,&c);  //C语言写法(1//scanf("%d%d%d",&a,&b,&c);  //C语言写法(2//计算和
        sum = (double)a+b+c;  //a强制转换为double,b和c也会被提升为double类型进行计算
        //计算乘积
        cj = (double)a*b*c;
        ave = sum/3.0; // 或者 sum/3也是可以的,因为sum是double类型,3也会被提升为double类型
        cout << sum <<" " << cj<<" ";   //先输出和、成绩
        cout << fixed << setprecision(2) << ave<<endl; //输出平均值,保留2位小数
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 10月2日

悬赏问题

  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥100 网页游戏在本地页面修改游戏结果
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead