c语言实现输出一个数的每一位
2024-08-30 15:28:09
比方输入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;
}
注:最后两段代码都未引入头文件。在每段代码中。測试数据我都是直接给出,当然,我们也能够键盘输入測试数据~~
最新文章
- Adressing
- AIX用chsec命令修改快捷修改配置文件
- 【WP 8.1开发】电子罗盘
- SQL Server数据类型转换
- yii2-获取配置选项的值
- 实时显示GetLastError值
- 【HTML】Beginner8:Table
- Mac 系统显示和隐藏文件的方法
- jquery ajax异步调用
- 【转】Android通过JNI调用驱动程序(完全解析实例)
- SIEM
- GDKOI2015 Day2
- VBS常用使用技巧
- 【bzoj1552】[Cerc2007]robotic sort
- Linux系统-解压缩命令集合
- VMware安装CentOS7.5
- Ionic3 UI组件之 ImagePicker
- SQL用户存在则更新不存在则插入
- KMP算法解释
- django系列5.5--分组查询,聚合查询,F查询,Q查询,脚本中调用django环境
热门文章
- spring tool suite (sts) 创建springmvc(没有实践)
- Mysql ICP(翻译)
- Druid配置
- JQuery给元素动态增删类或特性
- hadoop格式化出错,提示IO异常
- 大数据学习——面试用sql——累计报表
- NYOJ27水池数目,类似于FZU1008最大黑区域,简单搜索题~~~
- git clone, push, pull, fetch 的用法
- 【优先级队列】Southwestern Europe Regional Contest Canvas Painting
- 【Floyd最短路】第七届福建省赛 FZU Problem 2271 X