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

C++统计元音与空格数量异常:输入字符串后结果全为0

C++元音字母与空格统计结果全为0的修复方案

问题根源

你的代码统计结果全为0,核心是两个关键错误:

  1. 输入逻辑错误:cin >> str[99]; 仅读取单个字符存入数组最后一位,且cin默认遇到空格就停止读取,导致输入的"WELCOME TO ARRAYS"只有首字符被存入,后续内容完全没进入数组。
  2. 字符串终止符缺失:未初始化的char str[100]内存是随机值,strlen(str)依赖末尾的'\0'计算长度,没有正确终止符的话,循环无法正确遍历有效字符。

微调后的代码

#include <iostream>
#include <cstring>  // 补充strlen所需的头文件
#include<conio.h>
using namespace std;

int main()
{
   char str[100] = {0};  // 初始化数组为全0,确保字符串有正确终止符
   int a, e, i, o, u, whitespace;
   a = e = i = o = u = whitespace = 0;
   int k;

   cout << "Enter a string: ";
   cin.getline(str, sizeof(str));  // 改用getline读取含空格的整行输入
        
   for (k = 0; k < strlen(str); k++)
   {
       if (str[k] == 'A') a++;
       else if (str[k] == 'E') e++;
       else if (str[k] == 'I') i++;
       else if (str[k] == 'O') o++;
       else if (str[k] == 'U') u++;
       else if (str[k] == ' ') whitespace++;
   }

   cout << "\nVowels:\n";
   cout << "A " << a;
   cout << "\nE " << e;
   cout << "\nI " << i;
   cout << "\nO " << o;
   cout << "\nU " << u;
   cout << "\nWhitespaces - " << whitespace;

    return 0;
}

修改说明

  • 数组初始化:char str[100] = {0}; 让数组所有元素初始化为0,保证字符串末尾存在'\0',strlen能正确计算有效长度。
  • 输入方式替换:cin.getline(str, sizeof(str)); 可以读取包含空格的整行内容,直到换行符为止,sizeof(str)避免数组越界。
  • 补充头文件:显式添加<cstring>,确保strlen函数能正常编译(部分编译器可能隐式包含,但规范写法需要显式声明)。

输入"WELCOME TO ARRAYS"后,会得到正确统计结果:A:1,E:2,O:2,空格数:2,其余元音为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:05:21