DigitSum(n) 输入一个非负整数,返回组成它的数字之和, 调用DigitSum(1729),返回1+7+2+9,和19

/*写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19*/

#include<stdio.h>
#include<math.h>

int DigitSum(int n)
{
	int static sum = 0;
	if (n != 0)
	{
		sum += n % 10;
		DigitSum(n / 10);

	}
	return sum;
}

int main(void)
{
	//printf("%d\n", DigitSum(1728));
	printf("%d\n", DigitSum(1729));

	return 0;
}

值得注意的是 在这里我使用了 static变量 sum , static的作用之一是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。否则
sum的加操作只执行一次。

时间: 2024-07-29 17:52:27

DigitSum(n) 输入一个非负整数,返回组成它的数字之和, 调用DigitSum(1729),返回1+7+2+9,和19的相关文章

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

题目要求:写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 #include<stdio.h> int DigitSum(int num)//定义DigitSum()函数,返回值为int { if(num<10) return num; else return num%10+DigitSum(num/10); } int main() { int ret = DigitSum(17

【c语言】写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 #include <stdio.h> int DigitSum( int n ) { int i; int sum = 0; i = n % 10; if( n != 0 ) { n = n / 10; sum = DigitSum( n ) + i; } return sum; } int main() { printf("

用c语言实现 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 #include<stdio.h> int main() { int DigitSum(n); int a; printf("请输入一个数字\n"); scanf("%d",&a); printf("组成它的数字之和为%d\n",DigitSum(a)); return

写一个递归函数,输入一个非负整数,返回组成它的数字之和。

★写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和. 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19. #include<stdio.h> #include<stdlib.h> int Digitsum(unsigned int num) { int sum = 0, n = num, m = 0; if (n) { m = n % 10;   //用以求得每一位的数字 n = n / 10;  //用以不断缩小位数直至获

输入一个非负整数,返回组成它的数字之和

#include <stdio.h> int DigitSum(int num) { if(num < 10) return num; else return (num % 10) + DigitSum(num / 10); } int main() { int a; printf("请输入一个正数\n"); scanf("%d",&a); printf("%d\n",DigitSum(a)); return 0; }

题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。

题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点.链表结点定义如下: struct ListNode { int       m_nKey; ListNode* m_pNext; }; c语言实现 /* File : rlink.c Author : Date : 2015/4/4 platform : windows7 x86_64 version : 1.0 Function : 反转一个链表 */ #include <stdio.h> #include <stdli

定义一个由整数组成的数组,然后输入一个整数X,如果X不在此数组中,返回小于X的最大数的位置i和大于X的最小数的位置j

//定义一个由整数组成的数组,然后输入一个整数x,如果X不在此数组中,返回小于X的最大数的位置i和大于X的最小数的位置j: //若X在此数组中,则返回数组中这个数的位置. 源代码: #include<iostream> using namespace std; void main() { int array[]={1,2,3,4,5,6,7,89,45,32,56,78,12,43,90,19};//16个数字 int x; int max=array[0]; int min=array[0]

如果输入的不是英文字母或者数字或者汉字,则返回false

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string input = textBox1.Text.Trim(); if (chkInput(input)) MessageBox.Show("true"); else MessageBox.Show("

递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

#include <stdio.h> #include <stdlib.h> #include <assert.h> typedef unsigned int uint; uint DigitSum(uint n) { assert(n); if (n < 10) { return n; } else { return n % 10 + DigitSum(n / 10); } } int main() { uint number = 0; scanf("