Проверьте, является ли персонаж гласным или согласным - PullRequest
0 голосов
/ 08 марта 2020

Мне нужно проверить, является ли символ гласным или согласным в качестве функции, и он возвращает 1, если это гласный, и возвращает 0, если он согласен

Это то, что я придумал

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

int vowel(char c) {
    int lowercase, uppercase;

    lowercase = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
    uppercase = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');

    if (lowercase || uppercase)
        return 1;
    else
        return 0;
}

int main() {
    char c;

    printf("Enter an alphabet: ");
    scanf("%c", &c);
    vowel(c);

}

Ввод: a

Ввод: процесс вернул 0

Ответы [ 4 ]

1 голос
/ 08 марта 2020

Ваша функция int vowel(char c) выглядит нормально, хотя для удобства чтения и улучшения возможностей оптимизации компилятора я бы использовал выражение switch, например:

int vowel(char c) {
    switch(tolower(c)){
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            return 1;
        default:
            return 0;
    }
}

Второе наблюдение заключается в том, что вы, кажется, игнорируете результат выполнения функции в целом. Я мог только предположить, что вы должны были что-то с этим сделать, например, распечатать результат. Что-то вроде этого (вместо кода v̶o̶w̶e̶l̶ (̶c̶) ̶;)):

printf("\nThe character '%c' is %sa vowel\n", c, vowel(c) ? "" : "not ");
0 голосов
/ 08 марта 2020
#include <stdio.h>
#include <stdlib.h>


int vowel(char c) {
    int lowercase, uppercase;

    lowercase = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
    uppercase = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');

    if (lowercase || uppercase)
        return 1;
    else
        return 0;
}

int main() {
    char c;
    printf("Enter an alphabet: ");
    scanf("%c", &c);
    int a=vowel(c);
    if(a==1)
        printf("vowel");
    if(a==0)
        printf("consonant");
}
0 голосов
/ 08 марта 2020

Отвечая на ваши вопросы один за другим

Во-первых,

у вас есть пустая функция с именем vowel, которая принимает параметр char. Когда вы объявляете тип функции, вы в основном сообщаете системе, какой тип возврата вы ожидаете от этой функции. Поскольку вы объявляете функцию void, вы не ожидаете никакого возвращаемого типа, следовательно, не имеет значения, что вы там возвращаете.

Во-вторых,

при объявлении функции гласного int в вашей основной функции вы должны сохранить значение функции гласной в переменной.

В-третьих,

процесс, который вы видите, возвращает 0, в основном это выполнение вашей программы, сообщающее об отсутствии ошибок произошло.

То, что вы, вероятно, ищете, это что-то вроде этого, я думаю,

if (lowercase || uppercase)
        printf("1");
    else
        printf("0");

Замечательно придумать собственные решения, я бы также предложил следовать приведенным выше решениям, так как они хорошая практика кодирования.

0 голосов
/ 08 марта 2020

возвращаемый тип гласной функции - "int". Но вызов функции не сохраняет значение. Измените вызов функции, как показано ниже.

int main() {
char c;

printf("Enter an alphabet: ");
scanf("%c", &c);
int flag = vowel(c);
printf("%d",flag);  }
...