基础编程题(13~14)
13、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
13.1、程序分析
- 实现思路
1、定义该整数为i
,则两个完全平方数为num1=i+100,num2=num1+168
;
2、判断num1
和num2
是否为完全平方数;
3、打印结果.
13.2、代码实现
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 1、定义变量
int num1;
int num2;
for (int i = 0; i <= 100; i++) {
num1 = i + 100;//第一个完全平方数
num2 = num1 + 168;//第二个完全平方数
if (isSquareNumber(num1) && isSquareNumber(num2)) {
// 3、打印结果
System.out.println("整数:"+i);
}
}
}
// 2、判断是否为完全平方数
private static boolean isSquareNumber(int num) {
double sqrt = Math.sqrt(num);
for (int i = 0; i <= sqrt; i++) {
if (i == sqrt) {
return true;
}
}
return false;
}
}
注意:
按题意循环应该从-100开始(整数包括正整数、负整数、零),这样会多一个满足条件的数-99。(结果为:-99和21)
14、输入某年某月某日,判断这一天是这一年的第几天?
14.1、程序分析
-
实现思路:
1.输入年份,月份,天数并判断它们是否合格
2.循环从1月份到当前月份,累加天数,2月份要判断是否为闰年.月份记忆口诀:
-
正三五七八十腊——31天
-
四六九十一月——30天
-
二——闰年29天,非闰年28天。
14.2、代码实现
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int year;
do {
System.out.print("请输入年份:");
year = input.nextInt();
if (year < 0) {
System.out.print("请重新输入年份!!");
}
} while (year < 0);
int month;
do {
System.out.print("请输入月份:");
month = input.nextInt();
if (month < 1 || month > 12) {
System.out.print("请重新输入月份!!");
}
} while (month < 1 || month > 12);
int day;
do {
System.out.print("请输入天数:");
day = input.nextInt();
if (day < 1 || day > 31) {
System.out.println("请重新输入天数!!");
}
} while (day < 1 || day > 31);
int days = 0;
int sum_days = 0;
for (int i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
break;
}
sum_days += days;
}
System.out.printf("%d年%d月%d日是一年中的第%d天", year, month, day, (day + sum_days));
}
}