基础编程题(13~14)

13、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

13.1、程序分析

  • 实现思路
    1、定义该整数为i,则两个完全平方数为num1=i+100,num2=num1+168;
    2、判断num1num2是否为完全平方数;
    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));

	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值