输入20个字符串的数组。制作一个程序,打印出辅音多于元音的字符串,其中字母“r”至少重复3次。
我相信问题出在我的 if 循环中,但不知何故我不明白为什么它不能正常工作。它会打印我输入的每个字符串。
这是我写的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char string[20][50];
int i, j;
int vowels=0;
int consonants=0;
int repeated_r=0;
printf("Enter the array of 20 strings:\n");
for(i=0;i<20;i++){
gets(string[i]);
}
for(i=0;i<20;i++){
for(j=0;j<50;j++){
if(string[i][j] == 'r'){
repeated_r++;
}
else if(string[i][j] == 'a' || string[i][j] == 'e' || string[i][j] == 'i' || string[i][j] == 'o' || string[i][j] == 'u'){
vowels++;
}
else{
consonants++;
}
}
if(consonants>vowels && repeated_r>=3){
fflush(stdin);
puts(string[i]);
}
}
return 0;
}
你的代码中还有一个问题,ypu正在使用get。它还会包括空格,所以如果你的字符串是“__rrrbaeeeeiou_”。它会打印这个字符串,但实际上这个字符串不应该被打印出来。请注意,“”意味着一个空格。根据你的代码,“_”将被计算为辅音,即使你的字符串中有4个辅音(3个r和1 b)和8个元音,它也会打印这个字符串作为输出,因为空格将被计算为辅音。同样在你的代码中,r不被计算为辅音
您没有重置外部循环中变量的初始值
int vowels=0;
int consonants=0;
int repeated_r=0;
也是内循环中的条件
for(j=0;j<50;j++){
^^^^
不正确,因为在这种情况下,除了数组中存储的字符串之外,还有对内存的访问。
字母'r'
不算作辅音。
请考虑函数get
不是标准的C函数,因为C标准不再支持它。
这通电话
fflush(stdin);
具有未定义的行为。
我可以建议以下解决方案,如下面的演示程序所示。
#include <stdio.h>
#include <string.h>
int main( void )
{
enum { M = 3, N = 50 };
char s[M][N];
for ( size_t i = 0; i < M; i++ )
{
fgets( s[i], N, stdin );
s[i][strcspn( s[i], "\n" )] = '\0';
}
const char *vowels = "aeiou";
const char r = 'r';
for ( size_t i = 0; i < M; i++ )
{
size_t repeated_r = 0;
size_t vowels_count = 0;
size_t n = strlen( s[i] );
for ( size_t j = 0; j < n; j++ )
{
repeated_r += s[i][j] == r;
vowels_count += strchr( vowels, s[i][j] ) != NULL;
}
if ( repeated_r >= 3 && vowels_count < n - vowels_count )
{
puts( s[i] );
}
}
return 0;
}
如果输入以下字符串
Hello World
errors
photosynthesis_bro
那么程序输出可能看起来像
errors
您需要在处理每个字符串后重置计数器。
并且不要使用 get
使用费吉特
。
for(i=0;i<20;i++){
for(j=0;j<50;j++){
if(string[i][j] == 'r'){
repeated_r++;
}
else if(string[i][j] == 'a' || string[i][j] == 'e' || string[i][j] == 'i' || string[i][j] == 'o' || string[i][j] == 'u'){
vowels++;
}
else{
consonants++;
}
}
if(consonants>vowels && repeated_r>3){
fflush(stdin);
puts(string[i]);
}
//Reset the counters
consonants =0;
vowels =0;
repeated_r =0;
}
}
另请注意,在您当前的代码中,r
不被视为辅音。
我希望用户能够输入一段字符串(我知道该怎么做) 然后我想让Python计算每个元音(aeiou)使用了多少次。 在计算了每个元音使用的次数后,我需要程序返回最少使用的元音,至少使用一次。如果没有使用元音,就不应该返回。如果最少使用的数量相同,则两者都应退回。 如果没有使用元音,它应该打印一个错误代码“没有使用元音”(我知道怎么做) 例如:如果这是元音在一个句子中使用的次数: 它应该打印“最少使用的
我做了一个程序来计算输入字符串中元音和辅音的数量: 当“y”本身是辅音时,它应该是元音。我在哪里陈述?
我正在研究一个程序,可以计算字符串中元音的数量。我有它的工作,但如果Y后面跟着一个辅音,我就无法计算Y。我的VOWEL_GROUP是“AEIOUAEOU”,它返回普通元音的数量,但不返回“y”。我让它看看charAt(I),看看它是否被元音组中的字符以外的其他字符所取代。谢谢你的帮助。以下是显示错误的输入和输出
本文向大家介绍如何在Python中检测元音与辅音?,包括了如何在Python中检测元音与辅音?的使用技巧和注意事项,需要的朋友参考一下 首先,您应该检查字符是否为字母。然后,您可以创建一个元音列表,并使用该列表检查字符是否为元音。如果没有,那一定是辅音。例如, 这将给出输出:
JAVA: 编写一个类,其中构造函数接受一个String对象作为其参数。该类应该有一个方法返回字符串中元音的数量,另一个方法返回字符串中辅音的数量。(空格既不计元音也不计辅音,应该忽略。) 在执行以下步骤的程序中演示该类: 要求用户输入字符串 程序显示以下菜单: a、 计算字符串中元音的数量。 b、 数一数字符串中的辅音数 c、 数一数字符串中的元音和辅音 d、 输入另一个字符串 e、 退出程序
样本输出字符串:检测到汉娜输出元音的最后一部分:检测到辅音:h n n h