猿问

求指教这段关于矩阵转置的代码哪里有问题

/* 编写一个函数(参数用指针)将一个3×3矩阵转置*/
#include <stdio.h>
void f(char (*p)[3]);

int main()
{
	char a[3][3];
	int i,j;
	char (*p)[3]=a;

	printf("请输入9个字符\n");
	for(i=0;i<3;i++)
		for(i=0;j<3;j++)
			scanf("%c",a[i][j]);

	f(a);

	for(i=0;i<3;i++)
		for(i=0;j<3;j++)
			printf("%c",a[i][j]);
		return 0;
}

void f(char (*p)[3])
{
	char t;
	int i,j;

	for(i=0;i<3;i++)
		for(i=0;j<=i;j++)
		{
			t=*(*(p+i)+j);
			*(*(p+i)+j)=*(*(p+j)+i);
			*(*(p+j)+i)=t;
		}
}

//运行不了,请问哪里错了


路卡利欧
浏览 1348回答 2
2回答

望远

#include <stdio.h> void f(char (*p)[3]);   int main() {     char a[3][3];     int i,j;     printf("请输入9个字符\n");     for(i=0;i<3;i++)         for(j=0;j<3;j++)//这里是j=0             scanf("%c",&a[i][j]);       f(a);       for(i=0;i<3;i++) {         for(j=0;j<3;j++)//这里是j=0             printf(" %c ",a[i][j]); printf("\n"); }         return 0; }   void f(char (*p)[3]) {     char t;     int i,j;       for(i=0;i<3;i++)         for(j=0;j<=i;j++)//这里是j=0         {             t=*(*(p+i)+j);             *(*(p+i)+j)=*(*(p+j)+i);             *(*(p+j)+i)=t;         } }ps:LZ能不能明天采纳?

望远

scanf("%c",&a[i][j]);//少了& 具体逻辑没有仔细看,有问题在下面提问。
随时随地看视频慕课网APP
我要回答