【C语言】编程练习(三)

简介: 【C语言】编程练习(三)

打印无符号整数

输入一个无符号整数,按顺序打印每一位。

如输入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;
}

运行结果


相关文章
|
17天前
|
网络协议 程序员 编译器
C语言:编程世界的基础与魅力
C语言:编程世界的基础与魅力
|
2月前
|
监控 网络协议 API
C语言系统编程
C语言系统编程
|
2月前
|
Linux C语言 开发者
Linux系统下C语言的高阶编程
Linux系统下C语言的高阶编程
15 0
|
2月前
|
存储 C语言 索引
掌握多维数组,让你的C语言编程技能暴涨!
掌握多维数组,让你的C语言编程技能暴涨!
|
2月前
|
存储 编译器 程序员
汽车电子行业的 C 语言编程标准
汽车电子行业的 C 语言编程标准
66 0
汽车电子行业的 C 语言编程标准
|
2月前
|
存储 人工智能 安全
C语言:选择+编程(每日一练Day15)
C语言:选择+编程(每日一练Day15)
57 2
|
17天前
|
编译器 C语言 C++
C语言,C++编程软件比较(推荐的编程软件)
C语言,C++编程软件比较(推荐的编程软件)
|
2月前
|
C语言
C语言:选择+编程(每日一练Day13)
C语言:选择+编程(每日一练Day13)
37 0
|
5天前
|
C语言
基础C语言编程题
基础C语言编程题
5 0
|
9天前
|
编解码 算法 数据可视化
【C 言专栏】运用 C 语言进行图形编程
【5月更文挑战第3天】本文探讨了C语言在图形编程中的应用,介绍了基础概念和常用图形库如OpenGL和SDL。通过初始化环境、绘制图形、处理用户输入及更新显示等步骤,阐述了图形编程过程。同时,文章提到了性能优化、兼容性处理和复杂图形绘制的挑战,以及通过实际游戏案例分析应用。随着技术发展,C语言图形编程在跨平台和移动设备上的前景广阔,鼓励读者深入学习和创新。
【C 言专栏】运用 C 语言进行图形编程