Определить число, полученное выписыванием в обратном порядке цифр - 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 без остатка, то оно выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д