07-if与循环-案例超经典-C语言

本讲将通过几个经典例子来讲解选择与循环嵌套。

选择与选择嵌套

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");
}


输出以下形状

*
**
***
****

首先分析*与行号的关系:

行号*个数
01
12
23
34
// 控制有多少行
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");
}


输出以下形状

   *
  **
 ***
****

首先分析*与行号的关系:

行号*个数空格数
013
122
231
340

空格数 = 总行数 - 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语言简明教程》

01-C语言的过去与未来

02-Dev C++  安装及使用方法教程

03-C语言的第一个简单实例

04-关键字与标识符-C语言

05-数据类型与常量变量-C语言

06-C语言运算符

IT入门 感谢关注

程序员题库→

程序员用的单词表→

练习地址:www.520mg.com/it

????戳“阅读原文”,get涨薪技能!

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页