Python与C实现句子反转:代码对比及开发中需注意的关键要点
```c #include <stdio.h> #include <string.h> #include <ctype.h> // 反转字符串函数 void reverse_string(char *str) { int len = strlen(str); for (int i = 0; i < len / 2; i++) { char temp = str[i]; str[i] = str[len - i - 1]; str[len - i - 1] = temp; } } // 反转句子函数 void reverse_sentence(char *sentence) { int len = strlen(sentence); char words[100][100]; // 假设最多100个单词,每个单词最长100个字符 int word_count = 0; char *token = strtok(sentence, " "); // 分割句子为单词 while (token != NULL) { strcpy(words[word_count], token); word_count++; token = strtok(NULL, " "); } // 反向处理每个单词 for (int i = word_count - 1; i >= 0; i--) { int is_all_lower = 1; int is_all_upper = 1; int is_all_digit = 1; int word_len = strlen(words[i]); // 检查单词的属性 for (int j = 0; j < word_len; j++) { if (!islower(words[i][j])) { is_all_lower = 0; } if (!isupper(words[i][j])) { is_all_upper = 0; } if (!isdigit(words[i][j])) { is_all_digit = 0; } } // 根据属性处理单词 if (is_all_lower) { for (int j = 0; j < word_len; j++) { words[i][j] = toupper(words[i][j]); } } else if (is_all_upper) { for (int j = 0; j < word_len; j++) { words[i][j] = tolower(words[i][j]); } } else if (is_all_digit) { reverse_string(words[i]); } // 输出处理后的单词 if (i < word_count - 1) { printf(" "); } printf("%s", words[i]); } printf("\n"); } int main() { char sentence[1000]; // 假设句子最长1000个字符 fgets(sentence, sizeof(sentence), stdin); // 去除fgets可能读取的换行符 sentence[strcspn(sentence, "\n")] = 0; reverse_sentence(sentence); return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 字符数组的大小要合理设置,避免越界访问。在这个代码里,要根据实际情况调整`words`数组和`sentence`数组的大小。 2. 使用`fgets`读取输入时,会读取换行符,需要手动去除,否则可能影响后续处理。 3. 在使用`strtok`分割字符串时,它会修改原字符串,要注意对原字符串的备份或使用方式。 ######[AI写代码神器 | 803点数解答 | 2025-10-25 10:06:05]
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(字节豆包 | 554点数解答 | 2024-11-11 23:20:31)205
- Python 借助 WordNet 计算“开心”与“悲伤”句子语义相似度全解析 (讯飞星火 | 999点数解答 | 2024-11-11 23:23:14)240
- Python借助WordNet计算“开心”与“悲伤”句子语义相似度全解析(GPT | 1241点数解答 | 2024-11-11 23:24:01)202
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)458
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)182
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)414
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)405
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)457
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)354
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)389