java循环02·基础习题
1.今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
代码:
int Tou = 35, Zu = 94;
for(int x = 1; x < Tou; x++) { //鸡兔全有,所以任意一方
//总数不能超过35
for(int y = 1; y <=Tou-1; y++) {//定义x为鸡,y为兔
if (x+y==Tou && 2*x+4*y==Zu){//判断条件
System.out.println(x+" "+y);
}
}
}
运行结果:
2.鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
代码:
//第一种方法:
System.out.println("第一种方法:");
//初始条件是否从0或1开始,取决于三种鸡是否都有
for (int 鸡翁 = 0; 鸡翁 < 20; 鸡翁++) {
for (int 鸡母 = 0; 鸡母 < 33; 鸡母++) {
for (int 鸡雏 = 0; 鸡雏 < 99; 鸡雏++) {
if(鸡翁*15 + 鸡母*9 + 鸡雏 == 300 && 鸡翁 + 鸡母 + 鸡雏 ==100) {
System.out.println("鸡翁:" + 鸡翁 + " 鸡母为:" + 鸡母 + " 鸡雏为:" + 鸡雏);
}
}
}
}
//第二种方法:
System.out.println("第二种方法:");
for (int i = 0; i < 20; i++) {
for (int j = 0; j <= 33; j++) {
int k = 100 - i - j;
if(k%3 != 0) {
continue;
}
int n = i * 5 + j * 3 + k / 3;
if(n==100) {
System.out.println("鸡翁:" + i + " 鸡母为:" + j + " 鸡雏为:" + k);
}
}
}
运行结果:
3.找出1000以内的质数
代码:
System.out.println("2 ");
for (int i = 3; i < 101; i++) {
for (int j = 2; j < i; j++) {
if (i%j == 0) {
break;
}else if(j == i-1) {
System.out.print(" " + i);
}
}
}
运行结果:
4.找出100以内的完数,完数是指该数字所有的真因数之和等于该数字;真因数是除了本身以外的因数,例如6的因数有1 2 3 6;真因数只有 1 2 3; 1+2+3=6 所以6是完数。
代码:
for (int i = 2; i < 100; i++) {
int sum = 0;// 将sum += j;中的 sum 清零重置
//查找因数
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i)
System.out.println(i);
}
运行结果:
5.从控制台输入一个数字,数字是几,就输出几行乘法表
代码:
Scanner scan = new Scanner(System.in);
System.out.println("请输入数字:");
int w=scan.nextInt();
//正序
for (int j = 1; j <= w; j++) {//乘法表行数
for (int j2 = 1; j2 <=j; j2++) {
System.out.print(j2 + "*" + j + "=" + j2 * j + " " );
}
System.out.println();
}
//倒序
for (int j = w; j > 0; j--) {
for (int j2 = 1; j2 < j+1; j2++) {
System.out.print(j2 + "*" + j + "=" + j2 * j + " " );
}
System.out.println();
}
运行结果:
6.不小于6的偶数,都可以分解成两个奇数的和
代码:
for (int num = 0; num < 18; num++) {
for (int i = 1; i <= num/2; i++) {
//保证 i + j = num;
int j = num - i;
//i和j都是奇数
if(i%2 != 0 && j%2 !=0) {
System.out.println(num + "=" + i + "+" + j);
}
}
}
运行结果:
7.求和:1/1! + 1/2! + 1/3! + … + 1/20!
代码:
double sum_0=1;
double sum_1=0;
for (int i = 1; i < 21; i++) {
sum_0 = sum_0 * i;
sum_1 = sum_1 + 1/sum_0;
}
System.out.println(sum_1);
运行结果:
8.按照以下格式输出:
* * * * * * * * * * * * * * *
代码:
int m = 2;
int n = 6;
for (int i = 1; i < 6; i++) {
for (int j = 1; j < n; j++) {
System.out.print(" ");
}
for (int j = 1; j < m; j++) {
System.out.print("* ");
}
System.out.println();
m++;n--;
}
运行结果: