目录
一 变量与运算符练习
二 流程控制练习
一 变量与运算符练习
1 战士连续作战89小时,编程计算共多少天零多少小时?
int t = 89;
int day = t / 24;
int hour = t % 24;
System.out.println("为抵抗洪水,战士连续作战" + day + "天" + hour + "小时");
2 今天是周二 100天以后是周几
int week = 2;
week += 100;
week = week % 7;
System.out.println("100天后是周"+week);
3 实现两个变量交换
int m = 10,n=5;
int temp;
temp = m ;
m = n ;
n = temp;
System.out.println(m);
4
char c = 1 +'A';
System.out.println(c);//B
System.out.println(1+'A');//66
二 流程控制练习
1从键盘输入狗狗的年龄 获取对应的人的年龄
Scanner scanner = new Scanner(System.in);
System.out.println("输入狗狗的年龄");
double age = 0;
int dogAge = scanner.nextInt();
if (dogAge < 0 ){
System.out.println("请输入正确的年龄");
}
else{
if (dogAge <= 2){
age = dogAge * 10.5;
}
else {
age = 2 * 10.5 + 4 * (dogAge - 2);
}
System.out.println("对应的人的年龄为"+age);
}
2实现对三个整数进行排序,输出时按照从小到大的顺序输出。
//可以采取if-else嵌套的依次排序法等 这里采取的是交换法
int a = 10, b = 5, c = 1;
if (a > b) {int temp = a;a =b;b = temp;}
if (b > c){int temp = b;b =c;c = temp;}
if (a > b) {int temp = a;a =b;b = temp;}
System.out.println("从大到小顺序为"+a+" "+b+" "+c);
3 从键盘分别输入年、月、日,判断这一天是当年的第几天
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年");
int year = scanner.nextInt();
System.out.println("请输入月");
int month = scanner.nextInt();
System.out.println("请输入日");
int day = scanner.nextInt();
int sum = 0;
switch (month -1){
case 11:
sum += 30;
case 10:
sum += 31;
case 9:
sum += 30;
case 8:
sum += 31;
case 7:
sum += 31;
case 6:
sum += 30;
case 5:
sum += 31;
case 4:
sum += 30;
case 3:
sum += 31;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ){
sum += 29;
}
else {
sum += 28;
}
case 1:
sum += 31;
}
sum += day;
System.out.println("这是当年的第"+sum+"天");
4随机输出一个两位数
int value = (int)(Math.random() * 90 + 10);
System.out.println(value);
5 使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。
char name = '青';
int password = 111;
if (name == '青' && password == 123){
System.out.println("欢迎你,青");
}
System.out.println("对不起你不是青");
6 使用双重循环打印20 * 8的矩形,使用for循环实现
for (int i = 0 ;i < 8;i++){
for (int j = 0 ;j < 20;j++){
System.out.print("*");
}
System.out.println();
}
7 输入高度,输出倒直角三角形
Scanner scanner = new Scanner(System.in);
System.out.println("请输入高");
int h = scanner.nextInt();
for (int i = 0;i < h;i++){
for (int j = 0;j < h -i;j++){
System.out.print("*");
}
System.out.println();
}
8从1循环到150,一行一值,3倍数打印foo,5倍数打印biz,7倍数打印baz
for (int i = 1;i <= 150 ;i++){
System.out.print(i);
if ( i % 3 == 0){
System.out.print(" foo ");
}
if (i % 5 == 0){
System.out.print(" biz ");
}
if ( i % 7 == 0){
System.out.print(" baz ");
}
System.out.println();
}
9 输入两个正整数m和n求其最大公约数和最小公倍数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入正整数m");
int m = scanner.nextInt();
System.out.println("请输入正整数n");
int n = scanner.nextInt();
//求最大公约数
for (int i = m;i >0;i--){
if (m % i == 0 && n % i ==0 ){
System.out.println("最大公约数为"+i);
break;
}
}
for (int j = 1;j <= m ;j++){
//求最大公倍数
if (j * m % n == 0){
System.out.println("最小公倍数为"+j*m);
break;
}
}
10 输出所有的水仙花数(三位数 各个位上数字立方和等于其本身)
for (int a = 1;a <10 ;a++){
for (int b = 0 ;b <10 ;b++){
for (int c = 0;c < 10;c++){
if (a*a*a + b*b*b +c*c*c == 100*a +10 * b +c){
System.out.println(a+""+b+""+c+"");
}
}
}
}
11 输出九九乘法表
for (int i = 1 ;i < 10;i++){
for (int j = 1 ; j <= i ;j++){
System.out.print(j + "*" + i + " = " + i * j + " ");
}
System.out.println();
}
12 输出100以内的质数
方法①
for (int i = 2; i<=100 ;i++){
boolean isFlag = true;
for (int j = 2; j < i ;j++){
if (i % j == 0){
isFlag = false;
break;
}
}
if (isFlag){
System.out.println(i);
}
}
这里可以利用二分法查找优化一下
for (int i = 2; i<=100 ;i++){
boolean isFlag = true;
for (int j = 2; j < Math.sqrt(i) ;j++){
if (i % j == 0){
isFlag = false;
break;
}
}
if (isFlag){
System.out.println(i);
}
}
方法②
label: for (int i = 2; i<=100 ;i++){
for (int j = 2; j < Math.sqrt(i) ;j++){
if (i % j == 0){
continue label;
}
}
System.out.println(i);
}
13 从键盘读入个数不确定的整数 并判断读入的正数和负数的个数 输入为0时程序结束
Scanner scanner = new Scanner(System.in);
System.out.println("请输入任意个整数");
boolean isFlag = true;
int z = 0;
int f = 0;
while (isFlag){
int a = scanner.nextInt();
if (a > 0 ){
z++;
}
else if (a < 0){
f++;
}
else {
isFlag = false;
}
}
System.out.println("正整数的个数为"+z);
System.out.println("负整数的个数为"+f);
14 找出1000以内的所有完数(一个数如果恰好等于它的因子之和,这个数就称为完数,因子是除去这个数本身的其他约数)
for (int i = 1; i <= 1000 ;i++){
int sum = 0;
for (int j = 1; j < i;j++){
if (i % j == 0){
sum += j;
}
}
if (sum == i){
System.out.println(i);
}
}
15 随机生成一个100以内的数,猜数字游戏:
从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次
Scanner scanner = new Scanner(System.in);
int a =(int)(Math.random() * 90 +10);
int sum = 0;
for (;;){
System.out.println("请猜猜");
int b = scanner.nextInt();
if (b > a){
System.out.println("太大了");
sum ++;
}
else if (b < a){
System.out.println("太小了");
sum ++;
}
else {
System.out.println("猜对了!!");
sum ++;
break;
}
}
System.out.println("一共猜了"+sum+"次");



