求数字之和的三种算法

来自姬鸿昌的知识库
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1Ra4y1p7Si

题目

例如:1234→1+2+3+4=10


第一种

while 循环

#include<stdio.h>

int f(int n)
{
	int ret = 0;
	while (n > 0)
	{
		ret = ret + (n % 10);
		n = n / 10;
	}
	return ret;
}

int main() {
	int a = 1234;
	int ret = f(a);
	printf("ret = %d \n", ret);
	return 0;
}



第二种

递归

#include<stdio.h>

int f(int n)
{
	if (n == 0) {
		return 0;
	}
	return n % 10 + f(n / 10);
}

int main() {
	int a = 1234;
	int ret = f(a);
	printf("ret = %d \n", ret);
	return 0;
}


第三种

整型转字符串,然后遍历字符转整型相加

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include <stdlib.h>

int f(int n)
{
	int ret = 0;
	char string[16] = { 0 };
	_itoa(n, string, 10);
	printf("数字:%d 转换后的字符串为:%s\n", n, string);

	int i = 0;
	while (string[i] != '\0')
	{
		ret += string[i] - '0';
		i++;
	}
	return ret;
}

int main() {
	int a = 1234;
	int ret = f(a);
	printf("ret = %d \n", ret);
	return 0;
}