Найти все цифры в строке и вычислить сумму этих цифр - C (СИ)
Формулировка задачи:
Все Работает если вводить без пробелов, но с пробелом выводится только первое число, (если можно с кратким объяснением пожалуйста)
#include <stdio.h>
#include <string.h>
int main(){
char str[100];
int x = 0;
scanf("%s", str);
for(int i = 0;i < strlen(str);i++)
{
if((str[i] >= '1') && (str[i] <= '9'))
{
x += ((int)str[i] - 48);
}
}
printf("%d", x);
return 0;
}Решение задачи: «Найти все цифры в строке и вычислить сумму этих цифр»
textual
Листинг программы
#include <ctype.h>
#include <stdio.h>
#define SIZE 256
int main(void)
{
char str[SIZE], *p;
unsigned sum = 0;
fgets(str, SIZE, stdin);
for (p = str; *p; p++)
if (isdigit(*p))
sum += *p - '0';
printf("%u\n", sum);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с функциями ввода-вывода и преобразования символов в цифры.
- Определение размера строки, с которой будет работать программа (в данном случае 256 символов).
- Создание двух переменных: строки str и указателя p.
- Инициализация суммы чисел равной 0.
- Считывание строки с помощью функции fgets().
- Начинается цикл, который проходит по каждому символу в строке.
- С помощью функции isdigit() проверяется, является ли текущий символ цифрой.
- Если символ является цифрой, то он преобразуется в целое число и добавляется к сумме (sum).
- После прохождения всех символов в строке, сумма выводится на экран с помощью функции printf().
- Программа завершается, возвращая 0.