题目描述
从键盘输入一个任意的三位正整数,分别求出其个位、十位和百位上的数字。
输入
输入任意的一个三位正整数。
输出
依次输出个位、十位、百位上的数字。以空格间隔,但最后一个数据的后面没有空格,直接换行。
样例输入 Copy
367
样例输出 Copy
7 6 3
设计思路
1.输入
首先,程序需要从用户那里获取一个三位数。这是通过scanf()
函数实现的。
2.处理
个位:使用取模运算符%
获取个位数字。由于任何数除以10的余数就是其个位数字,因此num % 10
可以得到个位。
十位:首先通过num % 100
去掉百位,然后使用取模运算符%
获取十位和个位,再通过减法去掉个位,最后除以10得到十位。即(num % 100 - (num % 10)) / 10
。
百位:百位是三位数中最高的位,因此直接使用除法运算符/
与100相除即可得到。
3.输出
使用printf()
函数将计算得到的个位、十位和百位数字输出。
4.三位数分离的思路
个位:由于个位是最低位,所以直接使用取模运算符%
与10相除即可得到。
十位:十位位于个位之前,可以通过先去掉个位(使用num % 100
),然后再次使用取模运算符%
与10相除,最后通过减法去掉个位,得到十位。
百位:百位是三位数中最高的位,因此直接使用除法运算符/
与100相除即可得到。
5.更多分离方法
(1)直接除法:
对于个位和百位,可以直接使用除法运算符/
来获取。
(2)取模与减法结合:
对于十位,可以结合取模运算符%
和减法运算符-
来获取。
(3)数学公式:
也可以使用数学公式来简化计算,例如((num / 10) % 10)
来获取十位。
(4)数组或字符串处理:
将数字转换为字符串或数组,然后分别访问每个字符或元素来获取个位、十位和百位。
示例代码
#include <stdio.h>
#include <stdlib.h>
void main()
{
int num; //任意的三位正整数
int a,b,c; //分别对应个位、十位、百位
scanf("%d",&num);
a=num%10; //个位上的数字
b=(num%100-a)/10; //十位上的数字
c=num/100; //百位上的数字
printf("%d %d %d\n",a,b,c);
}