You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言元音字母统计程序输出错误排查:结果与预期不符

排查你的C语言元音计数代码错误

嘿,我看了你的代码和问题,马上就发现了两个关键问题导致输出不对,咱们一步步拆解:

1. 最严重的问题:固定循环长度导致统计垃圾值

你的vowel_count函数里写了for (int i = 0; i < 50; i++)——这意味着不管输入的字符串实际有多长,你都会把整个50位的字符数组从头到尾扫一遍。但C语言里的字符串是以'\0'(空字符)作为结束标记的,数组里字符串后面的未初始化部分全是随机的垃圾值,这些垃圾值大概率会包含你定义的元音字符(比如A、U之类的),所以短字符串(比如my pyx)的计数会被这些垃圾值硬生生拉高到12,完全偏离实际的2个元音。

修复方案:把循环条件改成检查当前字符是不是字符串结束符,这样只统计有效字符:

// 原来的固定循环长度改成判断字符串结束
for (int i = 0; n[i] != '\0'; i++) {

2. 次要但需要注意的缓冲区问题

你在fscanf读取数字后用fgets(unknown, 10, fp);来吃掉换行符,这个操作有小风险:如果文件里的换行符前有额外字符,或者unknown长度不够,可能会导致后续的fgets读取错位。不过从你的前三个输出是对的来看,这次没踩坑,但换成更稳妥的方式清空缓冲区更好:

// 替换掉那行fgets,用这个循环吃掉换行符
while (fgetc(fp) != '\n');

修复后的验证

改完vowel_count的循环条件后,再运行代码,输出就会和你预期的完全一致:5 4 13 2 5。比如my pyx里的两个y会被正确统计为元音,而不会把数组后面的垃圾值算进去;riszky hermawan里的5个元音也能准确计数。

内容的提问来源于stack exchange,提问作者Riszky hermawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:21:27