• 课后习题


    //第一道题:输入年份判断是闰年还是平年?农历 公历
    //是否闰年的判断规则:年份能被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();
    }
    }

        }
  • 相关阅读:
    几个开源项目实体层实现方式比较
    ASP.NET MVC+LINQ开发一个图书销售站点
    C#流程控制
    用Java实现多线程服务器程序
    C#修饰符
    C#中的转义字符
    自定义实体类简介
    JAVA学习笔记——多线程(并发)
    java 多线程 wait() 以及 notirfy() 简析
    OA系统权限管理设计
  • 原文地址:https://www.cnblogs.com/luayan/p/13893480.html
Copyright © 2020-2023  润新知