#include"stdio.h"
int i,j;
int main(void)
{void zhuanzi(int (*p)[11],int x);
printf("请输入n值:");
int n; scanf("%d",&n);//给n赋值
printf("\n");
int a[n][n];
printf("请输入n*n矩阵\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
zhuanzi(a,n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
void zhuanzi(int (*p)[11],int x)
{
int t;
for(i=0;i<x;i++)
for(j=i+1;j<x;j++)
{ *(*(p+i)+j)=t;
t=*(*(p+j)+i));
*(*(p+j)+i))=*(*(p+i)+j);
}
}
其实还有其它问题,比如数据交换部分也不对,大致修改如下
#include"stdio.h"
int i, j;
int main(void)
{
void zhuanzi(int**p, int x);
printf("请输入n值:");
int n; scanf("%d", &n);//给n赋值
printf("\n");
int **a = new int*[n];
for (i = 0; i < n; i++)
*(a + i) = new int[n];
printf("请输入n*n矩阵\n");
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
scanf("%d", &a[i][j]);
zhuanzi(a, n);
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
printf("%6d", a[i][j]);
printf("\n");
}
}
void zhuanzi(int **p, int x)
{
int t;
for (i = 0; i<x; i++)
for (j = i + 1; j<x; j++)
{
t = *(*(p + j) + i);
*(*(p + j) + i) = *(*(p + i) + j);
*(*(p + i) + j) = t;
}
}
#include "stdio.h"
int i,j;
void zhuanzi(int (*p)[11],int x);
int main(void)
{
printf("请输入n值:");
int n;
scanf("%d",&n);//给n赋值
printf("\n");
int a[n][n];
printf("请输入n*n矩阵\n");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
zhuanzi(*a,n);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%6d",a[i][j]);
printf("\n");
}
return 0;
}
void zhuanzi(int (*p)[11],int x)
{
int t;
for(i=0; i<x; i++)
for(j=i+1; j<x; j++)
{
*(*(p+i)+j)=t;
t=*(*(p+j)+i);
*(*(p+j)+i)=*(*(p+i)+j);
}
}
我调整了你代码中几个错误。
函数参数为啥写死是[11]呢?主函数明明都是用户输入的行列值啊,这个行列不一致不行啊
函数里面
t = *(*(p + j) + i);
*(*(p + j) + i) = *(*(p + i) + j);
这两行最后多了个括号
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632