题目
程序每次读入一个正三位数,然后输出逆序的数字。
注意,当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
回答
分析:我们可以通过十进制的取整取余特点来分别取到个位、十位、百位的数字
百位:a/100; 对a 进行除以100 那么可以取到百位
个位:a%10;对a 进行10 的取余那么一定会取到最后一位(即个位)
十位:最最复杂的就是取十位 的数字 其实由取一头(百位)一尾(十位)可以知道 我们可以将三位数变成两位数,然后对两位数取余就可以取到十位的数字不是吗?表达式: a/10%10;
代码如下
int main()
{
int a = 100;
printf("请输入一个三位数:\n");
scanf("%d",&a);
int baiwei = a / 100; //百位
int shiwei= (a / 10) % 10; // 十位
int gewei = a % 10;// 个位
printf("倒序后结过是:%d%d%d", gewei, shiwei, baiwei);
return 0;
}
但是运行结果会发现
结果会将100 显示成 001
那么开动你们的小脑袋就可回想起来0乘以任何数都等于0,那么利用这个 特性,我们可以把程序改成如下形式以消除开头位置上的0
int main()
{
int a = 100;
printf("请输入一个三位数:\n");
scanf("%d",&a);
int baiwei = a / 100; //百位
int shiwei= (a / 10) % 10; // 十位
int gewei = a % 10;// 个位
/*虽然我们取到了各个位置上的数字但是我们怎么把0去掉呢?? 数学中 0*任何数都等于0 利用这个这个特性可以将 前面的0 去掉 */
printf("倒序后结过是:%d", gewei * 100 + shiwei * 10 + baiwei);
return 0;
}
哈哈!收工。