课后习题

//第一道题:输入年份判断是闰年还是平年?农历 公历
//是否闰年的判断规则:年份能被4整除并且不能被100整除
//或者能被400整除

    int year = 2020;//闰年
    if(year%4==0&&year%100!=0||year%400==0){
        //表明该年是一个闰年
        System.out.println(year+"是一个闰年。");
    }

//第二道题:输入身高体重性别判断身体比列是否正常?
//此时出现代码的冗余性

    boolean sex = true;
    int height = 180;
    double weight = 70;
    double standard;
    //判断性别
    if (sex==true){
        //表明是男性
       standard = (height-80)*0.7;
       if (weight<standard*0.8){
           System.out.println("你当前的体重不足");
       }else if(weight<standard*0.9){
           System.out.println("你当前的体重有点偏瘦");
       }else if (weight<standard*1.1&&weight>standard*0.9){
           System.out.println("你身材不错哦");
       }else if(weight<standard*1.1){
           System.out.println("你当前身材有点偏胖了");
       }else {
           System.out.println("你是一个大胖子");
       }

    }else {
        //表明是女性
        standard = (height-70)*0.6;
        if (weight<standard*0.8){
            System.out.println("你当前的体重不足");
        }else if(weight<standard*0.9){
            System.out.println("你当前的体重有点偏瘦");
        }else if (weight<standard*1.1&&weight>standard*0.9){
            System.out.println("你身材不错哦");
        }else if(weight<standard*1.1){
            System.out.println("你当前身材有点偏胖了");
        }else {
            System.out.println("你是一个大胖子");
        }
    }

// 第三道题:给定一个年份,一个月份,这个月的第几天,判断改天是该年中的第几天?
//数据合法性检验

    int year1 = 2020;
    int month = 10;
    int day = 15;
    int today = 0;//today是该年中的第几天
    //选择结构/分支结构 if else/switch case
    if(month<1||month>12&&day>31||day<1){
        System.out.println("你给定的值不合法,请从新输入");
    }
    if (month==1){
        today = day;
    }else if(month==2){
        today=31+day;
    }else if(month == 3){
        today = 31+day+28;
    }else if(month == 4){
     today = 31*2+28+day;
    }else if(month==5){
        today=31*2+30+28+day;
    }else if(month==6){
        today=31*3+30+28+day;
    }else if(month==7){
        today=31*3+30*2+28+day;
    }else if(month==8){
        today=31*4+30*2+28+day;
    }else if(month==9){
        today=31*5+30*2+28+day;
    }else if(month==10){
        today=31*5+30*3+28+day;
    }else if(month==11){
        today=31*6+30*3+28+day;
    }else if(month==12){
        today=31*6+30*4+28+day;
    }
     //输出该天是该年中的第几天
    if(year1%4==0&&year1%100!=0||year1%400==0){
        System.out.println(year1+"/"+month+"/"+day+"是该年的第"+(today+1)+"天");

    }else {
        System.out.println(today);
    }

//第四道题:当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。
// 编一程序完成分数的自动转换工作。
// 转换规则如下:60分以下的不合格,60分到69分为合格,70分到89分为良好,90分以上为优秀。
// 结合switch case语句。
//百分制转换成等级制

    int score = 97;
    String level;

    if(score>=0&&score<60){
        level = "不合格";
    }else if (score<=69){
        level = "合格";
    }else if(score<=89){
        level = "良好";
    }else if(score<=100){
        level = "优秀";
    }else {
        level = "等级不详";
    }
    System.out.println("该学生成绩等级为:"+level);

//第五道题:编写一个程序,提示用户输入一个三位的整数,然后确定它是否是回文数字,
// 当从左到右,以及从右到左都是一样的话,这个数字为回文数字,如121就是,而123就不是。
//结局思路:
//该数字是一个三位数,从左往右和从右往左是相同的整数--》个位数==百位数
// 三位数--》获取三位数的个位数 -->获取三位数的百位数

    int number = 565;
    //获取该数字的个位数和百位数
    int one = number%10;
    int three = number/100;
    //判断是否是回文数字的条件one ==three
    if(one==three){
        System.out.println("是回文数字");
    }else {
        System.out.println("不是回文数字");
    }

