c语言实现输出一个数的每一位

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语⾔实现输出⼀个数的每⼀位
⽐⽅输⼊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;
}
注:最后两段代码都未引⼊头⽂件。

在每段代码中。

測试数据我都是直接给出,当然,我们也能够键盘输⼊測试数据~~。

相关文档
最新文档