打印无符号整数
输入一个无符号整数,按顺序打印每一位。
 如输入1234输出1234
解题思路
假设输入的是1234这个数,可以通过%10得到4 可以通过/10%10得到3以此类推。
代码如下
#include<stdio.h>
void Print(unsigned int n)
{
	if (n>9)
	{
		Print(n / 10);
	}
	printf("%d", n % 10);
}
int main()
{
	unsigned int num = 0;
	scanf("%d", &num);
	Print(num);
	return 0;
}
运行结果

注意

 红色的线是调用的过程,绿色的线是回调的过程。
函数计算字符的长度
不使用临时变量求字符串的长度和使用临时变量求字符串的长度
解题思路
字符串是以’\0’为结束的,所以我们只要判断是否是‘\0’。
代码如下
创建临时变量来求字符串长度
#include<stdio.h>
int Strlen(char* p)
{
	int count = 0;
	while (1)
	{
		if (*(p++) != '\0')
		{
			count++;
		}
		else
		{
			break;
		}
	}
	
	return count;
}
int main()
{
	char* p = "abced";
	int len = Strlen(p);
	printf("%d", len);
	return 0;
}
不创建临时变量来求字符串长度
#include<stdio.h>
int Strlen(char* p)
{
	if (*p=='\0')
	{
		return 0;
	}
	else
	{
		return 1 + Strlen(p+1);
	}
}
int main()
{
	char* p = "abced";
	int len = Strlen(p);
	printf("%d", len);
	return 0;
}
运行结果

 
注意
不要把传值调用和传址调用搞混淆了。
求n的阶乘
输入一个数,然后输出这个数的阶乘
解题思路
如果输入的数是5的话,那么它的阶乘就是54321
代码如下
使用递归的方式实现:
#include<stdio.h>
int factorial(int n)
{
	if (n<=1)
	{
		return 1;
	}
	else
	{
		return n * factorial(n - 1);
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	//调用函数返回最终的结果
	int ret=factorial(n);
	printf("%d",ret);
	return 0;
}
使用循环的方式实现:
#include<stdio.h>
int factorial(int n)
{
	int i = 0;
	int sum = 1;
	for ( i = n; i >= 1; i--)
	{
		sum = sum * i;
	}
	return sum;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	//调用函数返回最终的结果
	int ret=factorial(n);
	printf("%d", ret);
	return 0;
}
运行结果
使用递归的方式运行结果
 
 使用循环的方式运行结果
 
计算斐波那契数
什么是斐波那契数
 1 1 2 3 5 8 13 21 34 55…
 就是前两项之和等于第三项
解题思路

代码如下
#include<stdio.h>
int Fac(int n)
{
	if (n<=2)
	{
		return 1;
	}
	else
	{
		return Fac(n - 1) + Fac(n - 2);
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Fac(n);
	printf("%d", ret);
	return 0;
}
运行结果

递归实现n的k次方
编写一个函数实现n的k次方,使用递归实现。
代码如下
//递归实现n的k次方
#include<stdio.h>
int Pow(int n, int k)
{
	if (k==0)
	{
		return 1;
	}
	else
	{
		return n * Pow(n, k-1);
	}
}
int main()
{
	int n = 0;
	int k = 0;
	scanf("%d %d", &n, &k);
	int ret = Pow(n, k);
	printf("%d", ret);
	return 0;
}
运行结果











