问题描述:
输入一个整数n,求1至n之间包括n,出现了几次5,。例如,输入15,1~15这些整数中包含5的数字有5、15,5一共出现了2次。
问题分析:
能想到最直观的方法,也就是累加1~n中每个整数5出现的次数。我们可以每次通过对10求余数判断整数的个位数字是不是5。如果这个数字大于10,则除以10之后再判断个位数字是不是5。
算法实现:
import java.util.Scanner;
public class Main {
static int number(int n){
int count=0;
while(n>0){
if(n%10==5){
count++;}
n=n/10;
}
return count;
}
static int numberOf(int n){
int count=0;
for(int i=0;i<=n;i++){
count=count+number(i);
}
return count;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入n:");
int n = scanner.nextInt();
int num= numberOf(n);
System.out.println("1~n之间有"+num+"个5");
}
}
测试:
1.测试用例
:n=65
测试结果
:1~n之间有17个5
2.测试用例
:n=600
测试结果
:1~n之间有220个5
3.测试用例
:n=0
测试结果
:1~n之间有0个5