1.判断是否关于主对角线对称
#include "stdio.h"
int main(){
int n;
scanf("%d",&n);
int a[n][n];
int i,j;
int right=1;
for(i=0;i<n;i++){
for(j=0;j<n;j++)scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(a[i][j]!=a[j][i]){
right=0;
break;
}
}
}
if(right==1)printf("YES");
else printf("NO");
return 0;
}
2.矩阵转置
定义新数组传入
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n][n],b[n][n];
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++)scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)b[j][i]=a[i][j];
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(j<n-1)printf("%d ",b[i][j]);
else printf("%d\n",b[i][j]);
}
}
return 0;
}
用本身实现
#include "stdio.h"
int main(){
int n;
scanf("%d",&n);
int a[n][n];
int i,j,temp;
for(i=0;i<n;i++){
for(j=0;j<n;j++)scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(i<=j){
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
{
if(j<n-1)printf("%d ",a[i][j] );
else printf("%d\n",a[i][j]);
}
}
return 0;
}
3.求矩阵所有元素平均值
题目内容:编写程序,用指针形式访问整型数组元素,计算并输出该矩阵所有元素的算数平均值(计算结果保留2位小数)。
输入:输入矩阵的行数和列数(假定行数和列数均大于0,小于等于4),以及所有元素值。
输出:输出矩阵所有元素的算数平均值及矩阵所有元素(相邻2个数据之间空一个空格)
#include "stdio.h"
int main(){
int a[16]={0};
int m,n,i,*p;
float sum=0.00;
scanf("%d%d",&m,&n);
for(i=0;i<m*n;i++)
scanf("%d",&a[i]);
p=a;
for(i=0;i<m*n;i++)sum+=*(p+i);
sum/=m*n;
printf("%.2f ",sum);
for(i=0;i<m*n-1;i++)printf("%d ",*(p+i));
printf("%d",*(p+m*n-1));
return 0;
}
指针指向数组第一个元素