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