问题标题: 酷町堂:3961

0
0
已解决
王俊杰
王俊杰
高级光能
高级光能

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;

}


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

​​​​​​​

0
李瑞曦
李瑞曦
高级天翼
高级天翼

因为sum不是double类型的!

我要回答