gpt4 book ai didi

c - 我计算字符串中元音数量的程序总是输出 0 或 1

转载 作者:太空宇宙 更新时间:2023-11-04 00:17:52 25 4
gpt4 key购买 nike

我是 C 的初学者。

我正在尝试编写一个简单的程序来计算用户输入的字符串中元音的数量。我正在使用 do-while 循环遍历字符串。这是我的代码:

#include<stdio.h>
#include<conio.h>
void main()
{
int a[10], x=0, v=0;
clrscr();
printf("ENTER A STRING: ");
gets(a);
do {
if(a[x]=='a' || a[x]=='e' || a[x]=='i' || a[x]=='o' || a[x]=='u')
v++;
x++;
} while(a[x] != '\0');
printf("\nTHERE ARE %d VOWELS IN THE STRING.",v);
getch();
}

出于某种原因,不管输入了多少个元音字母,输出结果要么是 1 要么是 0。

这是输出:

ENTER A STRING: aeiou

THERE ARE 1 VOWELS IN THE STRING.

我无法找出错误。

最佳答案

您已将 a 声明为 int 数组(而不是 char 数组),这就是您遇到问题的原因。

如果您对为什么总是看到 01 感兴趣,请考虑一个四字节的 int 并读入字符串 aeiou(gets 假设是一个字符数组):

  a[0]   a[1]
| aeio | u |

如您所见,除了最后的 int 必须 以外的所有字符都由四个字节组成,因此永远不会等于单字节元音字符(除非其中三个是 NUL 字符,但这不太可能来自用户输入)。最后一个将是单个字符,如果它是元音字母,它会给你 1(否则为 0),或者是 2/3/4 字符 int 又不能是元音。

a 声明为 char a[10],这将允许您存储字符串并访问其各个字符元素。

关于c - 我计算字符串中元音数量的程序总是输出 0 或 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40868022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com