JavaTask/day03.md

417 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

```java
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;
}
}
```