Количество и сумма цифр числа на C++
Подсчет количества цифр целого числа Примеры:
123 – 3 цифры.
45677 – 5 цифр. Подход к решению такой:
1. если число отрицательное – то меняем знак;
2. заводим счетчик, изначально равный нулю;
3. делим число на 10 без остатка, например при делении 123 на 10 получится 12. Таким образом, мы “отбросили” младший разряд (цифру);
4. увеличиваем счетчик (ведь одну цифру отбросили);
5. если число больше нуля – переходим на п. 2.
6. счетчик содержит результат работы программы. Исходный код программы:
#include int digitsCount(int n) < if (n < 0) < n = -n; >int count = 0; while (n != 0) < n /= 10; count++; >return count; > int main()
Вычисление суммы цифр числа можно сделать так: 1) Преобразовать число в строку (различными способами) и найти сумму символов в ней; 2) Использовать операцию получения остатка от деления деления на 10 (вернет младший разряд числа) и целочисленного деления на 10 (эквивалентна сдвигу числа вправо) – такой подход уже использовался выше при вычислении количества цифр.
int digitsSum(int n) < int sum = 0; while (n != 0) < sum += n % 10; n /= 10; >return sum; >
Просмотр 0 веток ответов
Сумма цифр числа
Первое — постоянно берем остаток от деления на 10. Делим на 10, пока наше число не превратится в 0:
while (number) < sum += number % 10; number /= 10; >
Второе — перевести число в строку и пройтись циклом по всей строке, суммируя при этом цифры:
sprintf(str, "%d", number); for(int i = 0; i < strlen(str); i++) sum += str[i] - '0';
Отслеживать
11.5k 8 8 золотых знаков 42 42 серебряных знака 69 69 бронзовых знаков
ответ дан 26 сен 2011 в 17:01
Sergii Kozlov Sergii Kozlov
2,468 16 16 серебряных знаков 13 13 бронзовых знаков
i < strlen(str) - не надо так делать, длина вычисляется каждый раз.
1 июл 2016 в 7:27
- алгоритм
- c++
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как найти сумму цифр числа в c
Най дите сумму цифр целого числа n.
Вход. Одно целое 32-х разрядное число n (число может быть отрицательным).
Выход. Выве дите сумму цифр числа n .
Пример входа
Пример выхода
РЕШЕНИЕ
элементарная задача
Входное число может быть отрицательным. В таком случае изменим его знак.
Реализуем рекурсивную функцию sum(n), вычисляющую сумму цифр числа n, согласно рекурсивной схеме:
· иначе вычисляем сумму цифр числа n / 10 и прибавляем к нему последнюю цифру n % 10 числа n.
Задачу можно также решить при помощи цикла (без использования рекурсии).
Реализуем функцию sum по приведенной выше рекурсивной схеме.
return n % 10 + sum(n / 10);
Основная часть программы. Читаем входное число n. Если оно отрицательно, то установим его значение на противоположное.
Вычисляем и выводим сумму цифр числа n.
Реализация алгоритма – итерация
В переменной sum находим сумму цифр числа n .
Перебираем цифры числа n . Прибавляем каждую цифру числа n к сумме sum .
sum = sum + n % 10;
import java.util.*;
public class Main
static int sum( int n)
return n % 10 + sum(n / 10);
public static void main(String[] args)
Scanner con = new Scanner(System. in );
int n = con.nextInt();
int res = sum(n);
System. out .println(res);
n = int(input())
if n 0: n = -n;
sum = 0
while n > 0:
sum = sum + n % 10;
n = n // 10;
print(sum)
Python реализация – функция
return sum(n // 10 ) + n % 10
n = int(input())
if n 0 : n = -n
s = map(int,list(str(n)))
print(sum(s))
C++ Как найти сумму цифр числа?
Введем число
Инвентируем его в текст. получилось множество!
присваиваем целочисленной переменной нулевое значение этого множества (А) инвентированного опять в число!
Прогоняем цикл от 1 до конец числа
А =+ прибовляем инвентированное символьное число в целое
Конец цикла
Выводим А на экран!
Подсказка: кроме простого деления (/) существует деление с отбрасыванием того, что слева от запятой (%, зависит от языка)
Например:
45 / 10 = 4,5
45 % 10 = 5
Дальше сам додумаешься.
int n = 111111;
int sum = 0;
while (n)
<
sum += n % 10;
n /= 10;
>
#include
#include
main()
int n, count, baggage, m;
printf("Vvedite celoye chislo\n");
scanf("%d",&n);
count=0;
while(n!=0)
< m=n;
m%=10;
count+=m;
n/=10;
>
printf("V chisle %d summa cifr ravna %d", n, count);
getch();
>