高级光能
3961 求平均值经验值:0
题目描述 Description
现在有n组数据,每组数据包含m个数字,请你求出每组数据的平均值,用函数实现这个过程。
输入描述 Input Description
第一行,一个正整数n(1≤n≤1000)
接下来n组数据,每组包含两行,第一行是一个正整数m(1≤n≤1000),接下来一行是m个正整数ai(1≤ai≤1000)
输出描述 Output Description
n行,每行一个平均值,保留一位小数输出
样例输入 Sample Input
2 3 1 2 3 4 1 2 3 4
样例输出 Sample Output
2.0 2.5
错误代码:
#include <iostream>
#include<cstdio>
#include <string>
using namespace std;
int n,sum1=0,sum2=0;
int pj(int n){
int p1,p2,p3,p4;
cin>>n>>p1;
for(int i=1;i<=p1;i++){
cin>>p2;
sum1+=i;
}
cin>>p3;
for(int i=1;i<=p3;i++){
cin>>p4;
sum2+=i;
}
printf("%.1f",sum1/p2);
cout<<endl;
printf("%.1f",sum2/p3);
}
int main(){
pj(n);
return 0;
}
why
这样写都对,为什么上面写的不对:
#include <iostream>
#include<cstdio>
#include <string>
using namespace std;
int n,sum1=0,sum2=0;
int pj(int n){
int p1,p2,p3,p4;
cin>>n>>p1;
for(int i=1;i<=p1;i++){
cin>>p2;
sum1+=i;
}
cin>>p3;
for(int i=1;i<=p3;i++){
cin>>p4;
sum2+=i;
}
cout<<sum1/p2;
cout<<endl;
cout<<sum2/p3;
}
int main(){
pj(n);
return 0;
}
why
王俊杰在2020-07-16 20:00:59追加了内容
#include <iostream>
#include<cstdio>
#include <string>
using namespace std;
int n,sum1=0,sum2=0;
int pj(int n){
double p1,p2,p3,p4;
cin>>n>>p1;
for(int i=1;i<=p1;i++){
cin>>p2;
sum1+=i;
}
cin>>p3;
for(int i=1;i<=p3;i++){
cin>>p4;
sum2+=i;
}
printf("%.1f",sum1/p2);
cout<<endl;
printf("%.1f",sum2/p3);
}
int main(){
pj(n);
return 0;
}
0分
why
王俊杰在2020-07-17 10:39:30追加了内容
#include <iostream>
#include<cstdio>
#include <string>
using namespace std;
int n;
int sum1=0,sum2=0;
int pj(int n){
double p1,p2,p3,p4;
cin>>n>>p1;
for(int i=1;i<=p1;i++){
cin>>p2;
sum1+=i;
}
cin>>p3;
for(int i=1;i<=p3;i++){
cin>>p4;
sum2+=i;
}
printf("%.1f",sum1*1.0/p2);
cout<<endl;
printf("%.1f",sum2*1.0/p3);
}
int main(){
pj(n);
return 0;
}
资深光能
答:
唯一的区别是:
错的: cout<<sum1/p2;
cout<<endl;
cout<<sum2/p3;
错误原因:sum1和sum2是整形的,所以输出的也是整形的,不符合要求。
对的:printf("%.1f",sum1/p2);
cout<<endl;
printf("%.1f",sum2/p3);
正确原因:sum1和sum2是整形的,但输出是因前面写的是%.1f,相当于把它强转成了浮点型,因此正确。
望采纳,thank you