for循环嵌套的烧脑例题

本文通过四个Java程序实例展示了for循环嵌套的应用,包括打印图形、模拟购物场景、计算班级成绩以及解决经典数学问题。通过这些例子,读者可以深入理解for循环在解决问题中的灵活性。

1.打印图形

package com.sxt;



public class ForDemo {
public static void main(String[] args) {
// 打印矩形
// 使用嵌套循环打印行列图形
// 嵌套循环中,外打行,内打列
/*for (int i = 1; i <= 5; i++) {
// 打印五个星星
for (int j = 1; j <= 20; j++) {
System.out.print("*");
}
// 每打印五个星就换行
System.out.println();
}*/
// 嵌套循环相当于生活中的钟表
// 小时
/*for (int k = 1; k <= 12; k++) {
// 分钟
for (int i = 1; i <= 60; i++) {
// 秒
for (int j = 1; j <= 60; j++) {
System.out.println("第"+k+"小时,第" + i + "分," + "第" + j + "秒");
}


}
}*/
// 找规律
// 平行四边形
/*for (int i = 1; i <= 3; i++) {
// 打空格
for(int k=1;k<=3-i;k++){
System.out.print(" ");
}
// 打印五个星星
for (int j = 1; j <= 5; j++) {
System.out.print("*");
}
// 每打印五个星就换行
System.out.println();
}*/
// 等腰三角形
/* for (int i = 1; i <= 3; i++) {
// 打空格
for(int k=1;k<=3-i;k++){
System.out.print(" ");
}
// 打印五个星星
for (int j = 1; j <= 2*i-1; j++) {
System.out.print("*");
}
// 每打印五个星就换行
System.out.println();
}*/
/*for (int i = 1; i <= 3; i++) {
// 打空格
for(int k=1;k<=3-i;k++){
System.out.print(" ");
}
// 打印五个星星
for (int j = 1; j <= 2*i-1; j++) {
if(j%2==0){
System.out.print(" ");
}else{
System.out.print("*");
}
}
// 每打印五个星就换行
System.out.println();
}*/
for (int i = 1; i <= 3; i++) {
// 打空格
for(int k=1;k<=3-i;k++){
System.out.print(" ");
}
// 打印五个星星
for (int j = 1; j <= 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 2; i >= 1; i--) {
// 打空格
for(int k=1;k<=3-i;k++){
System.out.print(" ");
}
// 打印五个星星
for (int j = 1; j <= 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}



}

}

2.去5家店买衣服,每家最多买3件,求在第几家店买几件衣服,共买多少衣服

package com.sxt;


import java.util.Scanner;


public class ForDemo2 {
public static void main(String[] args) {
// 5家 买3件 总共买几件

Scanner sc = new Scanner(System.in);
int sum = 0;

for (int i = 1; i <= 5; i++) {
System.out.println("请选择第" + i + "家买几件衣服(0不买):");
int n = sc.nextInt();
if (n > 3) {
System.out.println("购买衣服数量不合法");
break;
} else if (n == 0) {
continue;
} else {
for (int j = 1; j <= n; j++) {
System.out.println("第" + i + "家买了第" + j + "件衣服");
sum++;
}
}
}
System.out.println("一共买了" + sum + "件衣服");


}
}

3,3个班里有4名同学,求每个班的同学85分以上多少人以及平均分

package com.sxt;


import java.util.Scanner;


public class ForDemo3 {
public static void main(String[] args) {
// 三个班 4个人 每个班的平均数,85分以上的人数
// 循环班级
Scanner sc = new Scanner(System.in);
int k = 0;
for (int i = 1; i <= 3; i++) {
System.out.println("请输入"+i+"班的学生分数:");
double sum=0.0;
// 循环人数
for (int j = 1; j <= 4; j++) {
System.out.println("请输入"+j+"学生分数:");
double d = sc.nextDouble();
sum+=d;
if(d<85){
continue;
}
k++;
}
System.out.println("第"+i+"班的平均分是:"+sum/4);
}
System.out.println("85分以上的人数是:"+k);


}
}

4.百钱买百鸡问题

package com.sxt;


public class Test {
public static void main(String[] args) {
// 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
// 用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
/*
for (int x = 1; x <= 20; x++) {
for (int y = 1; y <= 33; y++) {
for (int z = 3; z <= 300; z += 3) {
if (x + y + z == 100 && x * 5 + y * 3 + z / 3 == 100) {
System.out.println("公鸡" + x + "只,母鸡" + y + "只,小鸡" + z
+ "只");
}
}
}
}*/
 
// 斐波那契 1 1 2 3 5 后面一位等于前两位的和
/*int n = 1;
int a = 0;// 前2位
int b = 0;// 前1位
for (int i = 1; i <= 30; i++) {
if (i <= 2) {
a = 1;
b = 1;
System.out.println(n);
} else {
n=a+b;
System.out.println(n);
a=b;
b=n;
}
}*/
//输出九九乘法表:
// 先出现嵌套循环 9*9
/*for(int i =1;i<=9;i++){
for(int j =1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}*/
// 嵌套循环中使用break
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
System.out.print(j);
if(j%2==0){
break;
}
}
System.out.println();
}
}
}