/*第六道题:编写程序,获取到三角形的三条边,如果数字合法就计算这个三 角形的周长,
否则就显示这些值不合法,如果任意两边的和大于第三边,那么给定的值就是合法的。
解决思路:
设定三角形三条边的长度值
确定三条边的值的合法性 条件就是:任意两边的和大于第三边
如果是合法的,那么久可以计算三角形的周长l = a+b+c
如果值是非法的,那么久显示这些值不合法
*/

    int a = 123;
    int b = 334;
    int c = 289;
    int l;//这是三角形的周长
   //输出false 不输出 定义一个开关/标记
    if(a+b>c&&a+c>b&&b+c>a){
        //表面该数据是合法的

        System.out.println("该三角形的周长为:"+(a+b+c));
    }else {

        System.out.println("给定的三边值不合法!");
    }

/*
第一道题:
给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐
解题思路:切入点1. 是一次性利用手中的钱最大购买可乐,求瓶数和余钱
2.每次购买可乐,求手里的钱,和购买的瓶数累加和,判断钱数>3*/

    int money = 20;
    int price = 3;
    int num = 20/3=6; //六瓶
    int change = 20%3=2//零钱
    int sum = 0;//购买可乐的瓶数
    //第一次购买;
    int num = 20/3=6;//6瓶
    sum = sum+num;//sum = 6
    int change = 20%3 = 2;//零钱
    //第二次购买:
    money = num+change=6+2=8;//手里的钱为8
    int num02 = 8/3=2;//2瓶
    int change02 =8%3 = 2;//零钱
    sum = sum+num02;//sum=8
   // 因为手里的钱足够买到一瓶可乐的 money>=price
    //第三次购买:
    money = num02+change02 = 2+2 = 4;//手里面的钱为4
    int num03 =4/3 = 1;//1瓶
    int change03 =4%3= 1;//零钱1
    sum = sum+num03=8+1= 9;
    //此时手里面的钱为2元=num03+change<price
     int money = 20;//购买可乐钱1.初始化变量部分
    int price = 3;//可乐价钱
    int sum =0;//购买可乐的瓶数的累加和
    int change = 0;//零钱
    int num = 0;//每次购买的瓶数


    //你是用for while do-while 循环
    //通常使用for循环的时候,循环次数是确定的,或者要需要参与循环变量的长度是确定的
    //反之,不确定次数,不确定长度,我们久使用whiledo-while
    //通常循环的结构是包含四部分:循环变量的迭代部分,灵活变化的 循环条件表达式和循环变量紧密结合的
    /*while(money>=price){//循环条件表达式
        //循环体代码
        num =money/price;//瓶数
        change=money%price;//零钱
        sum=sum+num;//每次瓶数累加和
        //迭代部分
        money=num+change;//购买可乐的钱
    }*/

