C++编程:循环嵌套与数字分析

需积分: 10 0 下载量 2 浏览量 更新于2024-08-26 收藏 26KB DOC 举报
"C++第三节课的笔记主要涵盖了循环嵌套的概念和应用,包括for和while循环的使用,以及在编程中处理数字和字符的技巧。笔记中提到了几个不同的编程练习,旨在帮助学习者深入理解循环结构和数字操作。" 在C++中,循环是一种控制程序流程的方式,用于重复执行一段代码,直到满足特定条件为止。本节笔记主要讨论了循环嵌套,即在一个循环体内部再包含另一个循环,这在处理二维数组、矩阵或其他需要多层遍历的结构时非常有用。 1. 第一个例子展示了简单的for循环嵌套,用于打印矩形的星号(*)图案。外层循环控制行数,内层循环控制每行中的星号数量。这个程序输入矩形的长和宽,然后打印出相应形状。 ```cpp for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cout << "@"; } cout << endl; } ``` 2. 第二个示例使用while循环实现了一个倒序打印数字的程序。这里的循环嵌套是隐式的,外层while循环负责减少每一行的字符数,而内层循环则负责打印字符。 ```cpp while(m != 0) { for(n = i; n > 0; n--) { printf("%c", a); } printf("\n"); m--; } ``` 3. 接下来的练习是关于数字拆解和统计数字1出现的次数。第一个实例通过while循环将整数拆分为单个数字并求和。这个方法可以用于计算数字的各位之和。 ```cpp int sum = 0; while(n) { sum += n % 10; n /= 10; } ``` 4. 第二个数字1计数的练习中,使用了两层嵌套for循环来检查1到n的每个数,然后用内层循环拆分并统计每个数中1的出现次数。这可以通过检查每次循环的余数是否等于1来实现。 ```cpp for(int i = 1; i <= n; i++) { int n = i; while(n != 0) { if(n % 10 == 1) sum++; n /= 10; } } ``` 5. 最后,笔记提到一个题目是寻找所有小于等于n且与7无关的正整数之和。这里的“与7无关”意味着数字既不是7的倍数,也不包含数字7。这个问题可以通过遍历所有小于n的正整数,逐一检查它们是否满足条件,然后累加符合条件的数。 ```cpp for(int i = 1; i <= n; i++) { // 检查是否为7的倍数或包含数字7 if(i % 7 != 0 && !containsDigit(i, 7)) { sum += i; } } bool containsDigit(int num, int digit) { while(num != 0) { if(num % 10 == digit) return true; num /= 10; } return false; } ``` 这些例子和练习展示了C++中循环结构的强大功能和灵活性,以及如何利用它们解决实际问题。通过深入理解和熟练掌握循环嵌套,开发者可以编写更复杂、高效的代码。