导读:本章带读者理解什么是控制语句,然后逐个讲解C语言常用的控制语句,含有控制语句的代码量多起来后就要注意写代码的风格了,本章末节都是练习题,大量的练习才能掌握好控制语句的使用。

6.1 什么是控制语句  

翻回第一章,当时为了讲解计算机程序,举了一个打酱油的例子:

第一种做法:首先要准备好100块钱,然后出门要穿好衣服鞋袜,出门到便利店,拿到酱油付完钱,店家找钱,返回家中。

可以用更加精细的描述这个行为:

准备100块钱,或许要翻箱倒柜,直到找到100块钱才可以出门,这段时间发生的事情可以用如下语句表达:

当(还没找到100块钱的时候 == false)
{
继续找钱;
   如果(找到钱了 == true)
   {
     出门;
   }

}

  在以上语句中,当(......),如果(......),这类的控制行为用到计算机程序上就是控制语句了,因为C语言是外国人发明的,所以“当(.......)”转换成程序就是“while(......)”,“如果(......)”转换成程序就是“if(......)”。

  继续打酱油,到店里找到酱油后,店家要找钱,酱油就算30块钱好了,店家就要找还70块钱,找钱的方法为右手从钱柜里面拿钱到左手,直到左手的钱够70块钱了就结束继续拿钱,如下:

对于(开始左手没有钱; 如果左手钱够70块钱了就结束; 右手继续拿钱给左手)
{
  这段时间可以做想做的别的事;
}

 在C语言中,以上在控制语句中就为for(表达式1;表达式2;表达式3)。

 注意:每个表达式用分号;隔开。

 大致这么理解控制语句就行了,下一节就把这些控制语句用到代码上编译执行看结果。 

6.2 条件判断语句

6.2.1 条件判断语句if

如果......在英文中为:if......。

如果......那么......在英文中为:if......else...... 。

这个就是基本的条件判断语句。代码中是这么体现的:

#include <stdio.h>

void main()
{
int a = 3;
int b = 5; if(a < b)
{
printf("a < b 成立\n");
} if(a > b)
{
printf("a > b 成立\n");
}
else
{
printf("a > b 不成立\n");
}
}

  运行结果为:

a < b 成立
       a > b 不成立

   第一个条件控制语句中,只是判断 a 是否小于 b,如果成立就printf一段话,如果不成立继续往下执行。

第二个条件控制语句,判断 a 是否大于 b,如果成立 printf 一段话,如果不成立 printf 另一段话。

    if和if......else...... 可以进行嵌套,如下:

#include <stdio.h>

void main()
{
int a = 3;
int b = 5;
int c = 7; if(a < b)
{
printf("a < b 成立\n");
} if(a > b)
{
printf("a > b 成立\n");
}
else
{
printf("a > b 不成立\n");
if(a > c)
{
printf("a > c 成立\n");
}
else
{
printf("a > c 不成立\n");
}
}
}

6.2.2 条件判断语句switch

switch语句与if语句的功能一样,它的作用在于更加清晰明了,适合条件判断多的情形下使用,如下:

#include <stdio.h>

void main()
{
int a; printf("请输入要查询的数字:");
scanf("%d", &a); switch(a)
{
case 1:
printf("1 : 一心一意学程序 \n");
break; case 2:
printf("2 : 两全其美真棒棒 \n");
break; case 3:
printf("3 : 三心二意很不好 \n");
break; default:
printf("您输入的数字还未加入到系统库,请重新输入 \n");
break;
}
}

  switch做的工作,就是判断传入的数值,当输入对应数值为case后面的数值的时候,执行相应语句,再执行break结束,如果没有加break语句,就会继续往下执行,读者可以除去后编译看看效果。当输入的数值没有对应的case处理,就会默认执行default里面的操作。

  一般淘宝、京东、10086、微信公众号等等都有机器人客服和人工客服,比如让客户发送1,就输出一段客户想要知道的内容,发送2,就输出另外一段,如果掌握了条件控制语句,那么恭喜你,可以做简单的机器人客服程序了,赶紧自己动手试试吧。

6.3 循环结构

  人生,就是一个大循环 你的起点,可能是他的终点。

通俗点说,人每天困了睡觉,肚子饿了吃饭,尿急了上厕所。实操一下,比如小明每隔两秒钟就要尿尿,怎么用代码实现,结合之前学习,会写出以下代码:

#include <stdio.h>

void main()
{
printf("你好,我是小明!\n"); sleep(2);
printf("尿尿 \n");
sleep(2);
printf("尿尿 \n");
sleep(2);
printf("尿尿 \n");
sleep(2);
printf("尿尿 \n");
}

  注:sleep是系统延时函数,里面传的数值就是让程序等待的秒数。 

  以上代码,只可以“尿尿”四次,那么小明要尿尿一百次呢,要一千次呢,要无限次呢?怎么做。

  这时候就要用到C语言中的循环语句了。

6.3.1 循环结构while

  小明每隔两秒"尿尿"十次,代码如下:

  

#include <stdio.h>

void main()
{
int count = 0;
printf("你好,我是小明!\n"); while(1)
{
sleep(2);
printf("尿尿第%d次\n", count); count++; if(count == 10)
{
printf("尿完了 \n");
break;
}
}
printf("下次再战\n");
}

  以上代码中,while()括号里面的值传的是bool值,因为1永远为真,所以会无限执行,如果要验证是否无限执行,可以把代码中的“break”除去。

  在代码中的if语句里,当count等于某个数的时候执行break,就能够跳出循环了,这个数就是设定的“尿尿”次数了。

