Нахождение самых больших и самых маленьких чисел с помощью atoi

    scanf("%1c%2c %d %d %d %d %d %d %d %d %d %d",
          &x, &y, &arr[0], &arr[1], &arr[2], &arr[3], &arr[4],
          &arr[5], &arr[6], &arr[7], &arr[8], &arr[9]);
    strcpy(string, x);
    value1 = atoi(string);

    strcpy(string, y);
    value2 = atoi(string);

    value_final = value1 + value2;

Я пытаюсь получить значения ASCII для -l или же -s затем пропустите их через switch с добавленными значениями ascii, но я получаю ошибки при использовании atoi и я не уверен, если вы должны добавлять значения ascii, когда пользователь вводит -l или же -s или если это другой способ сделать это?

1 ответ

У вашего кода есть несколько проблем:

  • Major: switch случаи не имеют break; пункт. Контроль попадает в следующий пункт и, наконец, в default заявление.
  • Major: твоя путаница в шоу между char массивы и переменные с одним символом: strcpy(string, x); не должен даже компилироваться.
  • Ваш метод для разбора -l или же -s очень запутанный и, вероятно, ошибочный. Вы должны использовать литералы символов.
  • Вам не нужен двойной цикл, чтобы найти самый маленький или самый большой элемент в массиве. Достаточно одного цикла, и printf Оператор должен быть вне цикла. max а также min неинициализированы, циклы вызывают неопределенное поведение.
  • название говорит, используяatoi(): если это было ваше назначение, вы не должны использовать scanf(),

Вот упрощенная версия:

int main(void) {
    char option[3], buffer[32];
    int i, min, max, value;

    min = max = 0;
    if (scanf("%2s", option) == 1) {
        for (int i = 0; i < 10 && scanf("%31s", buffer) == 1; i++) {
            value = atoi(buffer);
            if (i == 0) {
                min = max = value;
            } else {
                if (min > value)
                    min = value;
                if (max < value)
                    max = value;
            }
        }
        if (!strcmp(option, "-l")) {
            printf("output: The largest number is %d\n", max);
            return 0;
        } else
        if (!strcmp(option, "-s")) {
            printf("output: The smallest number is %d\n", min);
            return 0;
        }
    }
    printf("You have entered an invalid option, try again next time.\n");
    return 0;
}
Другие вопросы по тегам