一,利用if语句
int count(int a)
{
int sum = 0;
if(a < 10)
{
if(a == 2)sum++;
}else if(a < 100)
{
if(a % 10 == 2)sum++;
if(a / 10 == 2)sum++;
}else if(a < 1000)
{
if(a % 10 == 2)sum++;
if(a / 10 % 10 == 2)sum++;
if(a / 100 == 2)sum++;
}else if(a < 10000)
{
if(a % 10 == 2)sum++;
if(a / 10 % 10 == 2)sum++;
if(a / 100 % 10 == 2)sum++;
if(a / 1000 == 2)sum++;
}
return sum;
}
二,利用while并简化
int count(int a)
{
int sum = 0;
while(a)
{
if(a % 10 == 2)sum++;
a /= 10;
}
return sum;
}
总结:这是对于 / 以及 % 运算符的利用。
实例如下:
[NOIP2010]数字统计
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
#include <stdio.h>
int count(int a)
{
int sum = 0;
while(a)
{
if(a % 10 == 2)sum++;
a /= 10;
}
return sum;
}
int main()
{
//初始化数组
int start, end;
int sum_sum = 0, sum;
scanf("%d%d", &start, &end);
for(int i = start, j = 0; i <= end; i++, j++)
{
//调用函数解决问题
sum = count(i);
sum_sum += sum;
}
printf("%d",sum_sum);
return 0;
}