java学习:Java流程控制语句的相关测试题

第一题:将所有包含3的三位数整数相加求和。103 131 133 301类似。
public static void main(String[] args) { int n = 100;// 从n开始三位数 int num = 0;// 和 while (n < 1000) { if (n / 100 == 3 || n % 100 / 10 == 3 || n % 10 == 3) { num += n; } n++; } System.out.println(num); }
输出结果:121086
解题思路:
分别判断百位数、十位数、个位数是不是三:
1、假设百位数是三,那么我们就要把个位数和十位数舍弃掉,这就是用 n / 100 这样的话就是直接舍弃掉十位数和个位数了,因为定义 n 的时候是 int 类型,不是浮点类型
2、假设十位数是三,那么就要舍弃百位数和个位数,首先我们舍弃个位数的方法和百位数舍弃十位个位的方法一样的,就是用 n / 10 这样得到的就是百位数和十位数,然后剩下的百位数和十位数在取余数,就是舍弃掉了百位数就是 n / 10 % 10 ,这样的就可以了(还有一种方法就是先舍弃百位数,在舍弃掉个位数,就是我写的 n % 100 / 10 )
3、如果个位数是三,直接舍弃百位数、十位数,就是直接除以十的余数就是了,n % 10
第二题:输出数列1 1 2 3 5 8 13 21 34 55...第25项的值
public static void main(String[] args) { int x = 1;// 第一项的值 int y = 1;// 第二项的值 int counter = 2;// 计数器,两个数一循环 while (counter < 25) { x = x + y; System.out.println((counter + 1) + "的值为" + x); y = x + y; System.out.println((counter + 2) + "的值为" + y); counter += 2; } }
第25的值:75025
错!题中只要求要第25项的值。上面是输出所有的值,问答不一致
解题思路:第一项加第二项等于第三项,假设int num1 = 1; int num2 = 1; 然后通过相加得到第三项,然后把第三项的值赋值给第二项,第二项的值赋值给第一项,依次可以得到25项的值:
public static void main(String[] args) { // 第二题:输出数列1 1 2 3 5 8 13 21 34 55...第25项的值 int num1 = 1; int num2 = 1; int num3 = 2; int coun = 0;// 计数器 while ((coun + 2) < 25) { num3 = num1 + num2; num1 = num2; num2 = num3; coun++; } System.out.println(num3); }
第三题:(附加题)计算第100项的值,在上面基础上,允许使用数组。
public static void main(String[] args) { long[] sumLong = new long[100]; sumLong[0] = 1; sumLong[1] = 1; int i =2; while(i < 100) { sumLong[i] = sumLong[i-1]+sumLong[i-2]; i++; } System.out.println(sumLong[99]); }
第100的值:3736710778780434371
作者:域名博客,网站地址:https://liuguangfa.com/,转载注明出处!