哇。。。我放声哭了,终于把他搞定了,本来昨晚夜里两点还想再继续找错的,但实在撑不下去了,今天就睡到了中午12点(捂脸
又对着网上大佬正确的代码找错!你让我好找啊
1、int s1(sumdj)、s2要
放在while语句里
测试应该是一次编译,把多个测试点一个接一个放。放while外sum值就有问题,所以会出现“答案错误50”
2、当for循环条件内,i从大到小,
i- -
3、
用while
语句没错,刚试了下没用就错,不知道测试点放了啥==
4、要看
样例
题目说的主对角线,md副对角线拿来都不知道,样例里有
5、
冒泡排序
再看看c的书温习
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int a[10][10];
int row[10],col[10];
int m,sumrow,sumcol;
while(scanf("%d",&m)!=EOF){
//输入数组、得到每行的和
for(int i=0;i<m;i++){
sumrow=0;
for(int j=0;j<m;j++){
scanf("%d ",&a[i][j]);
sumrow=sumrow+a[i][j];
}
row[i]=sumrow;
scanf("\n");
}
//得到每列的和、对角线之和
int sumdj=0;
for(int j=0;j<m;j++){
sumcol=0;
for(int i=0;i<m;i++){
sumcol=sumcol+a[i][j];
if(i==j){ sumdj=sumdj+a[i][j]; }
}
col[j]=sumcol;
}
int s2=0;
for(int i=0;i<m;i++) s2+=a[i][m-1-i];
//把col、row、sumdj和都放到mix里
int mix[2*m+2];
for(int i=0;i<m;i++){ mix[i]=col[i]; }
for(int i=m;i<2*m;i++){ mix[i]=row[i-m]; }
mix[2*m]=sumdj;
mix[2*m+1]=s2;
// sort(mix,mix+2*m+2);
//冒泡排序
int temp;
for(int i=0;i<2*m+1;i++){
for(int j=0;j<2*m+1-i;j++){
if(mix[j]<mix[j+1]){
temp=mix[j];
mix[j]=mix[j+1];
mix[j+1]=temp;
}
}
}
// }
for(int i=0;i<2*m+2;i++){
printf("%d ",mix[i]);
}
printf("\n");
}
return 0;
}
(以下是大神的代码,用来参考)
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=15;
bool cmp(int a,int b){
return a>b;
}
int main(){
int a[maxn][maxn];
int b[25]={0};
int m,first=1;
while(scanf("%d",&m)!=EOF){
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
scanf("%d",&a[i][j]);
int cnt=0;
for(int i=0;i<m;i++){
int sum=0;
for(int j=0;j<m;j++) sum+=a[i][j];
b[cnt++]=sum;
}
for(int j=0;j<m;j++){
int sum=0;
for(int i=0;i<m;i++) sum+=a[i][j];
b[cnt++]=sum;
}
int s1=0;
for(int i=0;i<m;i++) s1+=a[i][i];
b[cnt++]=s1;
int s2=0;
for(int i=0;i<m;i++) s2+=a[i][m-1-i];
b[cnt++]=s2;
sort(b,b+cnt,cmp);
for(int i=0;i<cnt;i++) printf("%d ",b[i]);
printf("\n");
}
return 0;
}