Java基本语法(下): 程序流程控制
主要讲解宋老师里面课后题(无答案的),以便后期复习使用。(可以私信我要文档资料)
代码题:
- 实现对三个整数进行排序,输出时按照从小到大的顺序输出。
public class Exer1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = scanner.nextInt();
System.out.println("请输入第二个整数:");
int num2 = scanner.nextInt();
System.out.println("请输入第三个整数:");
int num3 = scanner.nextInt();
if (num1 >= num2) {
if (num3 >= num1)
System.out.println(num2 + "," + num1 + "," + num3);
else if (num3 <= num2)
System.out.println(num3 + "," + num2 + "," + num1);
else
System.out.println(num2 + "," + num3 + "," + num1);
} else {
if (num3 >= num2)
System.out.println(num1 + "," + num2 + "," + num3);
else if (num3 <= num1)
System.out.println(num3 + "," + num1 + "," + num2);
else
System.out.println(num1 + "," + num3 + "," + num2);
}
}
}
- 编写程序,判断给定的某个年份是否是闰年
闰年的判断规则如下:
(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年。
提示:
if((year % 4 ==0 && year % 100 != 0) || year % 400 == 0){}
public class Exer2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份");
int year = scanner.nextInt();
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
System.out.println(year + "年是闰年");
} else
System.out.println(year + "年是不是闰年");
}
}
- 要求用户输入两个数a和b,如果a能被b整除或者a加b大于1000,则输出a;否则输出b。
public class Exer3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数a");
int a = scanner.nextInt();
System.out.println("请输入第二个数b");
int b = scanner.nextInt();
if(a % b == 0 || a + b > 1000){
System.out.println("输出为"+a);
}else
System.out.println("输出为"+b);
}
}
- 使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。
提示:先声明两个变量,一个是char型的,用来存放用户名,一个是int型的,用来存放密码。
public class Exer4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名");
String s = scanner.next();
char c = s.charAt(0);
System.out.println("请输入密码");
int pw = scanner.nextInt();
if(c == '青' && pw == 123){
System.out.println("欢迎你,青");
}else
System.out.println("对不起,你不是青");
}
}
- 打印1-100之间13的倍数,使用for循环
public class Exer5 {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 13 == 0)
System.out.println(i);
}
}
}
- 使用双重循环打印20 * 8的矩形,使用for循环实现
public class Exer6 {
public static void main(String[] args) {
for (int i = 0; i < 8 ; i++) {
for (int j = 0; j <20 ; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
- 用for循环计算1000以内偶数的和
public class Exer7 {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 1000; i++) {
if (i % 2 == 0) {
sum += i;
}
}
System.out.println("1000以内偶数的和为" + sum);
}
}
- 输入长和宽,输出长方形,如:输入4和3, 将输出如下图形
####
####
####
public class Exer8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入长");
int i = scanner.nextInt();
System.out.println("输入宽");
int j = scanner.nextInt();
for (int k = 0; k < j; k++) {
for (int l = 0; l < i; l++) {
System.out.print("#");
}
System.out.println();
}
}
}
- 输入高度,输出直角三角形。如:输入4, 将输出如下图形
#
##
###
####
public class Exer9 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入高度");
int i = scanner.nextInt();
for (int j = i; j > 0; j--) {
for (int k = 0; k < i - j + 1; k++) {
System.out.print("#");
}
System.out.println();
}
}
}
- 输入高度,输出倒直角三角形。如:输入4, 将输出如下图形
####
###
##
#
public class Exer10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入高度");
int i = scanner.nextInt();
for (int j = 0; j < i; j++) {
for (int k = 0; k < i - j ; k++) {
System.out.print("#");
}
System.out.println();
}
}
}
- 打印1-100之间非13的倍数,使用continue语句
public class Exer11 {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 13 == 0) {
continue;
}
System.out.println(i);
}
}
}
- 输出从1到100之间所有不能被3整除的数;并输出这些整数的和
public class Exer12 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100 ; i++) {
if(i % 3 != 0){
sum += i;
}
}
System.out.println("和为"+sum);
}
}
- 打印如下的图形:菱形2
public class Exer13 {
public static void main(String[] args) {
//上半部分
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i; j++) {
System.out.print("*");
}
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 5 - i; j++) {
System.out.print("*");
}
System.out.println();
}
//下半部分
for (int i = 4; i > 0; i--) {
for (int j = 0; j < 5 - i + 1; j++) {
System.out.print("*");
}
for (int j = 0; j < i - 1; j++) {
System.out.print(" ");
}
for (int j = 0; j < 5 - i + 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
- 编写程序,打印100-200之间的质数
public class Exer14 {
public static void main(String[] args) {
for (int i = 100; i <= 200; i++) {
boolean isFlag = true;
for (int j = 2; j < Math.sqrt(i); j++) {
//小优化:因为如果它不是质数,
// 那么它一定可以表示成两个数(除了1和它本身)相乘,
// 这两个数必然有一个小于等于它的平方根。只要找到小于或等于的那个就行了
if (i % j == 0) {
isFlag = false;
break;
}
}
if (isFlag) {
System.out.println(i);
}
}
}
}
- 山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。
提示:
(1) 用整型变量water表示水缸里的水“int water = 15;”。
(2) 用整型变量l表示小和尚下山挑水的次数“int l = 0;”。
(3) 分析循环条件(水少于50升),循环操作(水增加5升,挑水次数增加1)。
(4) 套用while循环(或do-while循环)写出代码。
public class Exer15 {
public static void main(String[] args) {
int water = 15;
int l = 0;
while (true) {
water += 5;
l++;
if (water >= 50) {
break;
}
}
System.out.println(l);
}
}
- 生成13位条形码
Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
例如:690123456789
计算其校验码的过程为:
① 前十二位的奇数位和6+0+2+4+6+8=26
② 前十二位的偶数位和9+1+3+5+7+9=34
③ 将奇数位和与偶数位和的三倍相加26+34*3=128
④ 取结果的个位数:128的个位数为8
⑤ 用10减去这个个位数10-8=2
所以校验码为2
(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
实现上述代码的功能,计算验证码,输入12位条码,返回带验证码的条码。
输入690123456789 输出6901234567892
public class Exer16 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入12位验证码");
String s = scanner.next();
char[] chars = s.toCharArray();
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < chars.length; i++) {
int num = (int) (chars[i] - '0');
if ((i + 1) % 2 == 0)
sum1 += num; // 偶数位
else
sum2 += num; // 奇数位
}
int lastNum = 10 - ((sum2 + sum1 * 3) % 10);
if (lastNum == 10) {
lastNum = 0;
}
String lastCode = s + lastNum;
System.out.println(lastCode);
}
}
- 实现判断一个4位整数,统计出此整数里面包含多少个偶数,多少个奇数的功能
public class Exer17 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if (num > 1000 && num < 10000) {
int i = 0; // 偶数
int j = 0;// 奇数
while (num > 0) {
int last = num % 10;
if (last % 2 == 0) {
i++;
} else {
j++;
}
num = num / 10;
}
System.out.println("EvenNum: " + i + ",oddNum: " + j);
}
}
}
- 开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。
public class Exer18 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入身高");
int i = scanner.nextInt();
System.out.println("请输入体重");
int j = scanner.nextInt();
if((i-108) * 2 < (j+10) && (i-108) * 2> (j-10))
System.out.println("你的体重合适");
else
System.out.println("你的体重不合适");
}
}
有3个整数,给出提示信息:
能否创建三角形;两边之和大于第三边 三个条件都要写
如果能构建三角形,提示是直角三角形还是等边三角形等腰三角形还是普通三角形;
最后输出三角形面积;
public class Exer19 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int max,min,mid;
System.out.println("请输入第一条边的长度:");
int a = scanner.nextInt();
System.out.println("请输入第二条边的长度:");
int b = scanner.nextInt();
System.out.println("请输入第三条边的长度:");
int c = scanner.nextInt();
int sum = a+b+c;
max = (a>b?a:b)>c?(a>b?a:b):c; //利用三目计算出最大值
min = (a<b?a:b)<c?(a<b?a:b):c; //利用三目计算出最小值
mid = sum - max - min;
int p = sum/2;
if(min + mid > max){
System.out.println("能创建三角形");
if(mid * mid + min * min == max * max && min == mid){
System.out.println("是等腰直角三角形");
}
else if(mid * mid + min * min == max * max){
System.out.println("是直角三角形");
}
else if (max == mid && max == min){
System.out.println("是等边三角形");
}else if(min == mid || mid == max)
System.out.println("是等腰三角形");
else
System.out.println("普通三角形");
double d = Math.sqrt(p*(p-a)*(p-b)*(p-c));//不知道怎么调精度。
System.out.println("面积为"+d);
}
else
System.out.println("不能创建三角形");
}
}
最后送个爱心结束第2部分。
public class Heart {
public static void main(String[] args) {
// 分三个大部分 上中下
for (int i = 0, k = 0; i < 14; i++) {// 打印行
// 上部分 上分为 四个部分
if (i < 3) {
for (int j = 0; j < 5 - 2 * i; j++) {// 1、空心
System.out.print(" ");
}
if (i == 2) {// 2、*
for (int j = 0; j < 6 + 4 * i - 1; j++) {
System.out.print("*");
}
for (int j = 0; j < 7 - 4 * i + 2; j++) {// 3、空心
System.out.print(" ");
}
for (int j = 0; j < 6 + 4 * i - 1; j++) {// 4、*
System.out.print("*");
}
} else {
for (int j = 0; j < 6 + 4 * i; j++) {// 2、*
System.out.print("*");
}
for (int j = 0; j < 7 - 4 * i; j++) {// 3、空心
System.out.print(" ");
}
for (int j = 0; j < 6 + 4 * i; j++) {// 4、*
System.out.print("*");
}
}
} else if (i < 6) {// 中间
for (int j = 0; j < 29; j++) {
System.out.print("*");
}
} else {// 下部分 6
if (i == 13) {
for (int j = 0; j < 2 * (i - 6); j++) {// 打印空格
System.out.print(" ");
}
System.out.print("*");
} else {
for (int j = 0; j < 2 * (i - 6) + 1; j++) {// 打印空格
System.out.print(" ");
}
for (int j = 1; j < 28 - 4 * k; j++) {
System.out.print("*");
}
k++;
}
}
System.out.println();// 换行
}
}
}