Определить число, полученное выписыванием в обратном порядке цифр - C (СИ) (71574)
Формулировка задачи:
2. Написать программу, которая для заданного натурального числа:
• определяет число, полученное выписыванием в обратном порядке цифр,
• определяет сумму и количество цифр,
• определяет максимальную и минимальную из цифр,
• формирует новое число, состоящее только из четных цифр заданного числа и новое число, состоящее только из нечетных.
Вот мой код:
Не получается сделать:
1.Счетчик цифр.
2.Вывод четных\нечетных.
Просьба подсказать эффективное решение.
#include<stdio.h>
#include<conio.h>
#include<math.h>
main ()
{
int a,b,c,x,max,min,d,e,f;
printf("Vvod celogo 3-x znachnogo chisla: ");
scanf("%d",&x);
c=x%10;
x=x/10;
b=x%10;
x=x/10;
a=x%10;
x=c*100+b*10+a;
printf("\nZadom napered: %d\nSumma cifr: %d",x,c+b+a);
max=c;
if (max<b)
max=b;
if (max<a)
max=a;
printf("\nMax chislo: %d",max);
min=c;
if (min>b)
min=b;
if (min>a)
min=a;
printf("\nMin chislo: %d",min);
d=c%2;
if (d==1)
{
c=0;
}
else
c=c;
e=b%2;
if (e==1)
{
b=0;
}
else
b=b;
f=a%2;
if (f==1)
{
a=0;
}
else
a=a;
printf("\nChetnoe: %d%d%d",c,b,a);
d=c%2;
if (d==0)
{
c=0;
}
else
c=c;
e=b%2;
if (e==0)
{
b=0;
}
else
b=b;
f=a%2;
if (f==0)
{
a=0;
}
else
a=a;
printf("\nNechetnoe: %d%d%d",c,b,a);
printf("\nKolichestvo cifr: 3");
_getch();
return 0;
}Решение задачи: «Определить число, полученное выписыванием в обратном порядке цифр»
textual
Листинг программы
#include <stdio.h>
int power(int x, int n)
{
int i, z = 1;
for(i = 0; i < n; ++i)
z = x * z;
return z;
}
int main()
{
int x, a, k, b, y, max = 0, min = 9, sum = 0, n = 0;
printf("Input number:\n");
scanf("%d", &a);
b = a;
printf("The number of Vice versa is:\n");
while(b > 0){
x = b % 10;
b = b / 10;
printf("%d", x);
sum = sum + x;
if(x < min)
min = x;
if(x > max)
max = x;
++n;
}
printf("\n Min is:\n%d", min);
printf("\n Max is:\n%d", max);
printf("\n Amount is:\n%d", sum);
printf("\n Numbers quantity is:\n%d", n);
printf("\n Even numbers is:\n");
b = a;
k = n - 1;
while(b > 0){
y = b / power(10, k);
b = b - y * power(10, k);
--k;
if(y % 2 == 0)
printf("%d ", y);
}
b = a;
k = n - 1;
printf("\nOdd numbers:\n");
while(b > 0){
y = b / power(10, k);
b = b - y * power(10, k);
--k;
if(y % 2 != 0)
printf("%d ", y);
}
return 0;
}
Объяснение кода листинга программы
- В функции
main()определены переменныеx,a,k,b,y,max,min,sum,n. - С помощью функции
scanf()в переменнуюaсчитывается число, которое вводится пользователем. - Переменная
bинициализируется значением переменнойa. - С помощью цикла
whileв обратном порядке выписываются цифры числа, которые считываются в переменнуюx. - К переменной
bприменяется операция деления нацело, чтобы избавиться от последней цифры числа. - Выполняется операция умножения переменной
xна число, полученное в результате вычисленияpower(10, n), и результат прибавляется к переменнойsum, если число не является минимальным. - Если число меньше минимального числа, то оно становится новым минимальным числом.
- Если число больше максимального числа, то оно становится новым максимальным числом.
- Увеличивается счетчик количества чисел
n. - Выводится минимальное число.
- Выводится максимальное число.
- Выводится сумма всех чисел.
- Выводится количество чисел.
- С помощью цикла
whileв обратном порядке выписываются только четные числа, которые считываются в переменнуюy. - Если число
yделится на 2 без остатка, то оно выводится на экран. - С помощью цикла
whileв обратном порядке выписываются только нечетные числа, которые считываются в переменнуюy. - Если число
yне делится на 2 без остатка, то оно выводится на экран.