栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言习题集

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言习题集

本篇为作者学习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("%dn", 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("%dn", 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("%lfn", ret);
	return 0;
}
  • 递归和非递归分别模拟strlen的实现

非递推法
int my_strlen(char *str)
{
	int count = 0;
    while(*str !='')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = { "abcdefg" };
	int len = my_strlen(arr);
	printf("%dn",len);

	return 0;
}

使用函数递推法
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("%dn", len);

	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号