07-if与循环-案例超经典-C语言
2020-11-01 09:33
1166 查看
本讲将通过几个经典例子来讲解选择与循环嵌套。
选择与选择嵌套
if 与 if嵌套
判断变量a是否在3~10之间。
int a = 4; if (a > 3) { if (a < 10) { printf("满足条件"); } }
可以看到,上面程序也可以使用逻辑运算符来简化为:
int a = 4; if (a > 3 && a < 10) { printf("满足条件"); }
第二种写法明显更清晰,也更方便处理。所以在开发过程中,要学会合理运用逻辑运算来合并一些没必要的嵌套。
if 与 switch嵌套
用户输入是否是工作日(y/n)与星期几。如果是工作日,则星期一输出“中午吃牛肉面”,星期二输出“中午吃卤肉面”。
char isWorkingDay = 0; int dayOfWeek; printf("请输入是否是工作日(y/n), 与星期几:"); scanf("%c %d", &isWorkingDay, &dayOfWeek); if (isWorkingDay == 'y') { switch (dayOfWeek) { case 1: printf("中午吃牛肉面"); break; case 2: printf("中午吃卤肉面"); break; default: break; } }
选择与循环嵌套
对于选择与循环的嵌套结构,主要讲解for循环与if的嵌套。
if 与 for嵌套
输出2000~2100之间的闰年。
// 从2000循环到2100,挨着判断是否是闰年 for (int i = 2000; i <= 2100; i ++) { // 判断闰年:能被400整除或能被4且不能被100整除的年份 if ((i % 400 == 0) || (i % 4 == 0 && i % 100 != 0)) { printf("%d ", i); } }
循环与循环嵌套
循环嵌套主要讲解for循环的嵌套。
输出以下形状
**** **** ****
// 控制行数 for (int i = 0; i < 3; i ++) { // 控制列数 for (int j = 0; j < 4; j ++) { printf("*"); } // 每一行结束后换行 printf("\n"); }
输出以下形状
* ** *** ****
首先分析*与行号的关系:
行号 | *个数 |
0 | 1 |
1 | 2 |
2 | 3 |
3 | 4 |
// 控制有多少行 for (int i = 0; i < 4; i ++) { // 控制每一行都多少* for (int j = 0; j <= i; j ++) { printf("*"); } printf("\n"); }
输出九九乘法表
for (int i = 1; i <= 9; i ++) { for (int j = 1; j <= i; j ++) { printf("%d * %d = %d\t", j, i, i * j); } printf("\n"); }
输出以下形状
* ** *** ****
首先分析*与行号的关系:
行号 | *个数 | 空格数 |
0 | 1 | 3 |
1 | 2 | 2 |
2 | 3 | 1 |
3 | 4 | 0 |
空格数 = 总行数 - 1 - 行号
*数 = 行号 + 1
// 控制行数 for (int i = 0; i < 4; i ++) { // 控制每行的空格数 for (int j = 0; j < 4 - 1 - i; j ++) { printf(" "); } // 控制每行的*数 for (int j = 0; j <= i; j ++) { printf("*"); } printf("\n"); }
输出以下形状
1 2 3 4 5 6 7 8 9 0
分析:这道题同样需要找到行号、空格、数字之间的关系。同时可以看到,数字是从1开始,到0结束的,可以通过取余运算来达到这个效果。
// 定义变量number,用于输出连续数字 int number = 1; // 外层循环控制行数 for (int i = 0; i < 4; i ++) { // 控制每一行的空格数 for (int j = 0; j < 4 - 1 - i; j ++) { printf(" "); } 1d864 // 控制每一行输出的数字 for (int j = 0; j < i + 1; j ++) { // 因为最后一个数是0,而不是10,所以对10取余 printf("%d ", number % 10); // 每输出一个数,就++ number ++; } printf("\n"); }
《c语言简明教程》
IT入门 感谢关注 | 程序员题库→ 程序员用的单词表→ 练习地址:www.520mg.com/it |
????戳“阅读原文”,get涨薪技能!
相关文章推荐
- C语言二次系统学习3(分支循环、函数)
- Leetcode 463. 岛屿的周长(C语言)
- C语言学习Day16
- C语言学习Day16
- 回顾C++:访问权限控制之 公有、保护、私有继承用法详解与总结
- Leetcode 1207. 独一无二的出现次数(C语言)
- C语言学习Day14
- 《零基础看得懂的C语言入门教程 》——(九)C语言二维数组与循环嵌套
- Leetcode 3. 无重复字符的最长子串(C语言)
- Leetcode 1365. 有多少小于当前数字的数字(C语言)
- c语言全部知识大梳理
- 《零基础看得懂的C语言入门教程 》——(七)C语言的循环分分钟上手
- C/C++ Search Extension —— 一款可以快速在地址栏搜索 C/C++ 文档的浏览
- C语言学习Day08
- 2020十一届蓝桥杯B 第一场 C/C++
- C语言学习Day07
- C语言Day06
- 杨亦涛老师分享计算机C++基础教学
- LeetCode75 颜色分类 (三路快排C++实现与应用)
- 2. C++ continue