我刚开始使用C编程,我必须创建一个程序来计算字符串中有多少个元音。到目前为止,我有这个:
int a;
int len = strlen(text)-1
for(a=0;a==len;++a){
if(text[a]=='a'){
++vocals;}
我对什么是错的一无所知,因为它总是打印0.我理解我的代码为:
我的代码出了什么问题?
答案 0 :(得分:0)
检查有关for循环的语法和语义的教程或教科书。
它需要一个延续条件,即"循环,只要这是真的"。
因此,在您的代码中,您应该更改为:
for(a=0; a<len; ++a)
答案 1 :(得分:0)
更改此
for(a=0;a==len;++a)
到
for(a=0;a<=len;++a)
第一次迭代a
不等于len
所以它永远不会进入循环。你希望迭代这个for循环,只要a
小于len
,第二个语句就是这样。
答案 2 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char* text = "this is a test";
int i, vocals;
int len = strlen(text);
for(i=0;i<len;++i){
if(text[i]=='a'||text[i]=='e'||text[i]=='i'||text[i]=='o'||text[i]=='u')
++vocals;
}
printf("%d\n", vocals);
}
这是一个有效的小程序。 让我们一起看看主要内容:
<
或>
代替!=
或==
来增加代码强度是一种很好的编程习惯。无论如何,因为它是一个小程序,你甚至可以使用!=
,这意味着&#34;执行for循环直到i
等于len
&#34; ||
运算符意味着or
。编辑:
有很多更有效(和复杂)的方法来做到这一点。例如,使用Regular Expression。如果您有兴趣,可以在线获得大量优秀教程,例如this
答案 3 :(得分:0)
此代码段
int a;
int len = strlen(text)-1
for(a=0;a==len;++a){
if(text[a]=='a'){
++vocals;}
没有多大意义。
例如,字符'a'
不是唯一的元音,仅当字符串只包含一个字符时,条件a == len
才会被计算为true。
您可以编写一个单独的函数来计算字符串中的元音。
这是一个示范程序。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
size_t count_vowels( const char *s )
{
const char *vowels = "aeiou";
size_t count = 0;
for ( ; *s; ++s )
{
if ( strchr( vowels, tolower( ( unsigned char )*s ) ) )
{
++count;
}
}
return count;
}
int main(void)
{
char s[] = "Hello Pelput";
printf( "There are %zu vowels in the string\n\"%s\"\n",
count_vowels( s ), s );
return 0;
}
程序输出
There are 4 vowels in the string
"Hello Pelput"