C语言编写函数实现m*n的整数矩阵转置
时间: 2023-05-21 16:07:04 浏览: 153
以下是函数实现m*n的整数矩阵转置的 C 代码:
```c
void transpose(int array[m][n])
{
int i, j, temp;
for(i=0; i<m; i++)
{
for(j=i+1; j<n; j++)
{
temp = array[i][j];
array[i][j] = array[j][i];
array[j][i] = temp;
}
}
}
```
该函数接受一个大小为 m*n 的矩阵,将其转置后保存在原来的数组中。在主函数中,只需要调用该函数并将矩阵作为参数传递即可。
相关问题
用C语言编写一个用三种加密方法实现明文到暗文的加密程序,其中一个4*4的矩阵转置(输入的数字字母或者符号是横着的,经过解密后变成竖着的)三个加密方式生成一个菜单
在C语言中,我们可以创建一个简单的加密程序,包含一个矩阵转置功能以及两个常见的简单加密算法,如Caesar密码和凯撒左移(一种基于位移的替换加密)。这里是一个基础的示例,首先我们定义一个函数用于矩阵转置,然后添加两个加密算法作为选择:
```c
#include <stdio.h>
#include <string.h>
// 矩阵转置函数
void transpose(int matrix[4][4], int result[4][4]) {
for (int i = 0; i < 4; i++) {
for (int j = i; j < 4; j++) {
result[j][i] = matrix[i][j];
}
}
}
// Caesar Cipher encryption
char caesar_encrypt(char c, int shift) {
if (c >= 'a' && c <= 'z') {
return ((c - 'a' + shift) % 26) + 'a';
} else if (c >= 'A' && c <= 'Z') {
return ((c - 'A' + shift) % 26) + 'A';
}
// For non-alphabetic characters, return as is
return c;
}
// 凯撒左移加密
char left_shift_encrypt(char c, int shift) {
return caesar_encrypt(c, shift);
}
// 主函数
int main() {
int matrix[4][4] = { {'1', '2', '3', '4'},
{'5', '6', '7', '8'},
{'9', 'A', 'B', 'C'},
{'D', 'E', 'F', 'G'} }; // 示例矩阵
int transposed_matrix[4][4];
printf("加密选项:\n1. 矩阵转置\n2. Caesar Cipher (Shift: 输入一个整数)\n3. Caesar Left Shift (Shift: 输入一个整数)\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
transpose(matrix, transposed_matrix);
printf("转置后的矩阵:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%c ", transposed_matrix[i][j]);
}
printf("\n");
}
break;
case 2:
case 3:
int shift;
printf("请输入加密偏移量: ");
scanf("%d", &shift);
char encrypted_text[20]; // 预留足够空间
for (int i = 0; i < 16; i++) {
encrypted_text[i] = caesar_left_shift_encrypt(matrix[i / 4][i % 4], shift);
}
encrypted_text[16] = '\0'; // 结束字符串
printf("加密后的文本: %s\n", encrypted_text);
break;
default:
printf("无效的选择.\n");
break;
}
return 0;
}
```
运行这个程序,你可以选择加密方式并输入相应的参数,程序将显示结果。注意这只是一个基本的示例,并未涉及更高级的加密技术。
用c语言编写一个函数convent,求一个4*4方阵的转置矩阵;主函数中输入方阵,在主函数中将原矩阵和转置矩阵按格式输出
在 C 语言中,你可以创建一个 `conver` 函数来计算并返回一个 4x4 矩阵的转置。首先,你需要定义一个结构体表示矩阵元素,然后声明和定义该函数。这里是一个简单的示例:
```c
#include <stdio.h>
// 定义矩阵元素结构体
typedef struct {
int data[4][4];
} Matrix;
// 函数定义:计算并返回转置矩阵
Matrix convert(Matrix matrix) {
Matrix transposed;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
transposed.data[j][i] = matrix.data[i][j]; // 交换行和列
}
}
return transposed;
}
// 主函数
void main() {
Matrix original;
printf("请输入 4x4 方阵(每行四个整数,空格分隔):");
// 读取用户输入
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
scanf("%d", &original.data[i][j]);
}
printf("\n"); // 按行显示输入,换行
}
// 计算转置矩阵
Matrix transpose = convert(original);
// 输出原始矩阵和转置矩阵
printf("原始矩阵:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", original.data[i][j]);
}
printf("\n");
}
printf("转置矩阵:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", transpose.data[i][j]);
}
printf("\n");
}
// 结束程序
return;
}
```
当你运行这个程序时,它会提示用户输入一个 4x4 的矩阵,然后显示原矩阵和转置矩阵。
阅读全文