把这个python代码转换为c语言代码
时间: 2024-11-25 19:32:29 浏览: 22
Python和C语言有不同的语法结构和数据类型处理方式,下面是将给定的Python代码转换为C语言的基本版本:
```c
#include <stdio.h>
#include <string.h>
#define MAX_ROW 100
#define MAX_COL 100
// 函数声明,用于打印矩阵
void print_matrix(int n, int m, int matrix[MAX_ROW][MAX_COL]);
int main() {
int n, m;
scanf("%d %d", &n, &m);
// 初始化矩阵,所有元素默认为0
int matrix[MAX_ROW][MAX_COL] = {0};
int num = 1;
// 生成矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if ((j == 0 || (i % 2 == 0 && j > 0) || (i % 2 == 1 && j < m - 1))) {
matrix[i][j] = num++;
}
}
// 对于奇数行,交换首尾元素
if (i % 2 != 0) {
int temp = matrix[i][0];
matrix[i][0] = matrix[i][m - 1];
matrix[i][m - 1] = temp;
}
}
// 打印矩阵
print_matrix(n, m, matrix);
return 0;
}
// C语言版的打印函数
void print_matrix(int n, int m, int matrix[MAX_ROW][MAX_COL]) {
for (int i = 0; i < n; i++) {
char line[5*(m+1) + 1]; // 包含空格和换行符的空间
int pos = 0;
for (int j = 0; j < m; j++) {
sprintf(&line[pos], "%5d", matrix[i][j]);
pos += strlen(line); // 移动到下一个位置
}
printf("%s\n", line);
}
}
```
请注意,C语言中字符串操作有所不同,这里使用了`sprintf`函数代替了Python中的`str.zfill`。此外,C语言没有内置的列表推导式,所以初始化矩阵的方式稍微繁琐一些。
阅读全文