本文目录一览:
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;
}