生成C语言 把中英数字混合的二维字符串数组中的数字转换为中文
时间: 2025-01-12 16:55:34 浏览: 39
以下是一个用C语言编写的程序,可以将中英数字混合的二维字符串数组中的数字转换为中文:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 英文字符到中文数字的映射
const char* num_map[] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
// 将单个字符转换为中文数字
char* char_to_chinese(char c) {
if (c >= '0' && c <= '9') {
return (char*)num_map[c - '0'];
}
return &c;
}
// 将字符串中的数字转换为中文
void convert_to_chinese(char* str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
char* chinese = char_to_chinese(str[i]);
if (chinese != &str[i]) {
str[i] = *chinese;
}
}
}
// 处理二维字符串数组
void process_2d_array(char array[][100], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (array[i][j] == '\0') break;
convert_to_chinese(&array[i][j]);
}
}
}
int main() {
// 示例二维字符串数组
char array[][100] = {
"我有2个苹果",
"他买了10本书",
"她今年21岁",
"我们一起去了100次公园"
};
int rows = sizeof(array) / sizeof(array[0]);
int cols = sizeof(array[0]) / sizeof(char);
printf("转换前:\n");
for (int i = 0; i < rows; i++) {
printf("%s\n", array[i]);
}
process_2d_array(array, rows, cols);
printf("\n转换后:\n");
for (int i = 0; i < rows; i++) {
printf("%s\n", array[i]);
}
return 0;
}
```
这个程序定义了一个`num_map`数组,将英文字符0-9映射到中文数字"零"到"九"。`char_to_chinese`函数将单个字符转换为中文数字,`convert_to_chinese`函数将字符串中的数字转换为中文,`process_2d_array`函数处理二维字符串数组。
阅读全文