题目描述
输入一个二维数组M[12][12],根据输入的要求,求出二维数组的上方区域元素的平均值或元素的和。
数组的两条对角线将数组分为了上下左右四个部分,如下图所示,黄色部分为对角线,绿色部分为上方区域:
样例
第一行输入一个大写字母,若为’S’,则表示需要求出上方区域的元素的和,若为’M’,则表示需要求出上方区域的元素的平均值。
接下来12行,每行包含12个用空格隔开的浮点数,表示这个二维数组,其中第 i+1 行的第 j+1 个数表示数组元素M[i][j]。
输出格式
输出一个数,表示所求的平均数或和的值,保留一位小数。
数据范围
−100.0≤M[i][j]≤100.0
输入样例:
S
-4.8 -8.0 -2.9 6.7 -7.0 2.6 6.5 1.7 1.9 5.6 -1.6 -6.3
-4.3 1.5 8.7 -0.3 5.4 -9.3 4.8 7.0 3.6 -8.3 -1.0 1.3
-9.9 9.7 -6.3 5.8 2.9 2.9 -7.7 4.9 -0.6 7.2 6.4 7.7
2.8 -5.8 -0.0 2.2 4.0 7.7 -3.0 -7.5 -3.5 9.7 -4.3 -8.6
-1.8 -0.1 5.4 0.6 9.9 -3.7 -1.1 0.8 -0.2 -0.0 9.9 4.5
3.0 -3.9 2.1 -9.7 5.5 9.4 -4.6 3.3 -9.6 5.1 -4.5 1.5
4.3 -5.4 -7.9 9.2 -7.7 -9.6 -1.5 -1.6 -7.2 2.0 -3.7 -0.7
8.0 2.8 -4.1 7.1 8.4 -5.6 3.9 -9.7 -1.1 3.0 -8.5 -3.3
1.7 5.1 0.1 9.2 4.5 9.7 7.2 8.6 8.7 1.1 6.7 0.3
-3.6 -7.1 -8.9 7.1 -5.9 1.6 -7.4 6.7 3.9 4.3 -2.4 -3.7
8.9 -6.2 5.0 -8.6 -1.3 -8.8 2.6 8.9 5.5 9.0 -2.2 -4.4
5.7 3.7 1.8 -2.1 -7.3 -7.9 4.7 6.0 3.3 -2.8 1.4 -6.9
输出样例:
21.7
算法1
](https://) ](https://) ](https://) ](https://) ](https://)
C++ 代码
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
double a[12][12];
char c;cin>>c;
for(int i=0;i<12;i++){
for(int j=0;j<12;j++){
cin>>a[i][j];
}
}
double s=0;
double cnt=0;
for(int i=0;i<5;i++){
for(int j=i+1;j<=10-i;j++){//这里循环条件需要注意,j从i+1开始,最大为10-i,是<=,有点粗心第一遍写成<,怎么都过不了,笑哭了
cnt+=1;
s+=a[i][j];
}
}
if(c=='S') printf("%.1lf\n",s);
else printf("%.1lf\n",s/cnt);
return 0;
}