Напишите программу, которая заменяет все четные числа в массиве на $ и выводит массив

Это мой код. И это не работает.

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

int main(void) {
    int size, i;

    setbuf(stdout,NULL);
    printf("Enter array limit: ");
    scanf("%d",&size);
    printf("Enter values: ");

    int arr[size];

    for(i=0;i<size;i++){
        scanf("%d",&arr[i]);
        if (arr[i]%2==0){
            arr[i]='$';
        }
    }

    for(i=0;i<size;i++){
        printf("%d\n",arr[i]);
    }
    return 0;
}

Результат:

36
3
36
1

trusfated, printf("%d\n",arr[i]); печатает целое число. $ не является целым числом. Если число четное, просто printf("$\n");.

chux - Reinstate Monica 06.02.2023 07:56

Может быть проще, если вы не запрашиваете ввод, а просто генерируете числа.

konsolebox 06.02.2023 07:58

Это вроде сработало. Ваш массив содержит целые числа, когда вы пытались поместить в него $, вместо этого использовалось значение ASCII для $ (которое равно 36)

Lee 06.02.2023 07:58

Я ставлю на то, что постановка проблемы заключается в том, чтобы «заменить четные цифры значения в массиве символов на« $ »(затем напечатать« строку »)»...

Fe2O3 06.02.2023 08:03

Возможно, вы захотите попросить разъяснений у того, кто дал вам это задание. В C массивы, содержащие целые числа, не могут содержать ничего другого. Так что не ясно, чего должно достичь это упражнение. В качестве альтернативы вы можете использовать другой язык, который позволяет массивам содержать что угодно.

anatolyg 06.02.2023 08:05
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
5
158
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы заменяете число на ascii-код символа доллара. Вы можете сделать одно из двух:

Оставьте массив в покое и добавьте оператор if, где вы печатаете. Если четно, выведите число, иначе выведите $

Создайте массив char*. Выделите 20 символов для каждого элемента массива. Используйте sprintf для печати числа или $ в каждом элементе. Зациклить и распечатать каждый элемент нового массива.

В любом случае, вы не можете сохранить «$» в массиве int, а затем определить, что это символ. Это всего лишь цифра.

Ответ принят как подходящий

Просто в этом цикле for

for(i=0;i<size;i++){
    printf("%d\n",arr[i]);
}

выходные элементы, хранящие символьную константу '$', используя спецификатор преобразования %c. Например

for ( i = 0; i < size; i++ ) {
    printf( arr[i] == '$' ? "%c\n", "%d\n", arr[i]);
}

Вот демонстрационная программа.

#include <stdio.h>

int main( void )
{
    enum { N = 10 };
    int arr[N] = { '$', 1, '$', 3, '$', 5, '$', 7, '$', 9 };

    for (int i = 0; i < N; i++)
    {
        printf( arr[i] == '$' ? "%c\n" : "%d\n", arr[i] );
    }
}

Вывод программы

1
$
3
$
5
$
7
$
9

Или выводить элементы массива в строку типа

$ 1 $ 3 $ 5 $ 7 $ 9

вы можете использовать следующий цикл for

for (int i = 0; i < N; i++)
{
    printf( arr[i] == '$' ? "%c " : "%d ", arr[i] );
}
putchar( '\n' );

Другие вопросы по теме