2017-12-25 两个双重for循环的应用练习

没啥难度,主要熟悉break 和 continue的使用。

break可以用在switch中,而continue不能。

在while中,break直接结束while,而continue是终止此次循环,进行下次循环。

for也是,break直接结束for,而continue是终止此次循环,进行下次循环。


下面是两个小练习:

/*
 * 有5家衣服专卖店,没加最多购买3件。用户可以选择离开,可以购买衣服。
 * 最后打印总共买了几件衣服。
 */

package day1225;

import java.util.Scanner;

public class Clothes_Store {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int sum = 0;
		for(int i = 1;i<=5;i++){
			System.out.println("欢迎光临第"+i+"家专卖店");
			for(int j = 1;j<=3;j++){
				System.out.print("要离开吗(y/n)?");
				String choice = input.next();
				if(choice.equals("n")){
					System.out.println("买了一件衣服");
					sum++;
				}else{
					break;
				}
			}
			System.out.println("离店结账");
			System.out.println();
		}
		System.out.println("总共买了"+sum+"件衣服");
	}
}



银行操作系统,有输密码三次,输3次没对直接跳出程序;输对密码进入取钱系统,取得钱数必须是100的倍数,且一次不能取1000以上,取完后结束系统。

package day1225;

import java.util.Scanner;

public class homework2 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int key = 111111;
		for(int i = 0;i<3;i++){
			System.out.print("请输入密码:");
			int key_test = input.nextInt();
			if(key == key_test){
				System.out.print("请输入金额:");
				int money = input.nextInt();
				for(;;){
					if(money>0&&money<=1000&&money%100==0){
						System.out.println("您取了"+money+"元");
						System.out.println("交易完成,请取卡");
						break;
					}else{
						System.out.println("您输入的金额不合法,请继续输入:");
						money = input.nextInt();
					}
				}
			break;
			}else if(i == 2){
				System.out.println("密码错误,请取卡");
			}	
		}
	}
}







### 关于 C 语言双重 `for` 循环嵌套的练习题与示例 以下是几个典型的双重 `for` 循环嵌套的例子及其解释: #### 示例一:星号三角形 通过双重 `for` 循环构建一个由星号组成的直角三角形。 ```c #include <stdio.h> int main() { int rows; printf("请输入行数: "); scanf("%d", &rows); for (int i = 1; i <= rows; i++) { // 控制行数 for (int j = 1; j <= i; j++) { // 控制每行的列数 printf("*"); } printf("\n"); // 换行操作 } return 0; } ``` 上述代码中,外层循环控制行数,而内层循环负责打印每一行中的星号数量[^2]。 --- #### 示例二:乘法表 使用双重 `for` 循环生成九九乘法表。 ```c #include <stdio.h> int main() { for (int i = 1; i <= 9; i++) { // 表示行数 for (int j = 1; j <= i; j++) { // 列数随行数变化 printf("%d*%d=%-3d", j, i, i * j); } printf("\n"); // 每完成一行后换行 } return 0; } ``` 在这个例子中,外层循环定义了表格的行数,内层循环则用于计算并显示当前行的内容。 --- #### 示例三:数字倒金字塔 创建一个倒置的数字金字塔形状。 ```c #include <stdio.h> int main() { int height; printf("输入高度:"); scanf("%d", &height); for (int row = height; row >= 1; row--) { // 外层循环控制总行数 for (int space = 1; space <= height - row; space++) { // 打印前导空格 printf(" "); } for (int num = 1; num <= (2 * row - 1); num++) { // 打印数字部分 printf("%d", row); } printf("\n"); // 完成一行后的换行 } return 0; } ``` 这里展示了如何利用两个内部循环分别处理空白区域和实际数据输出。 --- #### 练习题目推荐 1. **矩阵转置** 编写一段程序接受用户输入的一个二维数组,并将其按照行列互换的方式重新排列展示出来。 2. **素数判定优化版** 使用双重 `for` 循环来检测某个范围内所有的质数。注意减少不必要的迭代次数以提高性能[^3]。 3. **斐波那契螺旋图** 结合图形绘制技术以及 Fibonacci 数列逻辑,在屏幕上呈现近似黄金比例增长模式下的图案效果。 4. **字符串匹配算法初探** 实现简单的子串查找功能——给定母串 S 和目标 T ,判断后者是否存在于前者之中;如果存在,则返回首次出现的位置索引值。 5. **杨辉三角构造器** 设计一款能够动态调整层数大小的应用软件,用来模拟 Pascal Triangle 的形成过程并通过屏幕直观展现最终成果形式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值