【问题标题】:Finding whether an input contains a vowel查找输入是否包含元音
【发布时间】:2021-03-29 02:25:51
【问题描述】:

样本输入包含:3、omahgoToRuLob、OmAhgotUrulobEI、aYfun 预期的输出是:丑陋的字符串 漂亮的字符串 漂亮的字符串

我收到一个错误,例如: 22:7:错误:“字符串”中缺少数组大小 27:23:错误:“]”标记之前的预期表达式 29:14:错误:“]”标记之前的预期表达式

我的代码是用 c 编程的。

#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main(){
    int i;
    char string[100];
    char vowels = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"};

    for (i = 1; i < 4; ++i)
    {
        scanf("%99s", string[]);

        if (string[] == vowels) 
            printf("lovely string \n");
        else
            printf("ugly string \n");

    }

    return 0;
}

【问题讨论】:

  • 试试char string[]; --> char string[100]; 和scanf("%s", &amp;string[]); --> scanf("%99s", string);。 string[] == vowels --> 研究strspn()
  • 我已经按照你的建议编辑了我的代码,但我仍然收到同样的错误。
  • 下标运算符[]用于表示程序员希望访问数组的第i个索引。因此,编译器希望在] 标记之前有一个索引值(例如 0、1、2 等)。
  • @Chewjunnie 看起来你跳过了研究strspn()。
  • 很难帮助你,因为这几乎没有任何意义。也就是说,我无法告诉您如何修复您编写的内容,因为我无法告诉您您期望您的代码是什么意思。例如,您有if (string[] == vowels),您希望与什么进行比较?你知道[] 不是变量名的一部分,对吧?如果您想知道元音是否在某个字符串中,它如何帮助您检查字符串是否等于?

标签: c


【解决方案1】:
  1. 你不能在没有定义数组大小的情况下声明一个数组,除非你动态地这样做
  2. 您声明了一个字符,但您将所有元音分配给该字符。
    • char vowels[] = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
  3. scanf("%s", string); 是使用带有字符串的 scanf() 的正确方法。此外,您希望将其排除在 for 循环之外,因为您只需获取一次输入
  4. 您的循环中有一个变量i 没有使用。此外,您有i&lt;4,而输入可能更大
  5. 阅读this 了解 i++ 和 ++i
  6. 您还必须将输入字符串的每个字符与元音数组的每个字符进行比较
  7. 您不需要同时存储小写和大写元音。使用ctype.h 中的tolower(char c) 函数将输入字符转换为小写,并仅将它们与小写元音进行比较。

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 2011-01-10
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多