习题 7.4 写一个函数,使给定的一个3*3的二维整形数组转置,即行列互换。

C程序设计(第四版) 谭浩强 习题7.4 个人设计

习题 7.4 写一个函数,使给定的一个3*3的二维整形数组转置,即行列互换。

代码块:

方法1:

#include 
void transpo(int x[3][3]);                                 //定义转置函数
int main()
{
    int a[3][3] = {34, 58, 67, 23, 45, 78, 99, 12, 55};
    transpo(a);                                            //调用转置函数
    return 0;
}
//转置函数
void transpo(int x[3][3])
{
    int i, j, k, m[3][3];
    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
            m[j][i] = x[i][j];
    for (i = 0; i < 3; i++)
        for (j = 0, k = 1; j < 3; j++, k++){
            printf("%d  ", m[i][j]);
            if (k % 3 == 0)
                printf("\n");
        }
}

方法2:

#include 
void input(int s[][3]);                   //定义输入函数
void output(int s[][3]);                  //定义输出函数
void trans(int s[][3]);                   //定义转置函数
int main()
{
    int a[3][3];
    input(a);                             //调用输入函数
    printf("Original array:\n");          //调用输出函数输出原数组
    output(a);
    trans(a);                             //调用转置函数
    printf("New array:\n");               //调用输出函数输出新数组
    output(a);
    return 0;
}
//输入函数
void input(int s[][3])
{
    printf("Please enter array: ");
    for (int i=0; i<3; i++)
        for (int j=0; j<3; scanf("%d", &s[i][j++]));
}
//输出函数
void output(int s[][3])
{
    for (int i=0; i<3; printf("\n"), i++)
        for (int j=0; j<3; printf("%d ", s[i][j++]));
}
//转置函数
void trans(int s[][3])
{
    for (int i=0; i<3; i++)
        for (int j=0, t; j<3; i

你可能感兴趣的:(C程序设计,(第四版),谭浩强,课后答案)