引言

常常有将一个正整数各位数字倒序排列或是统计各数字数目的题目,难点就在于如何分离出正整数中的每一位数字,本次以C语言为模板尝试一下。

思路一——递归法

步骤:
1 获得该正整数的第一位数字或最后一位数字(考虑到分离出首位数字后接下来的可能为零,因此选择首先分离末位数字)
2 对分离出一位数字的剩下数字组成的正整数重复上步操作。

#include<stdio.h>
void getNum(int n)
{int s=0;if(n>0)s=n%10;           //分离末位数字printf("%d ",s);getNum(n/10);     //对剩下数字递归
}
int main()
{int n;scanf("%d",&n);getNum(n);return 0;
}

输入:123456789
结果为:

9 8 7 6 5 4 3 2 1

思路二——迭代法

步骤大体与递归相同:

#include<stdio.h>
#include<math.h>
void getNum(int n)
{int s;int len=(int)log10(n)+1;         //获得n的位数 for(int i=0;i<len;i++){s=n%10;printf("%d ",s);n=n/10;}
}
int main()
{int n;scanf("%d",&n);getNum(n);return 0;
}

输入:135792468
结果为:

8 6 4 2 9 7 5 3 1

while循环形式:

int j=0;
while(n>0)
{j++;n/=10;
}           //j即为正整数n的位数

应用(PTA基础练习题)

——本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。

函数接口定义:

int Count_Digit ( const int N, const int D );

其中N和D都是用户传入的参数。N的值不超过int的范围;D是[0, 9]区间内的个位数。函数须返回N中D出现的次数。

裁判测试程序样例:

#include <stdio.h>
int Count_Digit ( const int N, const int D );
int main()
{int N, D;scanf("%d %d", &N, &D);printf("%d\n", Count_Digit(N, D));return 0;
}

解答:

int Count_Digit ( const int N, const int D )
{int s[100];int x=N;          //用于获取N的位数int M;            //对N取绝对值int p=0,q=1;      //p用以储存N的位数,q!=0作为获取位数for循环判断条件int m=0;          //m储存N中出现D的数目for(;q!=0;p++){q=x/10;x/=10;}if(N<0)M=-N;elseM=N;for(int i=0;i<p;i++){s[i]=M%10;M=M/10;}for(int j=0;j<p;j++){if(s[j]==D)m++;}return m;
}

(注:上述代码块中m需进行初始化,否则无法得到正确结果。而C语言int类型默认值为零,所以为何会出现这种区别呢?)

获取正整数的每一位数字(C)相关推荐

  1. 正整数m的百位数字python_求正整数m的百位数字

    [多选题]关于三阀组的使用,下列说法正确的是() (6.0分) [多选题]下列流量计不能用于气体测量的是() (6.0分) [填空题]执行下列Python语句将产生的结果是 . m=True n=Fa ...

  2. BeanShell获取尽可能不重复18位数字

    1.1  设置BeanShell的取样器 1.2   通过时间戳+随机数的形式获取10位数 long s = ${__time(/1000,)}; long y = ${__Random(1,1000 ...

  3. C++ PAT 乙级 ——1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

    C++ PAT 乙级 --1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 题目分析 (1)由于自然数n的范围要求小于10^100,unsigned long long ...

  4. PTA1002:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

    PTA1002,汉字写出数字 题目: 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 ...

  5. C语言——PAT_1002.读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字

    C语言--PAT 乙级(1002.读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字.) 更新方法:通过! 思想: 1.字符串操作:简言之,将用户输入的数字当做字符串处理,将各个位数 ...

  6. shell实例第3讲:获取随机8位数字

    获取随机8位数字常用三种方法: 方法一: echo $RANDOM |cksum |cut -c 1-8 说明: (1)shell cksum 命令用于检查文件的CRC是否正确. 确保文件从一个系统传 ...

  7. Java 三位正整数的个十百位数字的立方和

    题目描述 输入一个三位正整数,求它的个位数.十位数和百位数所对应的数字的立方和,并输出出来. 输入描述 一个三位的正整数 输出描述 三位的正整数个.十.百位数数字的立方和 输入样例 123 输出样例 ...

  8. c++ pat 乙级 -------1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

    1002 写出这个数 (20 分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1 ...

  9. 【C语言】给出一个不多于5位的正整数,要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出各位数字。

    给出一个不多于5位的正整数,要求: 求出它是几位数: 分别输出每一位数字: 按逆序输出各位数字. 1.求出它是几位数 思路:一个数每一次除以10都会少一位数. // scanfNum:输入的5位数 / ...

最新文章

  1. 全国二级计算机理论知识,2021年度全国计算机等级考试二级MSOffice常考知识点基础知识部分.doc...
  2. Python笔记-函数装饰器
  3. Linux版本的ActiveMQ安装过程
  4. 关于js的引用类型和基本类型
  5. jpeg 转rgb c 语言_威刚推出SE770G移动固态硬盘 主打高速传输和RGB灯效
  6. 通达信手机版分时图指标大全_今天教大家怎么把通达信副图指标源码导入手机通达信软件上。...
  7. solaris 系统信息查看
  8. ubuntu 设置静态路由_ubuntu 配置静态路由
  9. 偶极子天线的优缺点_请问单极子天线与偶极子天线的性能比较?
  10. 《通信原理》用matlab实现加性高斯白噪声信道实验
  11. 趋势科技安全威胁病毒预警(本周十大病毒排名)
  12. 计算机网络 latency,网络中delay和latency的区别
  13. ckplayer播放线上视频问题
  14. python如何读取二进制文件为图片_Python二进制文件读取并转换
  15. 南华大学计算机学院赵畅,资源环境与安全工程2020年“砥砺六十载,逐梦新时代”元旦师生联欢会顺利举办...
  16. 9个不错的PDF搜索引擎
  17. 我是如何看Vue源码的
  18. 寻址范围、按字寻址、按字节寻址
  19. 将Excel表格数据转为SQL语句
  20. Unity 接入百度AI - 车型识别

热门文章

  1. QQ音速战绩查询1.03
  2. BZOJ3999 [TJOI2015]旅游
  3. python线上培训班5月是淡季
  4. 华为手机设置页面黑色_华为手机拨号功能怎么设置 华为手机拨号功能设置方法【介绍】...
  5. 51CTO下载中心往期头条回顾(2)
  6. 实况录制翻车记EP3
  7. 看透招人的这三招,offer拿到手软!
  8. CAS Server 5.3 demo搭建
  9. 中文版真机登场 索爱K770i拍照功能试用
  10. python实现使用一列分类成子表