用C语言实现利用递归调用编写函数sum(n),计算给定整数n的各位数字之和。 要求提交代码中包含以下测试主函数。
时间: 2024-11-04 20:14:55 浏览: 4
在C语言中,你可以通过递归的方式实现计算整数每一位的和。下面是一个简单的示例,定义了一个名为`sum`的递归函数,它会一直分解输入的数字直到变成一位数,然后返回所有位的和:
```c
#include <stdio.h>
int sum(int n) {
// 如果n小于10,说明已经到达个位,直接返回n
if (n < 10)
return n;
// 否则取n的最后一位(n % 10),并递归地求其余位的和
return (n % 10) + sum(n / 10);
}
int main() {
int test_cases[] = {123, 45678, 987654321};
const int num_tests = sizeof(test_cases) / sizeof(test_cases[0]);
for (int i = 0; i < num_tests; i++) {
int result = sum(test_cases[i]);
printf("The sum of digits in %d is %d.\n", test_cases[i], result);
}
return 0;
}
```
在这个程序中,`main`函数中定义了几个测试用例,并打印出它们各位数字之和的结果。当你运行这个程序,会得到每个整数各个位的和。
相关问题
计算数组元素之和:给定一个整数数组 arr和数组的长度n,编写递归函数计算数组中所有元素的和。(C语言)
在C语言中,你可以通过递归的方式计算数组元素的和。下面是一个简单的递归函数实现:
```c
#include <stdio.h>
// 定义递归函数 sumArray
int sumArray(int arr[], int n) {
// 基本情况:如果数组为空或只有一个元素,直接返回该元素
if (n == 0) {
return 0;
} else {
// 递归调用,将当前元素加到剩余元素的和上
return arr[n - 1] + sumArray(arr, n - 1);
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// 调用函数并打印结果
int totalSum = sumArray(arr, n);
printf("数组元素的和是: %d\n", totalSum);
return 0;
}
```
在这个例子中,`sumArray` 函数接收一个数组和它的长度作为输入,然后一步步地减小数组长度直到变为0,此时返回0结束递归,同时把每个元素依次加起来。
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和用递归方法c语言
以下是使用递归方法求解的C语言程序:
```c
#include <stdio.h>
int add(int a, int n) {
if (n == 0) { // 递归结束条件
return 0;
}
return a * n + add(a, n - 1); // 递归求解
}
int main() {
int a, n;
printf("请输入两个不超过9的正整数a和n:");
scanf("%d%d", &a, &n);
int sum = add(a, n);
printf("%d + %d%d + %d%d%d + ... + %d%d...%d = %d\n", a, a, a, a, a, a, a, a, a, sum);
return 0;
}
```
首先,我们定义一个递归函数`add`,它接受两个参数`a`和`n`,分别表示数字`a`和`a`的个数。函数的作用是求出`a+aa+aaa+...+aa...a`(共`n`项)的和。
在函数中,我们首先判断递归结束的条件,即当`n`为0时,返回0。否则,递归调用`add`函数来求解前n-1项的和,再加上第n项的值`a*n`,最终返回所有项的和。
在主函数中,我们输入数字`a`和`n`,调用`add`函数求解和,并输出结果。
例如,当输入`2 3`时,程序会输出:
```
2 + 22 + 222 + ... + 222 = 246
```
阅读全文