这个题的意思是:两个矩阵A,B,相加后得到矩阵C,求C中行或列全为0的总和。。
- 样例输入:
-
2 2 1 1 1 1 -1 -1 10 9 2 3 1 2 3 4 5 6 -1 -2 -3 -4 -5 -6 0
- 样例输出:
-
1 5
#include<iostream>
#include<cstdio>
using namespace std;
int Rows(int matrics[10][10],int a,int b){
int rows=0;
for(int i=0;i<a;i++){
int temp=1;
for(int j=0;j<b;j++){
if(matrics[i][j]!=0){
temp=0;
break;
}
}
rows+=temp;
}
return rows;
}
int Cols(int matrics[10][10],int a,int b){对于一维数组来说,数组作为函数参数传递,相当于传址,而不是传值,会改变数组元素的值
int cols=0;
for(int i=0;i<b;i++){
int temp=1;
for(int j=0;j<a;j++){
if(matrics[j][i]!=0){
temp=0;
break;
}
}
cols+=temp;
}
return cols;
}
void mutiply(int matrics1[10][10],int matrics2[10][10],int a,int b){高维数组第一个 可以不写大小,其他的必须写[][10]
int i=0,j=0;
for(i=0;i<a;i++){
for(j=0;j<b;j++){
matrics1[i][j]=matrics1[i][j]+matrics2[i][j];
}
}
}
int main(){
int row=0,col=0;
while(scanf("%d",&row)!=EOF,row!=0){ //while(scanf("%d",&row)!=0){这样写报错 ERROR: Output Limit Exceed
也可以写成 whilescanf("%d",&row)!=EOF,row)
int matrics1[10][10],matrics2[10][10];
cin>>col;
int i=0,j=0;
for(i=0;i<row;i++){
for(j=0;j<col;j++){
cin>>matrics1[i][j];
}
}
for(i=0;i<row;i++){
for(j=0;j<col;j++){
cin>>matrics2[i][j];
}
}
mutiply(matrics1,matrics2,row,col);
int aa=Rows(matrics1,row,col)+Cols(matrics1,row,col);
cout<<aa<<endl;
}
return 0;忘记了写return
}