for( i=0 ; sent[i]!='\0' ; i++)
{
if (sent[i] = ='A'||'a'||'E'||'e'||'I'||'i'||'O'||'o'||'u')
{ vow++;
}
}
现在我正在打字"我的名字是Arsal"在控制台上,它提供输出" 16个元音"这实际上是上述句子中所有字母字符和空格的数量。 当我删除" OR(s)"
时if (sent[i] = ='A' /*||'a'||'E'||'e'||'I'||'i'||'O'||'o'||'u' */)
{ vow++;
}
该程序正在输出" 1"在上面的句子。
这是完整的计划:
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
int vow=0;
char sent[100];
printf("Enter sentence ; \n");
gets(sent);
printf("\n");
int i,j;
for(i=0 ; sent[i]!='\0';i++)
{
if (sent[i] == 'A'||'a'||'E' || 'e' || 'O' ||'o'||'I'||'i' ||'U' ||'u')
{
vow++;
}
}
printf("\n No.of vowels = %d",vow);
getch();
}
请告诉我原因。
答案 0 :(得分:3)
您的&#34;或&#34;的格式不正确......
而不是if ( sent[i] == 'A' || 'a' || 'e'
....等
它需要是:
if ( sent[i] == 'A' || sent[i] == 'a' || sent[i] == 'e'
......等等
答案 1 :(得分:1)
你的表达:
sent[i] == 'A'||'a'||'E' || 'e' || 'O' ||'o'||'I'||'i' ||'U' ||'u'
对于i
的每个值,将评估为非零(即真值)。
你似乎想要的是:
if (strchr("AEIOUaeiou", sent[i])) {
++vow;
}
答案 2 :(得分:1)
请记住在C中,所有非零整数都被视为true,0被视为false 。
所以,在这里:
sent[i] == 'A'||'a'||'E' || 'e' || 'O' ||'o'||'I'||'i' ||'U' ||'u'
首先检查 sent[i] == 'A'
。这是一个将sent[i]
与'A'
进行比较的条件,如果它们相等则返回1,如果它们不是,则返回0。
现在,其余的东西('a'
,'E'
等)只是正整数(参见ASCII表)。这些评估为真,因为它们不为零。
当||
的至少一个操作数为真时,整个条件变为真(参见Logical OR的真值表)。
因此,if
的主体无论如何都会被执行。
其他答案中给出了解决方法。
答案 3 :(得分:0)
您可以使用lowerto
和switch
case
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include <ctype.h>
main()
{
int vow=0 ;
char sent[100];
printf("Enter sentence ; \n");
fgets(sent, sizeof(sent), stdin);
printf("\n");
int i;
for(i=0 ; sent[i]!='\0';i++)
{
switch (tolower(sent[i])) {
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
vow++;
}
}
printf("\n No.of vowels = %d",vow);
getch();
}
答案 4 :(得分:0)
这有效
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main( )
{
int vow = 0;
char sent[100];
printf( "Enter sentence ; \n" );
gets( sent );
printf( "\n" );
int i, j;
char c;
for ( i = 0; sent[i] != '\0'; i++ )
{
// if (sent[i] == 'A'||'a'||'E' || 'e' || 'O' ||'o'||'I'||'i' ||'U' ||'u')
c = toupper( sent[i] );
if ( c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U' )
{
vow++;
printf( "\n%c is vowel", sent[i] );
}
}
printf( "\n No.of vowels = %d", vow );
getch( );
}