用c语言设计一个函数fun的功能,有N*N矩阵,根据给定的m(m<n)值,将每行元素的值均右移m个位置,左边设置为0
时间: 2024-09-10 14:26:24 浏览: 56
C语言程序设计-在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的积,并在fun() 函数中输出
5星 · 资源好评率100%
在 C 语言中,你可以通过两层循环来实现这个功能。首先遍历每一行,然后在每行内部再循环移动元素。这里是一个简单的 `fun` 函数的设计示例:
```c
#include <stdio.h>
#include <stdlib.h>
void fun(int N, int m, int matrix[N][N]) {
for (int i = 0; i < N; ++i) { // 遍历每一行
int temp[m]; // 创建临时数组存储右移后的元素
int j = N - 1; // 从右向左开始
// 将第i行的元素移到temp数组中,并填充0
for (int k = m; k > 0; --k) {
temp[k - 1] = matrix[i][j];
j--;
}
// 将剩余的元素复制回原矩阵,包括0
for (int k = 0; k < m; ++k) {
matrix[i][k] = temp[k];
}
}
}
// 测试函数
int main() {
int N = 5;
int m = 2;
int matrix[N][N] = { {1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25} };
fun(N, m, matrix);
// 打印结果矩阵
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文