c语言入门—数字倒序

来源:互联网 发布:matlab 2016a mac 编辑:程序博客网 时间:2024/05/21 15:43

题目
程序每次读入一个正三位数,然后输出逆序的数字。
注意,当输入的数字含有结尾的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; }

哈哈!收工。

原创粉丝点击