/*

第二道题:使用循环分别实现10进制整数转成二进制。得到二进制对应的结果值
解题思路:拿十进制数除以2 求余数 当该商数为0的时候,就不再除以2 ,循环结束
5--》5/2=2;商数2 5%2=1;余数1--》2/2=0;商数1; 2%2=0;余数为0
-->1/2=0;商数0 1%2=1;余数1
5-->二进制101=“ ”+1+0+1
= “”+true+true=true true;

//任意一个字符串和其他类型的变量做相加“+”运算 结果都为字符串类型

*/

 /*  int num = 8; // 1.初始化部分 1000就是循环变量 循环条件一定要和循环变量精密结合
    int num02 = num;//替代变量
    //循环条件表达式 num != 0 循环次数不确定 通常使用while
    String binary = "";//二进制值 空字符串
    while (num!=0){//2.循环条件部分
        //循环体部分
        int quotient = num/2;//商数
        int remainder = num%2;//余数
        binary = remainder+binary;//反向拼接0+""-->0+0+""-->0+0+0+""-->1+0+0+0+""

        //迭代部分 循环变量的变化情况 num
        num = quotient;//循环变量的变化情况
    }

//输出二进制值
System.out.println(num02+"对应的二进制值为:"+binary);
/
//第三道题:求一下1~100内,所有尾数不为8的整数的累加值。
//解题思路:个位数 = 整数%10 !=8
/
int sum =0;
for (int i=1;i<=100;i++){
//限制条件 个位数不能为8
if(i%10!=8){
sum=sum+i;
}
}
//输出1~100以内的和
System.out.println("1~100以内的尾数不为8的整数和为"+sum
);

/*
第四道题:一球从100米的高度自由落下,每次落地后反跳原高度的2/3再落下,
求它在第10次落地时,共经过多少米?第10次反弹多高?
解题思路:
次数确定 for循环
循环次数 和 弹起的高度关联?
第一次落下:
double downHeight = 100;//初始高度100米
double coefficient = 2.0/3.0=0.66666666666666666666666;
double upHeight = 100coefficient;/弹起的高度
double length = downHeight+upHeight=100+66.666666
第二次落下:
downHeight=upHeight=66.66666
upHeight=downHeight
coefficient;
length = length +downHeight+upHeight;//100 + 66.666 + 66.666
第三次落下:
downHeight=upHeight=66.666660.66666
upHeight=downHeight
coefficient;
length = length +downHeight+upHeight;

*/

    double downHeight = 100;//初始落下的高度
    double coefficient = 2.0/3.0;//弹起高度的系数
    double upHeight = 100*coefficient;//初始弹起的高度 第一次
    double length = downHeight+upHeight;//初始经过的米数 第一次
    //循环9次
    for (int i = 2;i<=10;i++){
        //循环体代码
        //落下的高度=上一次弹起的高度
        downHeight=upHeight;
        //计算每次弹起的高度
        upHeight = downHeight*coefficient;//上一次的落下高度*弹起的系数
        //每次落地之后的经过的长度
        length = length+downHeight+upHeight;//经过的长度
        //最后一次

    }

//输出第十次落地时经过的长度
System.out.println("输出第10次落地时经过的长度为"+(length-upHeight)+"米");
//输出第10次弹起的高度
System.out.println("第10次弹起的高度为"+upHeight+"米");

//需求3:求一下前100项正整数中的所有奇数的和 整数%2!=0

   int sum = 0;
    for (int i=1;i<=100;i++){
        if (i%2!=0){
            sum=sum+i;
        }
    }
    System.out.println(sum);

    //需求4:求一下前100项所有是7包含7的倍数所有的整数的和  整数%7==0

    int sum =0;
    for (int i=1;i<=100;i++){
        if (i%7==0){
            sum=sum+i;
        }
    }
            System.out.println(sum);
    */

    //需求5:求一下三位数中的所有的水仙花数分别是多少,他们的和是多少
    // 水仙花数:每个位数的立方和等于该数本身

    int sum = 0;
    for (int i=100;i<=999;i++){
        int one = i%10;
        int two = i%100/10;
        int three = i/100;
        if(one*one*one+two*two*two+three*three*three==i){
            System.out.println(i);
            sum=sum+i;
        }
    }
     System.out.println(sum);*/


    //需求6:求一下10的阶乘数 如5!= 5*4*3*2*1=120
    int product = 1;//乘积数
    for (int i=1;i<=10;i++){
        product=product*i;
    }
    System.out.println("10的阶乘数是:"+product);//3628800*/

//需求7:求一下[100,300]之间的能被5整除的所有数,每行输出8个数。每8个数换一行
int count = 0;//统计5的倍数的整数的个数
for (int i=100;i<=300;i++){
if (i%50){
//表面该数是5的倍数
System.out.print(i+" ");
count++;
//每输出一次久累加一次
// 判断 个数是否达到8次 思路:拿次数 除以8求余数 判断是否等于0
if (count%8
0){
System.out.println();
}
}

    }
原文地址:https://www.cnblogs.com/luayan/p/13893480.html