6.3.2 循环结构for

  总是说“尿尿”似乎不太雅,改为“吃饭”吧。以下,为for语句的例子:

#include <stdio.h>

void main()
{
int count = 0;
printf("你好,我是小明!\n"); for(count = 0; count < 10; count++)
{
sleep(2);
printf("吃饭第%d次\n", count);
}
printf("下次再战\n");
}

  for语句中,有两个分号“;”,第一个分号前写的是初始化值,让count等于0,第二个分号写的是判断值,判断count是否小于10,如果小于10就继续循环,第二个分号后面就是执行语句,count自增1。编译执行后发现,执行10次就跳出循环了。

  基本上会以上控制语句就够用很多了。只有大量的练习才能更好的掌握这几种语句,后续比如coutinue,goto语句等自学都能掌握了。练习题如下:

求多个整数的和及平均值

等腰直角三角形

数字金字塔

九九乘法表

三天打鱼两天晒网

黑色星期五

  如果练习有疑问可以在评论区留言。本章结束。

C语言编程入门之--第六章C语言控制语句的更多相关文章

  1. C语言编程入门之--第四章C语言基本数据类型

      导读:C语言程序中经常涉及一些数学计算,所以要熟悉其基本的数据类型.数据类型学习起来比较枯燥,不过结合之前的内存概念,以及本节的字节概念,相信数据类型也就不难理解了.本章从二进制的基本概念开始,然 ...

  2. C语言编程入门之--第五章C语言基本运算和表达式-part2

    5.1.4 再来一个C库函数getchar吸收回车键 回车键也是一个字符,在使用scanf的时候,输入完毕要按下回车键,这时候回车键也会被输入到stdin流中,会搞乱我们的程序. 注意:stdin是输 ...

  3. C语言编程入门之--第五章C语言基本运算和表达式-part1

    导读:程序要完成高级功能,首先要能够做到基本的加减乘除.本章从程序中变量的概念开始,结合之前学的输出函数和新介绍的输入函数制作简单人机交互程序,然后讲解最基础的加减法运算,自制简单计算器程序练手. 5 ...

  4. C语言编程入门之--第五章C语言基本运算和表达式-part3

    5.3  挑几个运算符来讲 常用的运算符除了加减乘除(+-*/)外,还有如下: 注意:以下运算符之间用逗号隔开,C语言中也有逗号运算符,这里不讲逗号运算符. 1. 赋值运算符 =,+=,*= 2. 一 ...

  5. C语言编程入门之--第五章C语言基本运算和表达式-part4

    5.3.5 和二进制极为密切的运算符 本小节的运算符需要借助二进制概念来理解. 二进制数据中,比如一个字节的数据,它的十进制为228,二进制就为11100100,如图5.11, 注意:如果不懂怎么转换 ...

  6. C语言编程入门之--第三章编写第一个C语言程序

    第三章 编写第一个C语言程序 导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上了计算机),就是往屏幕输出“hello world”,本章也不例外. 1.1 Hello,World! 这一 ...

  7. C#入门经典 第六章 委托

    C#入门经典 第六章 6.6 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字. 委托的声明指定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量. 接着 ...

  8. “全栈2019”Java第二十六章:流程控制语句中循环语句do-while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. C语言编程入门之--第一章初识程序

    第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...

随机推荐

  1. ugui 自定义字体

    Unity/UI —— 使用字符图片自定义字体(Custom Font) ---[佳] https://blog.csdn.net/qq_28849871/article/details/777190 ...

  2. POJ-2299-Ultra-QuickSort(单点更新 + 区间查询+离散化)

    In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a seque ...

  3. The Triangle (简单动态规划)

    7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triangle. Write a program that calc ...

  4. JVM学习第三天(JVM的执行子系统)之类加载机制补充

    昨晚没看完,今天继续 系统的类加载器 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间.这句话可以表达得更通俗一些: ...

  5. 用Java爬虫爬取凤凰财经提供的沪深A股所有股票代号名称

    要爬取的凤凰财经网址:http://app.finance.ifeng.com/list/stock.php?t=hs 本作主要采用的技术是jsoup,相关介绍网页:https://www.jians ...

  6. Mockito在JUnit测试中的使用

    Mockito是一种用于替代在测试中难以实现的成员,从而让testcase能顺利覆盖到目标代码的手段.下面例子将展示Mockito的使用. 完整代码下载:https://files.cnblogs.c ...

  7. 干货:不同场景容器内获取客户端源IP的方法

    摘要:客户端和容器服务器之间可能存在多种不同形式的代理服务器,那容器中如何获取到客户端真实的源ip呢? k8s已经成为当今容器化的标准,人们在享受容器带来的高效与便利的同时,也遇到一些烦恼:客户端和容 ...

  8. C# 读取 ttf字体文件里的 Unicode

    因为爬虫要解析 &#x880cc这种字体编码的值,下载到一个ttf文件,用百度字体编辑器 打开,可以看到每个字符对应的Unicode (数字下方 $23.$2A...这些), 我需要拿到这些映 ...

  9. yum安装软件包提示Error Downloading Packages解决方法

    在执行yum upgrade时报错 解决方法: 方法一: 1.清理本地yum缓存 执行:yum clean all 2.查看软件包列表 执行:yum list 注意:如果查询不到软件包列表,查看yum ...

  10. 吴恩达《深度学习》-第二门课 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)-第一周:深度学习的实践层面 (Practical aspects of Deep Learning) -课程笔记

    第一周:深度学习的实践层面 (Practical aspects of Deep Learning) 1.1 训练,验证,测试集(Train / Dev / Test sets) 创建新应用的过程中, ...