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

元音计数不正确

夔波
2023-03-14

我正试图写一个C程序来计算元音、键击和字母字符的数量。击键计数器正在工作,但是元音计数器总是关闭一个元音。阿尔法计数器坏了。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>


int main(int argc, char *argv[])
{
  int keystrokes = 0;           //Number of keystrokes.
  int letters = 0;                  //Number of total letters.
  int vowels = 0;               //Number of vowels.
  int i = 0;
  char sentence[0];                  //Chararacter array specified to users input.

 while((sentence[i] = getchar()) != '\n')

  {
      if(sentence[i] == 'a' || sentence[i] == 'e' || sentence[i] == 'i' || sentence[i] == 'o' ||sentence[i] =='u'|| sentence[i] == 'A' || sentence[i] == 'E' || sentence[i] == 'I' || sentence[i] == 'O' ||sentence[i] == 'U' )
      {
          ++keystrokes;
          ++letters;
          ++vowels;
      }
      else
      {
          if (isalpha(sentence[i]) == 1) // if character is true
          {
              ++keystrokes;
              ++letters;
          }
          else
          {
              ++keystrokes;
              i++;
          }
      }
  }




  printf("SAMPLE OUTPUT, for EACH sentence above:\n");
  printf("Keystrokes %d \n", keystrokes);
  printf("Alpha Characters %d \n", letters);
  printf("Vowels %d \n", vowels);




  return 0;
}

共有3个答案

裴威
2023-03-14

我同意Alan AU关于将句子替换为get_char的观点。我还将(isalpha(句子[i])==1)更改为(isalpha(句子[i]))
我承认我对编程还是新手,但是在我进行更改之前,您的代码没有正确地增加字母。

丌官皓君
2023-03-14

你的问题是你有由内存损坏引起的不确定行为。

char sentence[0];

声明了一个0字符数组。只需去掉数组和i索引。也就是说,将char语句[0]更改为类似于charcurrent_char,然后将语句[i]的所有实例替换为current_char

谢骏奇
2023-03-14

你有很多问题。通过说< code>char sentence[0],您实际上是说没有字节的内存来存储输入。访问< code>sentence[i]将会“越界”并覆盖内存的其他部分,导致未定义的行为。

首先,将字符句子[0]更改为字符句子[100]。然后仔细查看增加计数器的位置,即 if/else 流在程序中的样子。举个例子:目前,当你有一个元音时,没有达到对isalpha()的检查,也没有达到i .

 类似资料:
  • 我已经开始了一个计算元音的程序,似乎毫无进展。我需要从字符串中计数元音,然后显示元音。我需要通过在变量中存储出现次数来做到这一点。像这样: 当前代码(没有那么多): 我自己尝试了很多方法,但似乎都没有成功。

  • 我一直在环顾该网站,但找不到问题的答案。我需要能够浏览给定数量的字符串并计算单词中的元音数量。如果元音的数量与之前输入的数字匹配,则打印 YES。我尝试使用字符串数组,然后遍历数组中的每个单词以查找元音,为找到的每个元音增加元音检查(vocheck),然后检查vocheck是否等于适当的数字。但是,当我检查 vocheck for 循环是否有效时,它只是将 vocheck 保持为 0。怎么了? 这

  • 我做了一个程序来计算输入字符串中元音和辅音的数量: 当“y”本身是辅音时,它应该是元音。我在哪里陈述?

  • Imma java新手,所以我试着学东西。我创建了一个布尔方法,这是一个小的骰子游戏。我需要这个方法是从main方法调用,并继续玩,而返回值是真的(游戏是赢的),但停止执行,如果返回值是假的。我也需要多少次球员赢了。所以我创造了这样的东西: 初始化为私有静态int

  • 本文向大家介绍计算C ++中的元音排列,包括了计算C ++中的元音排列的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数字n,我们必须计算使用这些规则可以形成多少个长度为n的字符串-每个字符都是小写的元音每个元音'a'只能跟一个'e'。每个元音“ e”只能跟一个“ a”或“ i”。每个元音“ i”都不能跟在另一个“ i”之后。每个元音“ o”只能跟一个“ i”或“ u”。每个元音“ u”只

  • 我正在尝试匹配从服务器下载的文件的md5sum。只有当总和匹配时,处理才会继续。 上面的代码并没有每次为某些文件正确提供md5sum。 当我去控制台检查md5sum时 下载文件的vimdiff未提供任何差异。。下载后的文件是正确的。 我无法在上述代码中看到问题。 我正在尝试更改缓冲区大小。但没有运气,所以我猜这不是因为缓冲区大小等。 问候Dheeraj Joshi