gpt4 book ai didi

C程序接受字符串输入并打印字符串中元音的数量和最重复的元音

转载 作者:行者123 更新时间:2023-11-30 16:43:19 24 4
gpt4 key购买 nike

我正在学习 C,所以我正在做不同的 C 编程挑战,其中之一就是这个程序。 WAP 接受用户输入的字符串并打印编号。元音和字符串中重复次数最多的元音。

我能够计算和打印元音的数量,但我无法弄清楚应该如何计算字符串中最重复的元音,尽管我可以直接在输出屏幕上打印出最重复的元音在内循环中有一个 vowels[i] 的打印语句。但我想计算程序本身内最重复的元音,然后有效地打印它。我尝试了不同的方法,但没有任何效果。另外,我希望保持代码小而高效。有办法吗?

这是我到目前为止所做的:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 150

int main()
{
char Statement[MAX];
char vowels[] = {'a', 'e', 'i', 'o', 'u'};
int i, j;

puts("Enter a simple statement.");
fgets(Statement, 150, stdin);
printf("\nYou entered: %s\n", Statement);
for(i=0; i<=strlen(Statement); i++){
//Converting uppercase input to lowercase
Statement[i] = tolower((unsigned char)Statement[i]);
}
//Calling the function to print no. of
NumberOfVowels(Statement, vowels); vowels

return 0;
}

int NumberOfVowels(char Statement[], char vowels[])
{
int i, j, vowelsAmount = 0, count = 0;
for(i=0; i<5; i++){ //outer loop

for(j=0; j<=strlen(Statement); j++){ //inner loop
if(vowels[i] == Statement[j]){
vowelsAmount++;
printf("%c - ", vowels[i]);
}
}
}
printf("\nTotal number of vowels = %d", vowelsAmount);
return vowelsAmount;
}

最佳答案

您可以尝试以下任何一种方法...

  • 创建一个结构体MAP,其中keyvalue作为成员。具有帮助程序方法,允许您使用 key 作为 vowel 和值作为 no 来填充 MAP 结构。 发生次数
  • 创建一个元音二维数组,其中行代表元音,列号代表元音。 发生次数
  • 最简单的理解是创建一个大小为 256 (ascii) 的数组,并在每次出现时将 array[ascii(vowel)] 处的值增加 1 .

这是实现之一(我刚刚更新了您的代码,因此它很粗糙,请努力使其看起来不错并删除多余的打印)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 150

int NumberOfVowels(char Statement[], char vowels[], int counts[])
{
int i, j = 0;

for(j=0; j<strlen(Statement); j++) {
if (Statement[j] == '\0' || Statement[j] == '\n') {
continue;
}
for(i=0; i<5; i++) {
if(vowels[i] == Statement[j]) {
int ascii = (int) vowels[i];
counts[ascii] = counts[ascii] + 1;
}
}
}

for(i=0; i<5; i++) {
int ascii = (int) vowels[i];
printf("%c - %d ", vowels[i], counts[ascii]);
}
printf("\n");
return 0;
}

int main()
{
char Statement[MAX];
char vowels[] = {'a', 'e', 'i', 'o', 'u'};
int counts[256] = {0};
int i, j;

puts("Enter a simple statement.");
fgets(Statement, 150, stdin);
printf("\nYou entered: %s\n", Statement);
for(i=0; i<=strlen(Statement); i++){
//Converting uppercase input to lowercase
Statement[i] = tolower((unsigned char)Statement[i]);
printf("%c ", Statement[i]);
}
//Calling the function to print no. of
NumberOfVowels(Statement, vowels, counts);
return 0;
}

示例运行

You entered: Hello How are you, I am fine!                                                                                                                           

h e l l o h o w a r e y o u , i a m f i n e !

a - 2 e - 3 i - 2 o - 3 u - 1

关于C程序接受字符串输入并打印字符串中元音的数量和最重复的元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45357616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com