当前位置: 首页 > 知识库问答 >
问题:

这个C程序计算每个元音的出现次数有什么问题?

拓拔嘉运
2023-03-14

问题:

编写一个 C 程序,提示用户输入以 ENTER 键(即 '\n')结尾的字符串,然后计算字符串中每个元音出现的总数。程序应使用以下准则: • 程序应
声明一个包含 5 个整数计数器的数组,即计数器。 •
使用循环,程序应将数组的每个成员初始化为 0。
• 然后检查字符串中的每个字符以查看它是否是元音,即“a”、“e”、“i”、“o”或“u”。在这种情况下,相应的计数器将递增。例如,如果读取“a”,则计数器 [0] 递增,如果读取“i”,则计数器 [2] 递增,依此类推。
• 输入的字符可以是小写或大写。
• 您的程序应使用循环来打印 5 个计数器的内容。
• 最后,您的程序应打印html" target="_blank">字符串中的元音总数。
结果应如下所示:请输入以 ENTER 键结尾的字符串:

"棕色的狐狸跳过了懒惰的狗"

counter[0] = 1
counter[1] = 4
counter[2] = 0
counter[3] = 4
counter[4] = 1

元音总数= 10

我的代码:

#include <stdio.h>
main(){
int counter[5];
int c, i;
for(i = 0; i < 5; i++)
counter[i] = 0;
printf("Please enter a string terminated by ENTER key:\n");
while((c = getchar()) != '\n')
{
     if((counter[i] == 'a' || counter[i] == 'e' || counter[i] == 'i' || counter[i] ==
    'o' || counter[i] == 'u') ||(counter[i] == 'A' || counter[i] == 'E' || counter[i] == 
    'I' || counter[i] == 'O' || counter[i] == 'U'))
    {
        for(i = 0; i < 5; i++)
        {
            if(c == 'a' + i)
            counter[i] = counter[i] + 1;
        }
    }
}
for(i = 0; i < 5; i++)
    printf("counter[%d] = %d\n", i, counter[i]);
}

我的柜台怎么了?提前感谢。

共有3个答案

何晗昱
2023-03-14

我想这就是你想要做的:

printf("Please enter a string terminated by ENTER key:\n");
while((c = getchar()) != '\n')
{
    if (c=='a' || c=='A')
        counter[0]++;
    else if (c=='e' || c=='E')
        counter[1]++;
    else if (c=='i' || c=='I')
        counter[2]++;
    else if (c=='o' || c=='O')
        counter[3]++;
    else if (c=='u' || c=='U')
        counter[4]++;
}
for(i = 0; i < 5; i++)
    printf("counter[%d] = %d\n", i, counter[i]);

或者使用开关:

printf("Please enter a string terminated by ENTER key:\n");
while((c = getchar()) != '\n')
{
    switch(c)
    {
        case 'a':
        case 'A': counter[0]++;
                  break;
        case 'e':
        case 'E': counter[1]++;
                  break;
        case 'i':
        case 'I': counter[2]++;
                  break;
        case 'o':
        case 'O': counter[3]++;
                  break;
        case 'u':
        case 'U': counter[4]++;
                  break;
        default: break;
    }
}
for(i = 0; i < 5; i++)
    printf("counter[%d] = %d\n", i, counter[i]);
柴文林
2023-03-14

(只是为了好玩,我的回答)

int main(void)
{
    int counter[5] = {0};
    int *i, c;

    printf("Please enter a string terminated by ENTER key:\n");
    while(i = counter, (c = getchar()) != '\n')
    {
        switch(c)
        {
          default: continue;
          case 'U'+' ': case 'U': ++ i;
          case 'O'+' ': case 'O': ++ i;
          case 'I'+' ': case 'I': ++ i;
          case 'E'+' ': case 'E': ++ i;
          case 'A'+' ': case 'A': ++*i;
        }
    }

    for(c = 0; c < 5;

    printf("counter[%d] = %d\n", c, counter[c++]));

    return 0;
}
慕逸仙
2023-03-14

首先,您应该输入main的返回类型:int(例如:int main()),这并没有破坏您的代码,但它是C标准并从编译器发出警告。

C中的字符采用ASCII编码标准中的数值:http://upload.wikimedia.org/wikipedia/commons/1/1b/ASCII-Table-wide.svg,看看那里的值(例如“a”是97),更多信息请访问维基百科:http://en.wikipedia.org/wiki/ASCII

你在最后一个for循环中所做的就是将字符与a,b,c,d,e进行比较。

我建议你为这个角色做一个改变:

switch(c) {
    case 'a':
    case 'A':
        counter[0]++;
        break;
    case 'e':
    case 'E':
        counter[1]++;
        break;
    case 'i':
    case 'I':
        counter[2]++;
        break;
    case 'o':
    case 'O':
        counter[3]++;
        break;
    case 'u':
    case 'U':
        counter[4]++;
        break;
}

或者,您可以做五个if语句。

它现在应该可以正常工作。

 类似资料:
  • 本文向大家介绍C++计算每个字符出现的次数,包括了C++计算每个字符出现的次数的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C++计算每个字符出现的次数的实现代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 问题内容: 给定一个包含重复项的整数排序数组。查找数组中存在的每个唯一元素的频率。 频率定义为数组中任何元素出现的次数。 例如 : 问题答案: 我们首先讨论divide and conquer解决这个问题的基本策略。 每次调用我们的函数时,我们将数组分成两半,每次将我们的问题分成两半,导致最坏的时间复杂度为O(log(n))。 我们的数组实际上并没有被分成两半,但是我们保留了两个指针 start

  • 问题内容: 如果我有英文文章或英文小说,并且想计算每个单词出现多少次,用Java编写的最快算法是什么? 有人说您可以使用Map ()完成此操作,但我想知道如何知道关键字是什么?每篇文章都有不同的词,您如何知道“关键”词,然后在其数量上加上一个? 问题答案: 这个数字“我是”只是一个字

  • 本文向大家介绍Java程序检查字符串中每个元音的出现,包括了Java程序检查字符串中每个元音的出现的使用技巧和注意事项,需要的朋友参考一下 要再次计算字符串中元音的出现次数,请使用java的Map实用工具计算字符串中每个字符的出现次数。将每个元音放在Map中作为键,并将每个键的初始值设置为1,现在将每个字符与map的键进行比较如果字符与键匹配,则将其对应的值增加1。 示例 输出结果

  • 问题内容: 我有一个数组如下 预期结果 尝试如下 问题答案: 无需使用jQuery即可完成此任务-此示例将构建一个对象,其中包含数组中每个不同元素的出现次数