- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
计算单词中元音的个数请编写一个程序来计算输入单词列表中有多少个元音字母(‘a’、‘e’、‘i’、‘o’、‘u’)。您的程序一个一个地读取单词并打印每个单词中出现的元音数量。每个单词仅由混合大小写的字母组成。程序重复这个过程,直到遇到单词“exit”(不区分大小写)。在这种情况下,在“exit”中打印出元音的个数后终止程序。终止后,程序将忽略剩余的输入(如果有)。
输入:跨行的多个单词。每个单词不得超过 50 个字符。单词之间用空格分隔。
输出:每个输入单词中元音的数量,以换行符分隔。即,一行中的一个数字。
Sample run #1:
I
1
went
1
apple
2
school
2
by
0
BUS
1
Exit
2
Sample run #2:
I go to school
1
1
1
2
by QQ email
0
0
3
Ai yAh Oooops
2
1
4
um
1
eXiT ignore these please
2
我正在为这个程序编写代码并尝试了这个代码。它似乎给出了正确的输出,但仍然没有完全信任我的学校代码检查器。似乎是什么问题?
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int isVowel(char c);
int isExit(char* c);
int main(void)
{
char s1[51];
int N, i, v = 0;
int noExit = 1;
while (noExit)
{
fgets(s1, 51, stdin);
N = strlen(s1);
for (i = 0; i < N; i++)
{
if (isExit(&s1[i]))
{
printf("2\n");
noExit = 0;
break;
}
else
{
if (isVowel(s1[i]))
{
v++;
}
else if (s1[i] == ' ' || s1[i] == '\n')
{
printf("%d\n", v);
v = 0;
}
}
}
}
return 0;
}
int isVowel(char c)
{
c = toupper(c);
if (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U' || c == 'a'
|| c == 'e' || c == 'i' || c == 'o' || c == 'u')
return 1;
else
return 0;
}
int isExit(char* c)
{
if ((toupper(c[0]) == 'E') && (toupper(c[1]) == 'X')
&& (toupper(c[2]) == 'I') && (toupper(c[3]) == 'T'))
{
return 1;
}
else
{
return 0;
}
}
最佳答案
有多个问题可以解释较低的分数:
scanf()
一次读取一个单词。exit
就退出程序,即使在单词的中间,这也太强了,不需要:你所说的要求是 程序重复这个处理直到遇到单词 exit
(不区分大小写)。在这种情况下,在 exit
中打印元音数后终止程序。toupper(c)
,其中 c
的类型为 char
。如果 c
为负数,这有潜在的未定义行为。isVowel()
中将字符大写,但仍将其与小写元音进行比较。c
是 char *
名称的错误选择,最好使用 s
或 str
。这是一个更简单的版本:
#include <ctype.h>
#include <stdio.h>
int isVowel(char c);
int isExit(const char *c);
int main(void) {
char s1[51];
int i, v;
while (scanf("%50s", s1) == 1) {
for (i = v = 0; s1[i] != '\0'; i++) {
if (isVowel(s1[i])) {
v++;
}
}
printf("%d\n", v);
if (isExit(s1))
break;
}
return 0;
}
int isVowel(char c) {
c = toupper((unsigned char)c);
return (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');
}
int isExit(const char *s) {
return (toupper((unsigned char)s[0]) == 'E'
&& toupper((unsigned char)s[1]) == 'X'
&& toupper((unsigned char)s[2]) == 'I'
&& toupper((unsigned char)s[3]) == 'T'
&& s[4] == '\0');
}
关于计算给定单词输入中的元音数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42997455/
我试图在 haskell 上创建一个函数,我知道该函数的定义如下: justWithA : [Char] -> Bool justWithA [] = True justWithA (x:xs) |
我试图在 haskell 上创建一个函数,我知道该函数的定义如下: justWithA : [Char] -> Bool justWithA [] = True justWithA (x:xs) |
我正在尝试计算字符串中元音的总数。我正在使用 strlen 来获取字符串的总长度,但是当我尝试按每个字母对字符串进行计数时,它说 C++ 禁止比较。所以我假设我的 if 语句有问题。 #include
Task You are given a string . It consists of alphanumeric characters, spaces and symbols(+,-). Your
我刚刚开始用 C 语言编程,我必须创建一个程序来计算字符串有多少个元音。到目前为止我有这个: int a; int len = strlen(text)-1 for(a=0;a==len;++a){
尝试学习 Python 中的正则表达式以查找具有连续元音-辅音或辅音-元音组合的单词。我将如何在正则表达式中执行此操作?如果无法在 Regex 中完成,是否有一种在 Python 中执行此操作的有效方
我想输入 dagger-alif、dagger-waw 和 dagger-ya(也称为微型 alif、微型哇和微型 ya)作为 alif-wasla 使用 PC 阿拉伯语键盘。这些标记被使用帮助读者发
我正在尝试创建一个将文件上传到 FTP 服务器的批处理文件。除了一个特定文件夹的名称中包含突变/元音外,一切正常(无法更改。也就是文件夹名称中包含 ö。)。 我的问题是:有哪些选择可以实现这一目标?
我是一名优秀的程序员,十分优秀!