firewater 发表于 2015-2-1 21:58:04

关于将二维数组中的数互换的问题

我写了一个函数就是把二维数组中的数互换,比如:a[ i ] [ j ] = a [ j ] [ i ];   但是一直没用比如
以下是代码:
#include <stdio.h>
int main(void)
{
        int num;
        int i = 0, j = 0;
        void zhuanzhi(int a[]);
        printf("Please input nine numbers:\n");
        for (i = 0; i <= 2; i++)
        {
                for (j = 0; j <= 2; j++)
                {
                        printf("num[%d][%d] = ", i, j);
                        scanf("%d", &num);
                }
        }
        for (i = 0; i <= 2; i++)
        {
                for (j = 0; j <= 2; j++)
                {
                        printf("%5d", num);
                }
                printf("\n");
        }
        printf("\n");
        zhuanzhi(num);
        return 0;
}

void zhuanzhi(int a[])   /*定义转置数组函数*/
{
        int i, j, temp;
        for (i = 0; i <= 2; i++)
        {
                for (j = 0; j <= 2; j++)
                {
                        temp = a;
                        a = a;
                        a = temp;
                }
        }
        for (i = 0; i <= 2; i++)
        {
                for (j = 0; j <= 2; j++)
                {
                        printf("%5d", a);
                }
                printf("\n");
        }
}



曾经的肆无忌惮 发表于 2015-2-1 22:51:59

本帖最后由 曾经的肆无忌惮 于 2015-2-1 22:54 编辑

for (j = i+1; j <= 2; j++)
                        {
                              temp = a;
                              a = a;
                              a = temp;
                        }

交换的第二层循环写错了,应该从i+1开始,从0开始就交换两次了
比如i = 1,j = 2时,交换一次
       i = 2,j = 1时,又将其交换回来了

firewater 发表于 2015-2-2 14:37:55

曾经的肆无忌惮 发表于 2015-2-1 22:51
交换的第二层循环写错了,应该从i+1开始,从0开始就交换两次了
比如i = 1,j = 2时,交换一次
       ...

恩,懂了谢谢
页: [1]
查看完整版本: 关于将二维数组中的数互换的问题