给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。
输入只有三个正整数a、b、c。
输出一行,包括三个的和、乘积、平均数。
数据之间用一个空格隔开,其中平均数保留小数后面两位。
样例输入
1 2 3
样例输出
6 6 2.00
输入的三个数据怎么隔开
给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。
输入只有三个正整数a、b、c。
输出一行,包括三个的和、乘积、平均数。
数据之间用一个空格隔开,其中平均数保留小数后面两位。
样例输入
1 2 3
样例输出
6 6 2.00
输入的三个数据怎么隔开
(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;
}