c语言怎么找数字各位置上的数

首页 > 体育 > 作者:YD1662023-12-30 19:46:25

今天这道题目呢,从题目而言,“统计个位数字”,顾名思义,就是统计数字的个数。

那么这道题的要求呢,就是给定一个整数,比方说给定整数-21252,统计其中2的个数,很显然,其中2的个数为3,那么最终打印得到的结果则为3。

c语言怎么找数字各位置上的数,(1)

梳理逻辑

我对于函数题的一贯做法都是进行倒推,就是根据题目给定的输入测试用例和输出测试用例来倒着推理题目的逻辑。

比方说这道题目要求输入两个整数分别为N和D,N则是一个整数,不超过int的范围,那么很显然,就是用int来作为变量数据类型来定义,D呢是0到9区间的个位数,目的是统计整数N中存在的数字D的个数,最后返回次数。

当然是需要用到一个计数法count来进行计数。

而对于如何统计数字呢,就是需要把给定的一个整数进行一个一个拆分开来。

以题目中给出的例子为例,整数-21252,如何拆分成数字2、1、2、5、2呢。

那么就是取余得到第一个整数为2,然后把这个整数赋值为-2125,再取余得到5,同理继续下去,直到最后一个数字2为止,然后每次与数字D进行判断。

若是与数字D相同,则计数一次,否则就不计数。

完成之后进行统计,把最终的结果打印出来即可。

当然,在实际写的时候,会产生一个问题,就是N取余会得到负数,所以此时需要用到C语言当中的一个库函数#include<math.h>中的一个函数取绝对值也就是abs。

c语言怎么找数字各位置上的数,(2)

代码实现

//统计个位数字 #include <stdio.h> #include <math.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 count = 0;//用于计数 int Replace = N;//因为N是常数,所以需要用另一个数来取代N while(1){ if(abs(Replace)==D){//取绝对值取余数,否则会变成负数的 count ; } Replace = Replace/10; if(Replace==0){ break; } } return count;//返回计数 }结果测试

c语言怎么找数字各位置上的数,(3)

c语言怎么找数字各位置上的数,(4)

总结

这道题目的关键在于库函数#include<math.h>中的一个abs取绝对值函数。

这个主要是用于判断输入的整数为负数的情况,要进行一个单独的讨论才行。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.