比方输入1234。在屏幕上打印出1 2 3 4

代码展示:

方法一:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
//实现打印一个数的每一位
int main()
{
int num = 1234;
int count = 0;//用来保存数字的位数
int tmp = num;
int y = 0;
while (tmp)
{
++count;
tmp /= 10;
}
while (num)
{
printf("%d ",y = num/pow(10,count-1));
num = num - y * pow(10,count - 1);
--count;
}
system("pause");
return 0;
}

分析:对于给定的数或者是输入的数,从高位到低位一次输出~第一个while循环计算出了数据的位数。第2个while循环用于打印每个位,假设我们未定义tmp变量。第一个while运行完。给定数字变成0。第二个while就进不去。所以。设定新的变量保存一份数据。

第2个while是怎样实现打印的呢?以num = 1234为例。

     num = 1234,打印y = 1234/(10^3) = 1。  num = num - 1*1000 = 234;count = 4,。

    num = 234。打印y = 234/100 = 2;num = num - 2*100 = 34;

   num = 34。......

   num = 4,......

   num = 0,退出循环~

方法二:

int main()
{
char arr[5];
int num = 1234;
int i = 0;
while (num)
{
arr[i] = num % 10 + '0';
num /= 10;
i++;
}
while (i >= 1)
{
printf("%c ",arr[i-1]);
i--;
}
system("pause");
return 0;
}

分析:利用字符数组存储每一位,比用整型数组存储更节省空间。以num = 1234为例。

第一个while

      num= 1234,arr[0] = '4';i = 1;

      num = 234,   arr[1] = '3';i = 2;

      num = 34,    arr[2] = '2';i = 3;

      num = 4,      arr[3] = '1';i = 4;

      num = 0,退出循环

第2个while循环,arr[3] = arr[4-1];依次输出~

方法三:递归实现

void print_num(int n)
{
if (n > 9)
print_num(n/10);
printf("%d ",n % 10);
}
int main()
{
print_num(1234);
system("pause");
return 0;
}

注:最后两段代码都未引入头文件。在每段代码中。測试数据我都是直接给出,当然,我们也能够键盘输入測试数据~~

最新文章

  1. Adressing
  2. AIX用chsec命令修改快捷修改配置文件
  3. 【WP 8.1开发】电子罗盘
  4. SQL Server数据类型转换
  5. yii2-获取配置选项的值
  6. 实时显示GetLastError值
  7. 【HTML】Beginner8:Table
  8. Mac 系统显示和隐藏文件的方法
  9. jquery ajax异步调用
  10. 【转】Android通过JNI调用驱动程序(完全解析实例)
  11. SIEM
  12. GDKOI2015 Day2
  13. VBS常用使用技巧
  14. 【bzoj1552】[Cerc2007]robotic sort
  15. Linux系统-解压缩命令集合
  16. VMware安装CentOS7.5
  17. Ionic3 UI组件之 ImagePicker
  18. SQL用户存在则更新不存在则插入
  19. KMP算法解释
  20. django系列5.5--分组查询,聚合查询,F查询,Q查询,脚本中调用django环境

热门文章

  1. spring tool suite (sts) 创建springmvc(没有实践)
  2. Mysql ICP(翻译)
  3. Druid配置
  4. JQuery给元素动态增删类或特性
  5. hadoop格式化出错,提示IO异常
  6. 大数据学习——面试用sql——累计报表
  7. NYOJ27水池数目,类似于FZU1008最大黑区域,简单搜索题~~~
  8. git clone, push, pull, fetch 的用法
  9. 【优先级队列】Southwestern Europe Regional Contest Canvas Painting
  10. 【Floyd最短路】第七届福建省赛 FZU Problem 2271 X