C语言实现:句子反转,单词大小写与数字倒转处理
以下是一个用C语言实现的句子反转程序,满足题目要求: ```c #include <stdio.h> #include <string.h> #include <ctype.h> void reverse_word(char *word) { int len = strlen(word); for (int i = 0; i < len / 2; i++) { char temp = word[i]; word[i] = word[len - 1 - i]; word[len - 1 - i] = temp; } } void process_word(char *word) { int is_number = 1; for (int i = 0; word[i] != '\0'; i++) { if (!isdigit(word[i])) { is_number = 0; break; } } if (is_number) { reverse_word(word); } else { for (int i = 0; word[i] != '\0'; i++) { if (islower(word[i])) { word[i] = toupper(word[i]); } else if (isupper(word[i])) { word[i] = tolower(word[i]); } } } } int main() { char sentence[6001]; // 假设每个单词最长6个字符,最多1000个单词,加上空格和结束符 fgets(sentence, sizeof(sentence), stdin); sentence[strcspn(sentence, "\n")] = '\0'; // 移除换行符 char *words[1000]; int word_count = 0; char *token = strtok(sentence, " "); while (token != NULL) { words[word_count++] = token; token = strtok(NULL, " "); } for (int i = word_count - 1; i >= 0; i--) { process_word(words[i]); printf("%s", words[i]); if (i > 0) { printf(" "); } } printf("\n"); return 0; } ``` 代码说明: 1. reverse_word函数:反转输入的字符串。 2. process_word函数:处理每个单词: - 检查单词是否为数字,如果是则反转。 - 如果不是数字,则转换大小写:小写转大写,大写转小写。 3. main函数: - 读取输入句子。 - 使用`strtok`分割句子为单词数组。 - 逆序处理单词数组,调用`process_word`处理每个单词。 - 输出处理后的单词,单词间用空格分隔。 注意事项: 1. 输入句子长度不超过6000个字符(1000个单词,每个最多6个字符,加上空格和结束符)。 2. 使用`fgets`读取输入,确保安全。 3. 处理完输入后,移除末尾的换行符。 4. 使用`strtok`分割字符串时,注意它会修改原始字符串。 调试与优化建议: 1. 输入处理:确保输入句子长度不超过缓冲区大小。 2. 内存管理:`strtok`会修改原始字符串,如果需要保留原始输入,应先复制。 3. 性能:对于大规模数据,可以考虑更高效的字符串处理方式。 示例输入输出: - 输入:`we choose to go 2 the 123 moon` - 输出:`MOON 321 THE 2 GO TO CHOOSE WE` 代码优化点: 1. 可以预先计算单词数量,避免动态调整数组大小。 2. 使用更高效的字符串反转方法(如指针交换)。 3. 添加输入验证,确保单词数量不超过1000。 调试建议: 1. 检查`strtok`是否正确分割字符串。 2. 确保`process_word`正确处理数字和非数字单词。 3. 验证逆序输出是否正确。 注意事项: 1. 输入长度:确保输入不超过缓冲区大小。 2. 字符串修改:`strtok`会修改原始字符串,如需保留,应先复制。 3. 边界条件:处理空输入或单个单词的情况。 ######[AI写代码神器 | 1010点数解答 | 2025-10-25 11:34:26]
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(字节豆包 | 554点数解答 | 2024-11-11 23:20:31)204
- Python 借助 WordNet 计算“开心”与“悲伤”句子语义相似度全解析 (讯飞星火 | 999点数解答 | 2024-11-11 23:23:14)239
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(GPT | 1241点数解答 | 2024-11-11 23:24:01)201
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)36
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)41
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)459
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)264
- Python 与 C 语言:一行字符串中单词个数统计的实现与解析(字节豆包 | 658点数解答 | 2025-12-07 17:39:44)36
- Python 实现输入字符串统计单词个数,轻松解决连续空格难题!(DeepSeek | 141点数解答 | 2025-12-14 20:12:06)47
- Python:用正则表达式从含多种字符的字符串中提取英文、数字和中文单词(GPT | 522点数解答 | 2024-05-31 19:05:27)313
- Python:用正则表达式结合 split 思路提取一行字符串中的英文、数字和中文单词 (GPT | 399点数解答 | 2024-05-31 19:07:31)310