Переписать код с использованием указателей - C (СИ) (149109)
Формулировка задачи:
Есть код на C,надо заменить на указатели.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int prov(int a)
{
int d = 0;
while(a != 0) {
d = d * 10 +a%10;
a/=10;
}
return d;
}
int main()
{
setlocale( LC_ALL,"Russian" );
printf ("Введите число ,которое надо проверить на симметричность.\n");
int n,i;
scanf("%d", &n);
int r[3];
printf("%s\n", (prov(n) == n) ? "Это симметрично число" : "Это не симметрично число ");
for(i = 0; i < 3; i++)
{
r[i] = n % 10;
printf("%d", r[i]);
n/=10;
}
}Решение задачи: «Переписать код с использованием указателей»
textual
Листинг программы
for(int *ptr= &r[0]; ptr < &r[3]; ptr++)
{
*ptr= n % 10;
printf("%d ", *ptr);
}
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Указатель
ptrинициализируется адресом первого элемента массиваr. - В цикле выполняется условие, что
ptrменьше адреса последнего элемента массиваr. - Внутри цикла в каждый элемент массива
r, на который указываетptr, записывается остаток от деления числаnна 10. - После каждого действия в цикле выводится на экран значение элемента массива
r, на который указываетptr, с помощью функцииprintf. - Значение
nне используется в данном коде. - Каждое действие в цикле выполняется до тех пор, пока
ptrне станет адресом последнего элемента массиваr.