天很蓝~ 2022-03-10 10:39 采纳率: 60%
浏览 10
已结题

无法完成for循环内通过scanf函数对二位整形数组赋值(应该是scanf出问题了,求修正)

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(){
    int a[5][5] = {};
    int m, n;
    int i,j,temp;
    for(i = 0;i < 5;i++)
    {
        for(j = 0;j < 5;j++)
        {
            scanf("%d",a[i][j]);
            printf("%d\n",&a[i][j]);
        }
        printf("\n");
    }


    printf("输入交换行m,n的值:\n");
    scanf("%d,%d",&m,&n);   //注意要交换的行数,与数组内m,n相差1
    m=m-1;
    n=n-1;    //不可使用 m--,n--,因为系统会认为没赋值便执行运算
    for(i=0;i<5;i++){
        temp = a[m][i];
        a[m][i] = a[n][i];
        a[n][i] = temp;
    }


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


  • 写回答

1条回答 默认 最新

  • 谛凌 2022-03-10 10:48
    关注

    给你改好了
    确实是scanf

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    int main(){
        int a[5][5] = {};
        int m, n;
        int i,j,temp;
        for(i = 0;i < 5;i++)
        {
            for(j = 0;j < 5;j++)
            {
                scanf("%d",&a[i][j]);  //这里取地址
                printf("%d\n",a[i][j]);   //这里不取地址
            }
            printf("\n");
        }
     
        printf("输入交换行m,n的值:\n");
        scanf("%d,%d",&m,&n);   //注意要交换的行数,与数组内m,n相差1
        m=m-1;
        n=n-1;    //不可使用 m--,n--,因为系统会认为没赋值便执行运算
        for(i=0;i<5;i++){
            temp = a[m][i];
            a[m][i] = a[n][i];
            a[n][i] = temp;
        }
     
     
        printf("输出:\n");
        for(i = 0;i < 5;i++)
        {
            for(j = 0;j < 5;j++)
            {
                printf("%d",a[i][j]);
            }
            printf("\n");
        }
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日