本讲将通过几个经典例子来讲解选择与循环嵌套。
选择与选择嵌套
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(
       " ");
      
     
- 
     
      
     
     
      
          }
      
     
- 
     
      
     
     
         
       // 控制每一行输出的数字
      
     
- 
     
      
     
     
      
          
       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涨薪技能!
转载:https://blog.csdn.net/bigzql/article/details/109474862
查看评论
					 
					