做矩阵转置需要发现其中的规律。仔细分析之后就会知道:从最后一列开始,先输出最下面的元素,然后依次向上输出,该列输出完之后,输出前一列;知道元素全部输出。
下面是我写的代码和运行的结果:
#include <stdio.h>
int main()
{
int a[100][100], n, i, j
printf("请输入矩阵的维数:n = %\n")
scanf("%d", &n)
printf("请输入矩阵中的元素:\n")
for(i=0 i<n i++)
{
for(j=0 j<n j++)
{
scanf("%d", &a[i][j])
}
}
printf("矩阵转置之后为:\n")
for(j=n-1 j>=0 j--)
{
for(i=n-1 i>=0 i--)
{
printf("%d ", a[i][j])
}
printf("\n")
}
}
反转输出是比如a[5]={0,1,2,3,4}输出是a[5]={4,3,2,1,0}吗?如果是我理解的这样,那看下面吧
#include <stdio.h>int main()
{
int a[6]={0,1,2,3,4,5}
int i,n,temp
n=6//数组元素个数
for(i=0i<n/2i++)
{
temp=a[i]
a[i]=a[n-1-i]
a[n-1-i]=temp
}
for(i=0i<ni++)
printf("%d ",a[i])
return 0
}
#include <stdio.h>void invert(int x[],int n)
void main()
{
int i,*p,a[10]={2,3,4,5,6,7,8,9,10,11}
printf("%s\n","元素倒置前:")
for(p=ap<a+10) printf("%d ",*(p)++)
printf("\n")
p=a
invert(p,10)
printf("%s\n","元素倒置后:")
for(p=ap<a+10) printf("%d ",*(p)++)
printf("\n")
}
void invert(int x[],int n)
{
int temp,i,j,m=(n-1)/2
for (i=0i<=mi++)
{
j=n-1-i
temp=x[i]x[i]=x[j]x[j]=temp
}
}