c语言程序运行不了,求大佬指点

#include<stdio.h>
#include<string.h>

int f(int (*a)[11]){
    int i,j,t;
    for(i=0;i<11;i++){
        for(j=0;j<11;j++){
        t=(*a+j)[i];
        (*a+j)[i]=(*a+i)[j];
        (*a+i)[j]=t;}
    }
}

main(void){
    int n,i,j;
    printf("n:");
    scanf("%d",n);
    int a[n][n];
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            scanf("%d,",a[i][j]);
    }
    printf("\n");
}

  f((*a)[n]);
    
for(i=0;i<n;i++){
    for(j=0;j<n;j++){
         printf("%d",a[j][i]);
    }
    printf("\n");
}
}

错误有若干个,修改如下:


#include<stdio.h>
#include<string.h>
void f(int (*a)[20],int n)
{
	int i,j,t;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			t=(*a+j)[i];
			(*a+j)[i]=(*a+i)[j];
			(*a+i)[j]=t;
		}
	}
}
void main(void)
{
	int n,i,j;
	printf("n:");
	scanf("%d",&n);
	int a[20][20];
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	printf("\n");



	f(a,n);

	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++){
			printf("%d",a[j][i]);
		}
		printf("\n");
	}
}

scanf("%d,",a[i][j]);

这个输入函数,给变量赋值,要指向变量的内存地址,因此需要加&

scanf("%d",&a[i][j]);你换成这样就可以啦。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^