练习一:某人有100000元,每经过一个路口需要缴费 规则如下:
1.当现金>50000时,每次交5%
2.当现金<=50000时,每次交1000
计算该人可以经过多少次路口,使用while break完成
自己的代码
/*某人有100000元,每经过一个路口需要缴费 规则如下:
1.当现金>50000时,每次交5%
2.当现金<=50000时,每次交1000
计算该人可以经过多少次路口,使用while break完成*/
/*思路分析------
1.定义一个double 变量赋值100000 定义一个int变量记录次数
2.使用while无限循环一直经过路口,当钱不够1000时跳出
3.循环内添加两个if判断现金不同扣除多少费用
4.当进入任意一个if扣费后,使用次数变量自增,记录
5.当现金少于最低扣费标准 少于1000后跳出循环,输出扣费次数*/
double people = 100000;
int cs = 0;
int a = 0;
while(true){
//无限循环
if (people>50000) {
System.out.println("扣费5%");
people = people-(people*0.05);
a++;
}
if (people<=50000&&people>=1000) {
System.out.println("扣费1000");
people = people-1000;
a++;
}
if (people<1000) {
System.out.println("余额不足");
break;
}
}
System.out.println("一共扣除了"+a+"次,余额还有"+people);
输出结果:一共扣除了62次,余额还有767.4979115529859
老师改进建议:不同的余额可以使用if elseif分支实现,people<=50000条件可以省略,当余额>=1000时由于上面的if条件有上限>50000那么第二个创造一个下限就可以了
练习二:实现判断一个整数,属于哪个范围:大于0;小于0;等于0
Scanner mysc = new Scanner(System.in);
System.out.println("请输入整数");
int a = mysc.nextInt();
if (a>0) {
System.out.println("大于0");
}else if(a==0){
System.out.println("等于0");
}else if(a<0){
System.out.println("小于0");
}
练习三:判断一个年份是不是闰年(闰年条件,4的倍数且不能被100整除,能被400整除)
Scanner mysc = new Scanner(System.in);
System.out.println("请输入整数");
int a = mysc.nextInt();
if (a%4==0 && a%100!=0 ) {
System.out.println(a+"年是闰年");
}else if(a%400==0){
System.out.println(a+"年是闰年");
}
else{
System.out.println(a+"年不是闰年");
}
练习四:判断一个整数是否是水仙花数,(水仙花数是指一个3位数,其 各个位上的数字立方和 等于其本身)例如153=111+555+333
提示:利用除法获取百位 十位 个位
Scanner mysc = new Scanner(System.in);
int n = mysc.nextInt();;
int n1 = n/100;
int n2 = n%100/10;
int n3 = n%10;
if (n==n1*n1*n1+n2*n2*n2+n3*n3*n3) {
System.out.println(n+"是水仙花数");
}else{
System.out.println(n+"不是水仙花数");
}
练习五:查看以下代码会输出什么
int m = 0,n = 3;
if (m>0) {
if(n>2){
System.out.println("OK1");
}else{
System.out.println("OK2");
}
}
输出结果为:
什么也不会输出
练习六:输出1~100之间不能被5整除的数,每5个一行
int b = 0;//计算次数
for (int a =1;a<=100 ;a++ ) {
if (a%5!=0) {
System.out.print(a+"\t");
b++;
}
if (b==5) {
b-=5;
System.out.println();
}
}
练习七:输出小写的a~z以及大写的Z-A
提示:char字符对应的是unicode编码表
unicode编码表:a~z对应十进制 97-122 A-Z对应十进制 65-90
for(int a = 65;a<=90;a++){
char c = (char)a;
System.out.print(c+" ");
}
System.out.println();
for (int b = 97;b<=122 ;b++ ) {
char d = (char)b;
System.out.print(d+" ");
}
或者直接在char类型上+1限制条件为<=‘z’也可以
for(char i = ‘a;i<=‘z’;i++’){
System.out.print(i+" ");
}
练习八:求出1-1/2+1/3-1/4…1/100的和
找出规律其实就是
1-(1/2)+(1/3)-(1/4)+(1/5)-…(1/100)
//求出1-1/2+1/3-1/4...1/100的和
/*思路分析:找出规律其实就是
1-(1/2)+(1/3)-(1/4)+(1/5)-......(1/100)*/
//(1).使用for循环从1更迭到100,然后利用取模分出奇数和偶数
//(2).再根据奇数或者偶数进行+或者-
double num = 0;
for (int a = 1;a<=100 ;a++ ) {
if (a%2==0) {
num-=1.0/a;
}else if(a%2!=0){
num+=1.0/a;
}
}
System.out.println(num);
注意点:需要把分子 1写成 1.0(double类型) 才能得到精确的小数(我也不晓得为啥)
练习九:求出1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+…+100)的结果
//求出1+(1+2)+(1+2+3)+(1+2+3+4)+.
//..+(1+2+3+..+100)的结果
//思路分析:
//1.定义一个int变量存储和
//2.利用双层for循环:第一层为100项相加和每一项的最后一个数
int sum =0;
for (int i = 1;i<=100 ;i++ ) {
for (int j=1;j<=i ;j++ ) {
//因为i是最后一位数字,所以j<=i可以让内层循环退出去重新进来一遍,并且上限+1,sum保存了上次的和
sum=sum+j;
}
}
System.out.println(sum);