1、使用循环和取模运算
通过一个循环和取模运算来计算整数的各位数字之和。在每次循环中,将当前数字对10取模得到最后一位数字,加到和中,然后将当前数字除以10,以去掉最后一位数字,直到数字变为0为止。
#include <stdio.h>
int sumOfDigits(int n) {
int sum = 0;
while (n != 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
int main() {
int number;
printf("输出一个整数: ");
scanf("%d", &number);
printf("各位数字之和: %d\n", sumOfDigits(number));
return 0;
}
2、使用递归
通过一个循环和取模运算来计算整数的各位数字之和。在每次循环中,将当前数字对10取模得到最后一位数字,加到和中,然后将当前数字除以10,以去掉最后一位数字,直到数字变为0为止。
#include <stdio.h>
int sumOfDigitsRecursive(int n) {
if (n == 0)
return 0;
return (n % 10) + sumOfDigitsRecursive(n / 10);
}
int main() {
int number;
printf("输出一个整数: ");
scanf("%d", &number);
printf("各位数字之和: %d\n", sumOfDigitsRecursive(number));
return 0;
}
3、使用字符串处理
将整数转换为字符串,然后遍历字符串的每个字符,将其转换回数字并累加到和中。
#include <stdio.h>
#include <string.h>
int sumOfDigitsUsingString(char *str) {
int sum = 0;
for (int i = 0; i < strlen(str); i++) {
sum += str[i] - '0';
}
return sum;
}
int main() {
char number[20];
printf("输出一个整数: ");
scanf("%s", number);
printf("各位数字之和: %d\n", sumOfDigitsUsingString(number));
return 0;
}
4、使用数学公式
使用数学公式的思想来求解。通过不断取模和整除操作,逐步提取每位数字并求和。
#include <stdio.h>
int sumOfDigitsMath(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
int main() {
int number;
printf("输出一个整数: ");
scanf("%d", &number);
printf("各位数字之和: %d\n", sumOfDigitsMath(number));
return 0;
}
5、使用数组存储各位数字再求和
首先通过循环提取各位数字并存储在数组中,然后遍历数组求和。
#include <stdio.h>
int sumOfDigitsArray(int n) {
int digits[10], sum = 0, i = 0;
while (n != 0) {
digits[i++] = n % 10;
n /= 10;
}
for (int j = 0; j < i; j++) {
sum += digits[j];
}
return sum;
}
int main() {
int number;
printf("输出一个整数: ");
scanf("%d", &number);
printf("各位数字之和: %d\n", sumOfDigitsArray(number));
return 0;
}