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; }