热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言编程入门之第六章C语言控制语句

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

    导读:本章带读者理解什么是控制语句,然后逐个讲解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
void main()
{
int a = 3;
int b = 5;

if(a {
printf("a }

if(a > b)
{
printf("a > b 成立\n");
}
else
{
printf("a > b 不成立\n");
}
}

  运行结果为:

       a        a > b 不成立

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

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

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

#include
void main()
{
int a = 3;
int b = 5;
int c = 7;
if(a {
printf("a }

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
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
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
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
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语句等自学都能掌握了。练习题如下:

求多个整数的和及平均值

等腰直角三角形

数字金字塔

九九乘法表

三天打鱼两天晒网

黑色星期五

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

 



推荐阅读
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
author-avatar
情之秋梦痕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有