c语言matrix转换的简单介绍

发布时间:2023-01-07

本文目录一览:

1、C语言 矩阵变换 2、将一个3x3的矩阵转置,怎样用c语言写? 3、c语言中二维数组如何实现矩阵转换 4、C语言如何实现下面数组的转换 1 2 3 4 1 11 14 16 5 6 7 8转换为 5 2 12 15 9 10 11 12 8 6 3 1 13 14

C语言 矩阵变换

二维数组的第一维(就是后面一个[])作为行,第二维(就是前面一个[])作为列,这是一种惯用理解方式。你的理解恰好把行和列反了一下。 这种理解方式也不是没有原因的,一维数组我们叫一行,可以用元素指针自增自减的方式遍历整个行,但我们不能用元素指针自增自减来遍历二维数组的整个列。

将一个3x3的矩阵转置,怎样用c语言写?

#include <stdio.h>
int main()
{
    int a[3][3];
    int *i;
    for(i = *a; i < *a + 9; scanf("%d", i++)); // 输入矩阵
    void trans(int (*p)[3]); // 声明转换函数
    trans(a);
    return 0;
}
void trans(int (*p)[3])
{
    int i, j, t, *k;
    for(i = 0; i < 3; i++)
        for(j = 0; j < i; j++)
        {
            t = *(*(p + i) + j);
            *(*(p + i) + j) = *(*(p + j) + i);
            *(*(p + j) + i) = t; // 行列交换
        }
    for(i = 0; i < 3; i++, printf("\n"))
        for(k = *(p + i); k < *(p + i) + 3; printf("%2d", *k++)); // 输出转置矩阵
}

扩展资料:

C#中for语句的语法:

for(initialization; Boolean expression; update control variable)
    statement

其中,statement(语句)是for循环主体,要么是一个语句,要么是用大括号{}封闭的代码块。

例子1:
static void Main(string[] args)
{
    for(int i = 0; i < 10; i++)
    {
        Console.WriteLine(i);
        Console.ReadLine();
    }
}
例子2:
static void Main(string[] args)
{
    int i = 0;
    for(; i < 10; i++)
    {
        Console.WriteLine(i);
        Console.ReadLine();
    }
}

例子2运算得到例子1相同的结果。

Pascal语言中的for循环

循环次数已知时,可以用for语句实现循环结构。 for语句有两种格式:递增型和递减型。 (1) 递增型for语句格式

for <循环变量> := <初值> to <终值> do <语句>;

(2) 递减型for语句格式

for <循环变量> := <初值> downto <终值> do <语句>;

其中,“循环变量”为一个有序类型的数据, 在第一种形式中,使用的是保留字to,循环变量则从“初值”开始逐一增加到“终值”; 在第二种形式中,使用的是保留字downto,“循环变量”则从“初值”开始逐一递减到“终值”,每次执行一次循环体语句。

c语言中二维数组如何实现矩阵转换

如果数组是一个方阵,可以这样:

for(int i = 0; i < n; i++)
    for(int j = i + 1; j < n; j++)
    {
        int temp = a[i][j];
        a[i][j] = a[j][i];
        a[j][i] = temp;
    }

如果是一个M*N的矩阵的话,就需要重新组织数组了,但是原理差不多。

C语言如何实现下面数组的转换 1 2 3 4 1 11 14 16 5 6 7 8转换为 5 2 12 15 9 10 11 12 8 6 3 1 13 14

#include <stdio.h>
// 打印方阵
int PrintMatrix(int *matrix, int n);
// 转换方阵
int ConvertMatrix(int *des, int *src, int n);
int main()
{
    int matrixA[4][4] =
    {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12},
        {13, 14, 15, 16}
    };
    int matrixB[4][4];
    printf("Original:\n");
    PrintMatrix((int *)matrixA, 4);
    printf("After convertion:\n");
    ConvertMatrix((int *)matrixB, (int *)matrixA, 4);
    PrintMatrix((int *)matrixB, 4);
    return 0;
}
int PrintMatrix(int *matrix, int n)
{
    int i, j;
    if(!matrix || n < 1)
        return 0;
    for(i = 0; i < n; ++i)
    {
        for(j = 0; j < n; ++j)
        {
            printf("%5d", *matrix++);
        }
        puts("");
    }
    return 1;
}
int ConvertMatrix(int *des, int *src, int n)
{
    int i, j;
    if(!des || !src || n < 1)
        return 0;
    for(i = j = 0; i < n; j = 0)
    {
        while(i < n)
            *(des + n * (i++) + j++) = *src++;
        i = i - j + 1;
    }
    for(i = 0, j = 1; j < n; i = 0)
    {
        while(j < n)
            *(des + n * (i++) + j++) = *src++;
        j = j - i + 1;
    }
    return 1;
}