本题就请你编写一个C语言程序将那些过时的、只会用一连串6666……6表达仰慕的句子翻译成最新的高级表达。输入格式:输入在一行中给出一句话即一个非空字符串由不超过 1000 个英文字母、数字和空格组成以回车结束。输出格式:从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6则将这串连续的 6 替换成 27。其他内容不受影响原样输出。
#include <stdio.h> #include <string.h>
int main() { char str[1001]; gets(str); int len = strlen(str); int cnt = 1; // 统计连续的6的个数 for (int i = 0; i < len; i++) { if (str[i] == '6') // 如果是6,计数器加1 { cnt++; } else // 如果不是6,判断连续的6的个数,做相应的替换 { if (cnt > 3 && cnt <= 9) { for (int j = 0; j < cnt; j++) { str[i - j - 1] = '9'; // 替换成9 } } else if (cnt > 9) { for (int j = 0; j < cnt; j++) { str[i - j - 1] = ' '; // 替换成空格 } str[i - cnt + 1] = '2'; // 替换成2 str[i - cnt + 2] = '7'; // 替换成7 } cnt = 1; // 计数器清零 } } // 如果最后一段连续的6的个数超过3,则做相应的替换 if (cnt > 3 && cnt <= 9) { for (int j = 0; j < cnt; j++) { str[len - j - 1] = '9'; // 替换成9 } } else if (cnt > 9) { for (int j = 0; j < cnt; j++) { str[len - j - 1] = ' '; // 替换成空格 } str[len - cnt + 1] = '2'; // 替换成2 str[len - cnt + 2] = '7'; // 替换成7 } puts(str); // 输出结果 return 0;
原文地址: https://www.cveoy.top/t/topic/hm53 著作权归作者所有。请勿转载和采集!