设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5048|回复: 0

[C] 详解c语言第二课之流程控制

[复制链接]

6

主题

0

好友

272

积分

中级会员

Rank: 3Rank: 3

性别
保密

最佳新人 活跃会员 热心会员 灌水之王 论坛元老

发表于 2012-6-12 10:37:47 |显示全部楼层
本帖最后由 sky_yx 于 2015-12-30 14:18 编辑

今天讲流程控制,在讲之前,先得学一种新的数据类型bool型,bool型也很特殊,它的值只有两个,true(真)和false(假),怎么得到bool型的数据呢,很简单,想想小学的判断对错的题就知道了
,1<2是对还是错?答案是对,它得到的值就是true,1>2呢,它就错了,就是false,那这个1<2、1>2咱们就叫他表达式,不只是1<2、1>2这些,1+2、3-4、a*b、c/d、e=f等等等等这些,只要我们列出来一个像数学上的算式一样的东西就叫表达式,so easy吧!
了解了bool类型和表达式咱们就来看一下最简单的流程控制的语句是什么样子的:
  • if(表达式)语句;        // 如果这个表达式的结果是true就执行语句
  • // 如果是false就直接执行后面的

复制代码

if就是如果的意思,如果是true的呢,就执行,如果是false就跳过!(//在c语言中起注释的作用,在程序中不起任何作用,只是在代码中做说明的作用,//后面的一行内容都作为注释的内容)了解了流程控制语句来扩充咱们的代码:
  • #include <stdio.h>
  • int main(void)
  • {
  •         if(1<2) printf("HelloTrue!\n"); // 这里的两个数你可以随便填
  •         return 0;
  • }

复制代码

这样咱们的程序就在比较if里的两个数,如果结果是true,它才给咱们问好,如果是false它就什么都不说了!如果我们想要假的也让它告诉我们该怎么办呢?还有更强大的流程控制语句:
  • if(表达式)语句; // 如果是表达式的结果是true就执行这条语句
  • else 语句; // 如果表达式的结果是false就执行这条语句
  • // 执行完之后当然要继续执行后面的语言

复制代码

我们又可以扩充我们的代码了:
  • #include <stdio.h>
  • int main(void)
  • {
  •         if(1>2) printf("HelloTrue!\n"); // 两个数你依然可以随便填
  •         else printf("HelloFalse!\n");
  •         return 0;
  • }

复制代码

这段代码我想大家都明白,不用再解释了吧!但是新的问题又来了,我们不能每次比较两个数都要修改源代码重新编译吧,我们要在程序里输入两个数来让程序去比较,但是要输入这两个数,就得有东西装下这两个数,这就涉及到变量的声明,还要有一个函数来得到我们输入的这个数并且存放到我们声明的变量里面,先来看一下扩充后的代码:
  • #include <stdio.h>
  • int main(void)
  • {
  •         int a, b;
  •         printf("Please input two numbers:\n");
  •         scanf("%d,%d", &a, &b);
  •         if(a>b) printf("HelloTrue!\n"); // 用大于号还是小于号你可以自己决定了
  •         else printf("HelloFalse!\n");
  •         return 0;
  • }

复制代码

咱们用int a, b;声明了两个变量,a、b就好像两个抽屉,这两个抽屉是属于系统的,咱们就是借来用用,这句话就是说咱们跟系统借了两个抽屉存放两个整数,并且咱们管这两个抽屉叫a和b,当然系统不是这么叫它们的,系统有一个大柜子,上面都是小抽屉,就跟药店放中药的那样的似的,系统给他们都编上了号,但是咱们要用编号的话忒麻烦了,因为系统的抽屉忒多了,如果咱们用编号的话,要是万一把编号给忘记了,咱们存的数不就找不到了吗,所以咱们给它们起了名字,但是咱们要找这存放的东西的时候,跟系统说它的名字系统又不知道,因为这个名字是咱们起的啊,所以要想找系统取出咱们的东西还得告诉系统咱们的抽屉编号是多少,就给咱们起的名字前面加一个&就得到这个名字的编号了,这个&我就给它起了个外号叫取编号符(好吧,我承认起外号不好,误导群众,实际上它的大名叫做取地址符)。
声明完变量以后,我们用printf告诉用户请输入两个数,然后我们用scanf函数(这个函数也写在stdio.h文件里了,更专业的说法应该是在stdio.h里面声明了,变量需要声明,函数同样需要声明)将这两个数交给操作系统,并且让操作系统放在了&a和&b这两个地址里,在函数里,如果有多个参数的话,需要用逗号隔开,也就是说scanf函数获得了3个参数,"%d,%d"、&a和&b,scanf这个函数比较特殊(printf也一样),一般函数只能接受定义好的几个参数,多了或者少了都会报错,比如sin函数,你只能用sin(x)给它一个参数,如果要输入sin(x,y)那么程序就报错了,但是printf函数和scanf函数参数的个数是由第一个参数里面的%决定的,它们第一个参数里面有几个%号,第一个参数的后面就得跟上几个参数,printf和scanf函数的学名叫做格式化输出(输入)函数,以第一个参数那样的格式格式化,格式化是干什么,格式化就是把后面的参数按照前面%的顺序一个一个的按着%后面的说明符告诉它类型去输出或输入,拿%d来说,d就是说明符,它说明后面的参数要以十进制整数的形式把它给输出或输入(要想了解更多的说明符及其作用,请直接百度printf或scanf),需要注意的是,printf是将第一个参数里的%和%后面的说明符替换成后面的参数输出,同样scanf要按照第一个参数的格式输入,然后将替换%和%后面的说明符的字符提取出来,比如这个"%d,%d",你必须用,将输入的两个数隔开,程序会将,左边的数给a,右边的数给b,然后以Enter键结束你的输入,才能得到想要的结果,否则可能会得不到想要的结果。如果你掌握了printf和scanf函数,那么恭喜你,这是c语言中两个最难理解的函数,你理解了它们以后,其他的函数就都不在话下了!
讲完一个大难题,再说点简单的,一般我们看到的if else语句并不是这样的,因为一般大的程序里if和else语句后面跟的都不是一条代码,而是一个代码段,所以我们一般将代码写成这样的形式:
  • #include <stdio.h>
  • int main(void)
  • {
  •         int a, b;
  •         printf("Please input two numbers:\n");
  •         scanf("%d,%d", &a, &b);
  •         if(a>b)
  •         {
  •                 printf("HelloTrue!\n"); // 用大于号还是小于号你可以自己决定了
  •         }
  •         else
  •         {
  •                 printf("HelloFalse!\n");
  •         }
  •         return 0;
  • }

复制代码

跟main函数一样,if else下面的代码段要用{}给括起来,它的意思就是说{}里的内容都属于前面代码的一部分,就像main的{}里面的语句都属于main一样,但是这样的话要注意的有两点:
        一、main函数的{}不能省略,最简单的c源码如果写成main()是不能编译通过的。
        二、if else后面不是没有用;结束,而是还没有写完,它的;在{}里面。


您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-3-29 07:20 , Processed in 0.130336 second(s), 28 queries .

回顶部