JavaTask/day03.md

413 lines
13 KiB
Markdown
Raw Normal View History

2023-07-20 12:33:52 +00:00
package qf.Test.day3;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class day03 {
private static void demo1() {
//1、读入一个整数表示一个人的年龄。
// 如果小于6岁则输出“儿童”
// 6岁到13岁输出“少儿”
// 14岁到17岁输出“青少年”
// 18岁到35岁输出“青年”
// 36岁到50岁输出“中年”
// 50岁以上输出“中老年”。
System.out.println("请输入年龄:");
Scanner scanner = new Scanner(System.in);
int age = scanner.nextInt();
if (age <= 6) {
System.out.println("儿童");
} else if (age <= 13) {
System.out.println("少儿");
} else if (age <= 17) {
System.out.println("青少年");
} else if (age <= 35) {
System.out.println("青年");
} else if (age <= 50) {
System.out.println("中年");
} else {
System.out.println("中老年");
}
}
private static void demo2() {
//计算销售总金额
//图书批发商店的某本书的零售价是26.5元/本,
// 如果客户一次性购买100本以上包括100本则每本的价格打9折
// 如果客户一次性购买500本以上包括500本则每本的价格打8折并返回1000元给客户
// 请分别计算购买8本、150本、600本的应付金额是多少。要求购买书的数量从控制台输入。
float price = 26.5f;
System.out.println("请输入要购买的数量:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if (100 <= num) {
price = (float) (price * 0.9);
System.out.println("应付金额为:" + (price * num));
} else if (500 <= num) {
price = (float) (price * 0.8);
System.out.println("应付金额为:" + ((price * num) - 1000));
}else {
System.out.println("应付金额为:" + (price * num));
}
}
private static void demo3() {
//读入一个表示年份的整数,判断这一年是否是闰年。如何判断一个年份是否是闰年:
//.1 如果这个年份能够被4 整除且不能被100 整除则这一年是闰年。例如1996 年是闰年而相应的1993 年就不是闰年。
//.2 要能被400 整除也是闰年。例如2000 年是闰年1900 年不是闰年。
System.out.println("请输入年份:");
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();
if(year%4 == 0 && year%100 != 0 || year%400 == 0) {
System.out.println(year + "是闰年");
} else {
System.out.println(year + "不是闰年");
}
}
private static void demo4() {
//代码如下,运行完成之后的结果是:10是偶数。横线处补全代码
// int a = 10;
// if (____________) {
// System.out.println(a + "是偶数");
// }
int a = 10;
if (true) {
System.out.println(a + "是偶数");
}
}
private static void demo5() {
//以下代码运行结果?
//饿了么?
boolean flag = false;
int num = 10;
if (flag){
num++;
}
num++;
if(num < 11){
System.out.println("天生我材必有用");
if (num > 5){
System.out.println("千金散尽还复来");
}
}
System.out.println("饿了么?");
}
private static void demo6() {
//读入一个整数如果是1~5 之间则分别输出5个福娃的名字否则输出“”。
System.out.println("请输入数字:");
Scanner scanner = new Scanner(System.in);
int fuwa = scanner.nextInt();
switch(fuwa){
case 1:
System.out.println("贝贝");
break;
case 2:
System.out.println("晶晶");
break;
case 3:
System.out.println("欢欢");
break;
case 4:
System.out.println("迎迎");
break;
case 5:
System.out.println("妮妮");
break;
default:
System.out.println("北京欢迎你");
break;
}
}
private static void demo7() {
//读入一个整数输出对应季度。35月春季68月夏季911月秋季122月冬季
System.out.println("请输入月份:");
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();
if (3 <= month && month <= 5){
System.out.println("春季");
}else if (6 <= month && month <= 8){
System.out.println("夏季");
}else if (9 <= month && month <= 11){
System.out.println("秋季");
}else if ((0 < month && month <= 2) || month == 12){
System.out.println("冬季");
}else{
System.out.println("月份不正确");
}
}
private static void demo8() {
//以下代码运行结果为?简述原因?
//输出40不管if如何执行最后都会把40赋值给b
int a = 20;
if (a == 20) {
int b = 30;
}
int b = 40;
System.out.println(b);
}
private static void demo9(){
//计算1+2+3+...+100 的和
int sum = 0;
for(int i = 1;i <= 100;i++){
sum +=i;
}
System.out.println("1+2+3+...+100 的和为:" + sum);
}
private static void demo10(){
//计算计算1+3+5+...+99的和
int sum = 0;
for(int i = 1;i <= 100;i++){
if(i%2 != 0){
sum +=i;
}
}
System.out.println("1+3+5+...+99的和为:" + sum);
}
private static void demo11(){
//把10、11 两题用while 循环或do...while 循环改写。
int sum10 = 0,i = 1;
while(i <= 100){
sum10 +=i;
i++;
}
System.out.println("1+2+3+...+100 的和为:" + sum10);
int sum11 = 0,m = 1;
while(m <= 100){
if(m%2 != 0){
sum11 +=m;
}
m++;
}
System.out.println("1+3+5+...+99的和为:" + sum11);
}
private static void demo12(){
//读入一个小于10 的整数n输出它的阶乘n。
System.out.println("请输入小于10的数字:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int factorial = 1;
for(int i = 1;i <= num;i++){
factorial *= i;
}
System.out.println(num + "的阶乘为:" + factorial);
}
private static void demo13(){
//求100 以内所有能被3 整除但不能被5 整除的数字的和。
int num = 0;
for(int i = 1;i <= 100;i++){
if(i%3 == 0 && i%5 != 0){
num += i;
}
}
System.out.println("能被3整除但不能被5整除的数字的和为:" + num);
}
private static void demo14(){
//编程找出四位整数abcd 中满足 (ab+cd)(ab+cd)=abcd 的数
for(int i = 1000;i <= 9999;i++){
int ab = i/100;
int cd = i%100;
if((ab+cd) * (ab+cd) == i){
System.out.println("满足条件的数是:" + i);
}
}
}
private static void demo15(){
//输出99 乘法表。
for(int i = 1;i < 10;i++){
for(int j = 1;j <= i;j++){
System.out.print(j + "*" + i + "=" + (i*j) + "\t");
}
System.out.println();
}
}
private static void demo16(){
//计算2000年1月1日到2008年1月1日相距多少天。注意闰年
int day = 0;
for(int year = 2000;year < 2008;year++){
if(year%4 == 0 && year%100 != 0 || year%400 == 0) {
day += 366;
} else {
day += 365;
}
}
System.out.println("2000年1月1日到2008年1月1日相距\t" + day + "天");
}
private static void demo17() {
//读入一个整数n输出如下图形
//n = 3
// *
//
// ***
//
//*****
//n = 4
// *
//
// ***
//
// *****
//
//*******
System.out.println("请输入数字:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for(int i = 1; i<=n; i++){
//输出n-i个空格
for(int j = 1; j<=n-i; j++){
System.out.print(" ");
}
//输出2*i-1个星
for(int j = 1; j<=2*i-1; j++){
System.out.print("*");
}
//换行
System.out.println();
}
}
private static void demo18(){
//求水仙花数。
//提示所谓水仙花数是指一个三位数abc如果满足a³+b³+c³=abc则abc是水仙花数。
int num = 0;
for(int i = 100;i <= 999;i++){
int a = i/100;
int b = i/10%10;
int c = i%10;
int res = a*a*a + b*b*b + c*c*c;
if(res == i){
num++;
}
}
System.out.println("水仙花数为:" + num);
}
private static void demo19(){
// 写一个方法add两个整数作为参数返回这两个整数的和。
// public static int add(int a, int b){
// return a + b;
// }
System.out.println(day03.add(10,11));
}
private static void demo20(){
//写一个方法整数n作为参数输出这个整数的所有因子
System.out.println("请输入整数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(day03.factor(n));
}
private static void demo21(){
//写一个方法整数n作为参数输出1+2+3+...+n 的和。
System.out.println("请输入整数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(day03.sum(n));
}
private static void demo22(){
//写一个函数整数n作为参数输出n个HelloWorld
System.out.println("请输入整数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int i = 0; i < n; i++){
day03.helloworld();
}
}
private static void demo23(){
//写一个函数整数n作为参数输出这个n是几位数
System.out.println("请输入整数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
jiwei(n);
}
private static void demo24(){
//验证哥德巴赫猜想任何一个大于6的偶数都能分解成两个质数的和。要求输入一个整数输出这个数能被分解成哪两个质数的和。
//eg : 14
//14=3+11
//14=7+7
System.out.println("请输入整数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
if (n > 6 && n % 2 == 0) {
for (int i = 3; i <= n/2; i+=2) {
if (isPrime(i) && isPrime(n - i)) {
System.out.println("这个数能被分解成\t" + i + "和" + (n - i) + "\t两个质数的和");
}
}
} else {
System.out.println("输入的" + n + "不是大于6的偶数");
}
}
public static void main(String[] args) {
demo24();
}
//两数相加
public static int add(int a, int b){
return a + b;
}
//获取n的全部因子
public static String factor(int n) {
List list = new ArrayList<Integer>();
for (int i = 1; i < n; i++) {
if (n % i == 0) {
list.add(i);
}
}
return list.toString();
}
//输出1+2+3+...+n 的和
public static int sum(int n){
int sum = 0;
for (int i = 1;i <= n;i++){
sum += i;
}
return sum;
}
//输出n个HelloWorld
public static void helloworld(){
System.out.println("HelloWorld");
}
//输出n是几位数
public static void jiwei(int n){
int w = 0;
int num = n;
do{
w++;
n = n /10;
}while(n!=0);
System.out.println(num + "是" + w + "位数");
}
//判断是否为质数
public static boolean isPrime(int n){
for(int i = 2; i <= Math.sqrt(n); i++){
if (n % i == 0){
return false;
}
}
return true;
}
}