第一题:
第二题:
#include<stdio.h>
#include<memory.h>
#define MAX_STUDENT 50
#define MAX_COURSE 5
double scores[MAX_STUDENT][MAX_COURSE];
double meanScores[MAX_COURSE];
int pass[MAX_COURSE];
int main(){
int n,m, i,j;
double sum;
scanf("%d%d",&n,&m);
if(n<=0||m<0){
printf("error\n");
return -1;
}
for( i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%lf",&scores[i][j]);
if(scores[i][j]<0){
printf("error\n");
return -1;
}
}
}
memset(meanScores,0,sizeof(int)*m);//清空
for(i=0;i<n;i++){
sum=0;
for(j=0;j<m;j++){
sum+=scores[i][j];
meanScores[j] += scores[i][j];
}
printf("%.2lf ",sum/m);
}
printf("\n");
for(j=0;j<m;j++){
meanScores[j] /= n;
printf("%.2lf ", meanScores[j]);
}
memset(pass,0,sizeof(int)*m);//清空
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(scores[i][j]>=meanScores[j]){
pass[j]+=1;
}
}
}
printf("\n");
for(j=0;j<m;j++){
printf("%d ", pass[j]);
}
}
#include<stdio.h>
#define MAX_M 100
#define MAX_N 100
int face[MAX_M][MAX_M];
int mask[MAX_N][MAX_N];
int min(int a,int b){return a<b?a:b;}
void matrix_addition(int m,int n,int x_s,int y_s){
if(x_s>=m||y_s>=m||x_s<0||y_s<0) return;
int min_x=m-1, min_y=m-1;
min_x = min(min_x, x_s + n-1);
min_y = min(min_y, y_s + n-1);
int i,j;
for(i=x_s;i<=min_x;i++){
for(j=y_s;j<=min_y;j++){
face[i][j] += mask[i-x_s][j-y_s];
}
}
}
void displayMatrix(int a[][MAX_N], int m){
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
printf("%d ",a[i][j]);
}
//printf("\n");
}
//printf("\n");
}
int main(){
int m,n,count=0;
int x_s, y_s;
scanf("%d",&m);
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
scanf("%d",&face[i][j]);
}
}
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&mask[i][j]);
}
}
scanf("%d%d",&x_s,& y_s);
matrix_addition(m,n, x_s, y_s);
displayMatrix(face,m);
}