### 循环嵌套的概念 在C语言中,循环嵌套指的是在一个循环语句内部再包含另一个或多个循环语句。常见的循环语句有 `for` 循环、`while` 循环和 `do-while` 循环,它们可以相互嵌套使用。循环嵌套可以用来处理需要多重迭代的复杂问题,例如二维数组的遍历、打印特定图案等。 ### 循环嵌套的类型及示例 #### 1. `for` 循环嵌套 当外层 `for` 循环执行一次时,内层 `for` 循环会完整地执行其所有迭代次数。 ```c #include <stdio.h> int main() { int i, j; // 外层循环控制行数 for (i = 1; i <= 5; i++) { // 内层循环控制每行的列数 for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); } return 0; } ``` 上述代码中,外层 `for` 循环控制行数,内层 `for` 循环控制每行中星号 `*` 的数量。每次外层循环执行一次,内层循环会根据当前外层循环变量 `i` 的值执行相应次数,从而打印出一个直角三角形图案。 #### 2. `while` 循环嵌套 同样,外层 `while` 循环每执行一次,内层 `while` 循环会执行完其所有迭代。 ```c #include <stdio.h> int main() { int i = 1, j; // 外层 while 循环控制行数 while (i <= 5) { j = 1; // 内层 while 循环控制每行的列数 while (j <= i) { printf("*"); j++; } printf("\n"); i++; } return 0; } ``` 此代码与 `for` 循环嵌套示例实现的功能相同,只是使用了 `while` 循环来实现。外层 `while` 循环控制行数,内层 `while` 循环控制每行的星号数量。 #### 3. `do-while` 循环嵌套 `do-while` 循环嵌套的特点是,内层和外层循环体至少会执行一次。 ```c #include <stdio.h> int main() { int i = 1, j; // 外层 do-while 循环控制行数 do { j = 1; // 内层 do-while 循环控制每行的列数 do { printf("*"); j++; } while (j <= i); printf("\n"); i++; } while (i <= 5); return 0; } ``` 该代码同样实现了打印直角三角形图案的功能,使用 `do-while` 循环嵌套保证了内外层循环体至少执行一次。 #### 4. 不同类型循环混合嵌套 也可以将不同类型的循环进行嵌套使用。 ```c #include <stdio.h> int main() { int i = 1, j; // 外层 for 循环控制行数 for (i = 1; i <= 5; i++) { j = 1; // 内层 while 循环控制每行的列数 while (j <= i) { printf("*"); j++; } printf("\n"); } return 0; } ``` 这个示例中,外层使用 `for` 循环,内层使用 `while` 循环,同样能实现打印直角三角形的效果。 ### 复杂例题:乘法口诀表 使用 `for` 循环嵌套打印九九乘法口诀表。 ```c #include <stdio.h> int main() { int i, j; // 外层循环控制行数(被乘数) for (i = 1; i <= 9; i++) { // 内层循环控制列数(乘数) for (j = 1; j <= i; j++) { printf("%d*%d=%d\t", j, i, i * j); } printf("\n"); } return 0; } ``` 在这个代码中,外层 `for` 循环遍历被乘数 `i` 从 1 到 9,内层 `for` 循环遍历乘数 `j` 从 1 到当前的 `i`。每次内层循环会计算并打印出当前的乘法表达式及其结果,外层循环换行,最终输出完整的九九乘法口诀表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值