给一个不多于5位的正整数① 位数;②逐位输出;③逆序输出(C语言)

1、题目:

9.给一个不多于5位的正整数,要求:
① 求出它是几位数;
②分别输出每一位数字;
③按逆序输出各位数字,例如原数为321,应输出123。

2、程序分析:

  1. 利用函数strlen(); 可直接得到长度,所以我们定义一个char s 来完成后续操作(因为strlen(); 是对面字符串进行操作)
  2. 利用函数atoi();将字符串转为整型,通过运算符运算得到每一位,并输出
  3. 由于在第二问就将char s 转为int类型,所以可以直接用:( d = num % 10;  x = x * 10 + d;   num = num / 10; )。如果直接延用第二问得到的输出,printf("aa该数逆序后为:%d,%d,%d,%d,%d\n", a1, a2, a3, a4, a5);  效果图如下: 

3、知识点:

  1. C语言中的重要函数极其库函数)的熟练使用( strlen(); )
  2. 如何依次输出字符串的每一位的数字( atoi(); )
  3. 逆序( d = num % 10;  x = x * 10 + d;   num = num / 10; ),这个可以看我的另一篇文章(一维数组逆序(数据结构,C语言版)),从算法的角度看了两种逆序的方法。

4、代码展示:

#include<stdio.h>
#include<string.h>  // strlen():字符串长度,不包括'\0'
#include<stdlib.h>  // atoi():字符串转为整型

int main() {
    char s[10];
    printf("请输入一个不多于五位数的正整数:");
    scanf("%s", &s);

    //第一问:位数
    printf("该数长度为:%d\n", strlen(s));


    //第二问:逐位输出
    int num = atoi(s);
    char a5, a4, a3, a2, a1;
    a5 = (num / 10000) % 10;	//万位数字
    a4 = (num / 1000) % 10;	    //千位数字
    a3 = (num / 100) % 10;  	//百位数字
    a2 = (num / 10) % 10;		//十位数字
    a1 = (num / 1) % 10;		//个位数字
    printf("该数每一位分别为:%d,%d,%d,%d,%d\n", a5, a4, a3, a2, a1);


    //第三问:逆序输出
    int d=0 , x=0;    

    while (num != 0){                        //例如:123    第一轮  第二轮  第三轮
        d = num % 10;                   //取num的最后一位      3      2       1(1%10=1)
        x = x * 10 + d;   //(上轮d*10)+本轮num 的最后一位      3      32     321
        num = num / 10;               //去掉num的最后一位      12     1       0(1/10=0)
     }

    printf("该数逆序后为:%d\n", x);   

	return 0;
}




5、总结:

  1. 重要函数的熟练掌握。在做题的时候,更快速的想到解决方案,更快的解决问题,直接调用重要函数,会比我们通过各种运算来的要快。
  2. 基本算法的练习(数字的某一位如何求,逆序)。在考试中出现的频率很高,也是一些很基础的东西,掌握的越牢固,越全面,后面做题就能更加得心应手。
  3. 规律:很多的问题,它的底层逻辑是相同相通的,例如,水仙花数,回文数,对称数,其实都是考察的逆序,不过,逆序的时候也要考虑是用字符串还是数组或者是其他的类型,这取决于我们现阶段的知识储备,也就是在能够解决问题的前提下,用我们最熟练,最简便的方法(应付考试)。
  4. 多看,多写,多思考(举一反三)

6、链接跳转:

知识点:

一维数组逆序(数据结构,C语言版)

C语言:Strlen()函数你了解多少? - 知乎 (zhihu.com) 

Gets和scanf的区别

C语言 字符串(计算长度、统计字符个数、复制、连接、删除)

将字符串中的字符逐个按行输出

【C语言】输入一个5位数,依次输出各个位的数字_c语言输入五位数输出每一位-CSDN博客

C语言中#include的介绍——及常见的头文件(库函数)

类似的题:

求不超过1993的所有对称数(C语言) 【逆序】

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值