链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目一
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
输入描述:
输入共1行,为两个正整数L和R,之间用一个空格隔开。
输出描述:
输出共1行,表示数字2出现的次数。
示例1
输入
2 22
输出
6
示例2
输入
2 100
输出
20
Java代码展示:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
int a=0,b=0,num=0;
Scanner in =new Scanner(System.in);
//这个是循环读取
a =in.nextInt();
b =in.nextInt();
for(int i=a;i<=b;i++){
int temp =i;
while(temp!=0){
int j=temp%10;
if(j==2){
num++;
}
temp/=10;
}
}
System.out.println(num);
}
}
注意:
在 Java 中,变量 i
是 for
循环的迭代变量,它在循环的每次迭代中都会被更新。如果在 while
循环中直接使用 i
而不创建 temp
变量,会出现以下问题:
当我们在 while
循环中修改 i
的值(通过 temp /= 10
),这会影响 for
循环的迭代过程。因为 i
不仅是 while
循环的控制变量,也是 for
循环的迭代变量,修改 i
会导致 for
循环的迭代逻辑出现错误。
例如,假设 i
的初始值是 123
,在 while
循环中你将 i
不断除以 10
来检查其每一位数字是否为 2
。第一次 while
循环结束后,i
的值就变成了 12
,而不是 for
循环期望的下一个迭代值 124
。这会导致 for
循环的迭代顺序被破坏,最终结果错误。
为了避免这种情况,我们应该引入了 temp
变量,将 i
的值复制给 temp
,然后在 while
循环中对 temp
进行操作,这样就不会影响 for
循环的迭代过程。
题目二
题目描述:B-日历中的数字_牛客竞赛语法入门班函数与递归习题
只通过了测试样例的代码。。。
// 日中包含的 月中包含的 年中包含的
// 数字x在这个月的日期里出现了多少次。
//闰年
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in =new Scanner(System.in);
whi