Codeforces 71A《Way Too Long Words》代码提交错误排查求助
Codeforces 71A题代码错误排查
代码存在的核心问题:
- 变量未声明:代码中使用了变量
n但未提前声明,本地宽松的编译环境可能放过这个问题,但Codeforces的编译标准会直接报错。需要在main函数开头添加int n;。 - 完全误解题目逻辑:题目要求是输入
n个单词,对每个单词判断:若长度超过10,输出「首字母+中间字符数量+尾字母」;否则原样输出。但你的代码硬编码了固定字符串palv,还错误地用字符串长度和n做比较,完全没处理输入的目标单词。 - 输入输出流程错误:正确流程应该是先读入
n,再循环n次处理每个输入的单词;你的代码既没有循环处理多单词,也没有读取用户输入的单词,用固定字符串跑逻辑,必然不符合题目要求。
修正后的示例代码:
#include <stdio.h> #include <string.h> int main() { int n; scanf("%d", &n); // 循环处理n个输入单词 for (int i = 0; i < n; i++) { char word[101]; scanf("%s", word); int len = strlen(word); if (len <= 10) { printf("%s\n", word); } else { printf("%c%d%c\n", word[0], len - 2, word[len - 1]); } } return 0; }
修正说明:
- 补全了
n的变量声明; - 使用标准库
strlen函数获取字符串长度,替代自定义的count函数,更简洁可靠; - 增加循环逻辑,依次处理每个输入的单词;
- 按照题目要求,用单词自身的长度判断是否需要缩写,而非和
n比较; - 每个结果后添加换行符,符合题目输出格式要求(每个结果单独一行)。
内容的提问来源于stack exchange,提问作者David feoerwg
相关产品推荐
相关产品推荐

