C语言习题集

C语言习题集,第1张

本篇为作者学习C语言过程中遇到的一些值得多次学习的题目。

给相同新学习C的朋友们分享。

目录

  1. 使用函数递归方式实现打印一个整数的每一位 
  2. 递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
  3. 编写一个函数实现i的k次方,使用递归实现。
  4. 递归和非递归分别模拟strlen的实现


  • 使用函数递归方式实现打印一个整数的每一位 
#include 
void print(unsigned int n)
{
	if (n > 9)
		print(n / 10);
	printf("%d ", n % 10);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
		print(n);//函数
	return 0;
}

  • 递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
非递归方法
int main()
{
    int n = 0;
    int i = 0;
    int input = 1;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        input = input * i;
    }
    printf("%d\n", input);
}
递归方法

int fac(int n)
{
	if (n > 1)
		return n * fac(n - 1);
 }
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = fac(n);
	printf("%d\n", ret);
	return 0;
 }
  • 编写一个函数实现i的k次方,使用递归实现。
#include 
//输入i, k
int Pow(int i, int k)
{
	if (k == 0)
	{
		return 1;
	}
	else if(k>0)
	{
		return i * (Pow(i, k - 1));
	}
	else
	{
		return  1.0 / (Pow(i, -k));
	}
}
int main()
{
	int i = 0;
	int k = 0;
	scanf("%d%d", &i, &k);
	double ret = Pow(i, k);
	printf("%lf\n", ret);
	return 0;
}
  • 递归和非递归分别模拟strlen的实现
非递推法
int my_strlen(char *str)
{
	int count = 0;
    while(*str !='int my_strlen(char * str)
{
	if (*str != '')
		return 1 + my_strlen(str+1);
	else
        return 0;
}
int main()
{
	char arr[] = { "abcdefg" };
	int len = my_strlen(arr);
	printf("%d\n", len);

	return 0;
}')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = { "abcdefg" };
	int len = my_strlen(arr);
	printf("%d\n",len);

	return 0;
}

使用函数递推法
 
 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/914775.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存