rokingdon 2022-01-12 10:37 采纳率: 0%
浏览 34

求多个字符串中,每个字符串的元音字符的个数,以及分别a e i o u的个数

题目是;先输入一个数字,然后要求调用函数求n个字符串中,各自的元音字母的个数,以及每个字符串A E I O U分别的个数。
我的解法是:

#include<stdio.h>
void main() {
    int n;
    char a[80];
    void countvowels(char*p);
    printf("请输入一个数字n:");
    scanf_s("%d",&n);
    for (int i = 1; 1 <= n; i++) {
        printf("输入一个字符串:");
        gets_s(a);
        countvowels(a);
    }
}
void countvowels(char *p) {
    int sum = 0, A = 0, E = 0, I = 0, O = 0, U = 0;
    for (int k = 0; p[k] != '\0'; k++) {
        if (p[k] == 'a' || p[k] == 'A') { sum++; A++; }break;
        if (p[k] == 'e' || p[k] == 'E') { sum++; E++; }break;
        if (p[k] == 'i' || p[k] == 'I') { sum++; I++; }break;
        if (p[k] == 'o' || p[k] == 'O') { sum++; O++; }break;
        if (p[k] == 'e' || p[k] == 'U') { sum++; U++; }break;
    }
    printf("元音字母个数为%d,A有%d个,E有%d个,I有%d个,O有%d个,U有%d个",sum,A,E,I,O,U);

但是在运行过程中会出现以下情况:

img

不知道原因是什么,求解这道题目。

  • 写回答

5条回答 默认 最新

  • CSDN专家-link 2022-01-12 10:42
    关注

    scanf_s("%d",&n)后面加一句getchar()
    由于输入n值的时候,你输入了回车键,导致第一次gets_s接收的只是一个换行符,自然统计的都是0了,而且不用你输入内容就会输出了
    用getchar()接收掉换行符,这样gets_s就会等待你输入字符串内容啦

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 1月12日