//第一道题:输入年份判断是闰年还是平年?农历 公历
//是否闰年的判断规则:年份能被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=downHeightcoefficient;
length = length +downHeight+upHeight;//100 + 66.666 + 66.666
第三次落下:
downHeight=upHeight=66.666660.66666
upHeight=downHeightcoefficient;
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%80){
System.out.println();
}
}
}