Это мой код. И это не работает.
#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
Может быть проще, если вы не запрашиваете ввод, а просто генерируете числа.
Это вроде сработало. Ваш массив содержит целые числа, когда вы пытались поместить в него $, вместо этого использовалось значение ASCII для $ (которое равно 36)
Я ставлю на то, что постановка проблемы заключается в том, чтобы «заменить четные цифры значения в массиве символов на« $ »(затем напечатать« строку »)»...
Возможно, вы захотите попросить разъяснений у того, кто дал вам это задание. В C массивы, содержащие целые числа, не могут содержать ничего другого. Так что не ясно, чего должно достичь это упражнение. В качестве альтернативы вы можете использовать другой язык, который позволяет массивам содержать что угодно.
Вы заменяете число на 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' );
trusfated,
printf("%d\n",arr[i]);
печатает целое число.$
не является целым числом. Если число четное, простоprintf("$\n");
.