![浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数_整型](//dev-img.mos.moduyun.com/20231027/2a5a3071-2737-400b-a8fa-45df63acb8dd.png)
本题要求实现一个统计整数中指定数字的个数的简单函数。
函数接口定义:
int CountDigit( int number, int digit );
其中number
是不超过长整型的整数,digit
为[0, 9]区间内的整数。函数CountDigit
应返回number
中digit
出现的次数。
裁判测试程序样例:
#include <stdio.h>
int CountDigit( int number, int digit );
int main()
{
int number, digit;
scanf("%d %d", &number, &digit);
printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(number, digit));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
输出样例:
Number of digit 2 in -21252: 3
参考代码:
int CountDigit(int number, int digit)
{
int count = 0;
if (number < 0)//判断输入的数是否为负,若为负数转换为正数
number = -number;
while (number)
{
if (number % 10 == digit)
count++;
number = number / 10;
if (number == 0)
break;
}
return count;
}
代码详解:
题中已说明number和dight的类型和范围。
如果要统计整数中指定数字的个数,我们应该对于该整数的每一位进行判断。
若整数为负,会影响我们判断,所以我们将负数转换为整数。而且数的正负不会影响指定数字的个数。
if (number < 0)//判断输入的数是否为负,若为负数转换为正数
number = -number;
接下来我们对非负整数的每一位进行判断,用number % 10 == digit语句可以对当前数的个位进行判断,如果我们要判断十位、百位等,需要在循环中进行number=number/10,这样下次判断是就是原来数的十位了。
while (number)
{
if (number % 10 == digit)
count++;
number = number / 10;
if (number == 0)
break;
}
我们用count对需要判断的数进行计数,请注意count在循环前一定要归零,不然统计结果会受到影响。
如有更好的方法欢迎留言!