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

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

c语言实现输出一个数的每一位的更多相关文章

  1. 【C语言】求两个数中不同的位的个数

    //求两个数中不同的位的个数 #include <stdio.h> int count_different(int a, int b) { int count = 0; int c = a ...

  2. C语言:输入一个数,输出比这个数小的所有素数,并求出个数。

    //C语言:输入一个数,输出比这个数小的所有素数,并求出个数. #include<conio.h> #include<stdio.h> #include<stdlib.h ...

  3. C语言如何分离一个数的高低位,如何将2个字节变成一个字节

    关于这个概念,是我从工作中学习的,虽然在读书的时候就应该要掌握,但是在开发中,这项技能尤其重要.我是做嵌入式开发的,在嵌入式开发过程中,如何对数据操作必然是不可缺少的问题,接下来,我们来看一个例子: ...

  4. 42.输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的。

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的. 这道题有很多烟雾弹: 首先如果有多对,最前面的两个数就是乘积最小的, ...

  5. 基于STM32F429+HAL库编写的定时器主从门控模式级联输出固定个数PWM脉冲的程序

    硬件设备   42步进电机,步进电机驱动器,正点原子F429开发板 开发软件    keil5,Cube 综述   一般要精准的控制电机,就要控制单片机的引脚输出指定个数的PWM波,有多种可实现的方法 ...

  6. C语言 格式化输出--%m.n

    格式字符:格式字符用以指定输出项的数据类型和输出格式. ①d格式:用来输出十进制整数(int).有以下几种用法: %d:按整型数据的实际长度输出. %m.nd:m为指定的输出字段的宽度,n定义为实际输 ...

  7. [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. C 语言实例 - 计算一个数的 n 次方

    C 语言实例 - 计算一个数的 n 次方 计算一个数的 n 次方,例如: ,其中 为基数, 为指数. 实例 - 使用 while #include <stdio.h> int main() ...

  9. C 语言实例 - 输出九九乘法口诀表

    C 语言实例 - 输出九九乘法口诀表 使用嵌套 for 循环输出九九乘法口诀表. 实例 #include<stdio.h> int main(){ //外层循环变量,控制行 ; //内层循 ...

随机推荐

  1. UVa-1586-分子量

    这是一道字符串的题目,我们直接对字符串进行解析,然后计算就可以了. 我是直接开了两个数组存入对应的值,没有进行判断,我们如果在if判断里面直接增加了i的值,最好先把对应的字符存起来,然后这样才不容易出 ...

  2. 厚溥教育1718部数据库连接作业答案,分装一个操作数据库而无需写SQL语句的函数

    <?php header("Content-type:text/html;charset=utf8"); //PHP操作数据库的函数 function phpsql($dbc ...

  3. 文本三剑客之grep

    接受正则表达式,按行匹配,将会过滤出匹配的所有行 格式: grep   [OPTION]...     PATTERN    [FILE]... 可以看出,grep后可以同时接多个文件 选项OPTIO ...

  4. SANBA服务和FTP服务

    1.samba服务 Smb主要作为网络通信协议:Smb是基于cs(client/server)架构(架构还有bs,broswer/server):完成linux与windows之间的共享:linux与 ...

  5. Linux查看配置文件中未被注释的有效配置行

    grep 命令示例——去掉注释 $ grep -v "^#" /path/to/config/file $ grep -v "^#" /etc/apache2/ ...

  6. springmvc请求小例子

    1.welcome.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  7. 如何用纯 CSS 为母亲节创作一颗像素画风格的爱心

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/LmrZVX 可交互视频教 ...

  8. iptables工具

    http://www.linuxidc.com/Linux/2012-12/77074.htm iptables 指令 语法: iptables [-t table] command [match]  ...

  9. Using TCP keepalive under Linux

    Linux has built-in support for keepalive. You need to enable TCP/IP networking in order to use it. Y ...

  10. 大数据学习——面试用sql——累计报表

    create table t_access_times(username string,month string,salary int)row format delimited fields term ...