y)return x; else return y; } main() { float a,b,c,d; print">

第 4 章 控制结构

  • 格式:doc
  • 大小:57.50 KB
  • 文档页数:9

第四章 控制结构 #include "stdio.h" float max(float x,float y)

{ if(x>y)return x; else return y; }

main() { float a,b,c,d; printf("请输入a,b,c\n"); scanf("%f,%f,%f",&a,&b,&c); d=max(max(a,b),c);

printf("max=%f\n",d); } 就是用C中的三种基本结构编制程序。

4.1 C语言的概述 1、 概念: 在C语言中,构成一个完整的C程序是由若个源文件组成,而一个文件中是若个函数组成,一个函数中又是语句组成,所以,C程序还是由语句组成。 2、 语句的种类 语句按在程序中出现的位置分为: 数据描述,数据的说明部分(非执行型语句) 数据操作,对数据的计算处理(执行型语句) 按语句的功能分为: (1)、控制语句 有9种语句,主要用于控制程序的选择、循环及程序的执行路线等。 (2)、函数语句 把函数的调用加一个分号。 printf( ); scanf( ) (3)、表达式语句 一个表达式之后加一个分号。 a++(表达式) a++ ;(语句) (4)、复合语句 用一对{ }括起来的语句 (5)、空语句 就是一个分号。 4.2 数据输入和输出 1、 输入输出的含义 输入:从外部设备将数据传人机内 输出:从机内将数据传出 2、 输入输出的实现 在C语言中本身没有输入和输出语句,但有输入和输出函数,而输入和输出函数的调用加一个分号就是语句。 3、 输入输出函数使用的要求 因为是函数,所以是事先编制好的一段程序,放在一个(头.h)文件中,所以在使用有关函数时必须加相应的头文件,而printf 和 scanf 经常使用,对这两个函数的使用可以不用头文件(在TC中)。 一、数据的输出 用于数据的输出函数有三个函数 1、 输出一个字符 格式:putchar(c) 其中: C 是一个字符表达式 功能:将C的内容在屏上输出 putchar(„A‟) putchar(„A‟+32) putchar(„\n‟)

2、 格式输出 格式:printf(控制符,输出项目表) 功能:将项目的内容输出在屏上 其中:  项目,可以是常量、变量、表达式、另一个函数的调用。 printf(“x=%d,%c,%f,%x\n”,x,‟a‟,pow(2,3),x+10);  控制符,是由一对双引号括起来的一个字符串,而字符串中的内容有: 一般字符,用于原样输出 转义符,由\开始的,输出转义后的结果 描述符,是以%开始的一些字母,主要用来对数据的输出格式描述,字母及功能在P55 表4.1中 说明:输出时可以带宽度,对应实型还可以指定小数后,字符可以指定输出几位。 %5d %-5d %8.2f %-8.2 %9.3s %-9.3s 输出字符串中3个字符占9位 当指定的位数 小于实际位数,按实际位数输出 大于实际位数,无-号 右靠齐左填空 有-号 左靠齐右填空 二、 数据输入 1、 一个字符的输入 格式:getchar( ) 功能:执行后暂停,等待从键盘输入一个字符,并回车 用法:getchar( ); 并不求得到字符,而起到一个暂停的作用; C=getchar( ); 从键盘得到一个字符赋给c

2、 格式输入 格式:scanf(控制符,输入项目地址表) 功能:执行以后暂停,等待用户从键盘输入数据 其中:  输入项目只能是变量(相当于赋值) scanf(“%d,%d:%f”,&a,&b,&c);  控制符,是用一对双引号组成的字符串,内容有:  一般字符,决定键盘输入数据之间的分隔符,若无分隔符,数据之间用空格分开(但%c例外)。 scanf(“%d,%d:%f”,&a,&b,&c); 三个数据之间用,和: scanf(“%d%d%f”,&a,&b,&c); 三个数据之间用空格  是以%开始的字母,组成格式描述符,对输入数据格式控制。 说明: (1)、输入数据之间的分隔符取决于描述符之间的符号; (2)、输入数据的个数可以大于等于项目的个数,不能少于; (3)、输入数据也可以带位数,但%f不能带精度 scanf(“%3d%4d6%f”,&a,&b,&c); 1234567788.34 a b c (4)、%c不需要留空格 scanf(“%c%c%c”,&a,&b,&c); ABC A B C不对。

4.3 顺序结构 是最简单的一种结构,自顶向下逐条语句去执行,没有专门的控制语句,把要解决问题所需语句按顺序输入即可。 4.4 选择结构 选择又名分支结构,是根据条件决定下一步的执行路线。它是三种结构之一。 构成条件的可以说是任意型表达式但用的最多的还是“关系或逻辑表达式”,专门控制选择结构的有2个语句。 如何构成条件表达式,用关系运算符或逻辑运算符和操作数构成。 一、 关系运算和关系表达式 它是逻辑运算中较简单的一种 由关系运算符和操作数组成关系表达式 1、 关系运算符 < <= > >= == != 注意:  运算符的级别;  运算符的功能。  与算术运算符的优先顺序

2、 关系表达式 关系表达式实质是一种比较运算,运算的结果 成立为真用1表示 不成立为假用0表示 所以说,关系运算的结果不是1就是0

二、 逻辑运算和逻辑表达式 逻辑运算它可以表示数学中较复杂的运算(有些数学运算不能用关系表示)。 它实质是将关系运算用逻辑运算符连接起来的式子。 1、 逻辑运算符 !单目 逻辑非 将操作数的值否定 原来非0 否定为0,原来为0,否定为1 && 双目 逻辑与 两边同时非0,结果为1,否则三种均为0 | | 双目 逻辑或 两边同时为0,结果为0,否则三种均为1 注意: 每一个的功能(真值表); 优先级别(图); 2、 逻辑表达式 逻辑表达式对操作数判断的标准是否非0还是为0,而运算的结果不是1,就是0。 注意: 对于&&自左向右一旦有一个操作数的值为0,右边的操作数就不运算(结果为0) 对于| |自左向右一旦有一个操作数的值非0,右边的操作数就不运算(结果为1)

设 int a,b,c a-3&&++b&&++c a--||++b||++c 两表达式执行完后,表达式的值及a,b,c的值

以上了解了构成条件的表达式,那么选择结构的语句有两个

三、 if 语句 1、 基本格式 if (e)s1 else s2 其中: e是够成选择的条件,可以用任意型表达式表示 s1和s2分别是语句,若是多个语句就用{ } 功能: 当e的值非0时就执行s1中的语句,然后离开if语句 当e的值为0时就执行s2中的语句,然后离开if语句 即二者选一。

2、 其它格式 (1)、if(e)s1 s2 没有else 当条件成立时执行s1和s2,当条件不成立时只执行s2 (2)、if(e1)s1 else if(e2)s2 else if(e3)s3 else if(e4)s4 …… else sn+1 3、 if的嵌套 以if 打头的,可以构成多路分支 格式见书。

四、条件运算 格式:e?e1:e2 其中:e,e1,e2都是任意表达式,e作为条件 功能:判断e的值是否为非0,若非0将e1 的值作为整个运算的值; 若为0将e2 的值作为整个运算的值。 注意:该运算在根据条件决定给变量赋值时可以代替一段程序。

五、 switch语句 该语句专门解决多路分支的问题. 格式: switch (e) { case e1:s1 case e2:s2 …….. case en:sn default :sn+1 } 其中:e只能是整型表达式或字符型表达式,若是实型自动取整 ei(I=1,2…n)是常量表达式 每个s语句若是多个,可以用{ } 功能:先求e的值,然后用e的值找与ei是否相等,若相等执行si,si+1,si+2,…sn+1语句,若一个都不等,执行只执行sn+1语句 #include "stdio.h" void main() { int i,a=3; scanf("%d",&i); switch(i) { case 1:a++; case 2:a++; case 3:a++; default :printf("不在1-3之间\n"); } printf("i=%d a=%d\n",i,a); } 注意:  任意两个常量表达式的值不能相同  任意一个case 之后的s语句可以省去  每个case 的顺序很重要  为了达到执行某一个case以后马上跳出switch结构,在每个s语句之后加一个break语句。  若加了break后,每个case 的顺序就随意了。 #include "stdio.h" void main() { int i,a=3; scanf("%d",&i); switch(i/10) { case 1:; case 2:; case 3:; case 4:; case 5:printf("不及格\n");break; case 6:printf("及格\n");break; case 7:printf("中\n");break; case 8:printf("良好\n");break; default :printf("优秀\n"); }

} 4.5 循环结构 概念 1、 循环的含义:根据条件反复执行一段程序 2、 循环的分类  按结构分: “当型” 先条件后计算处理 while “直到型” 先计算处理后条件 do while  按循环次数分: 有限次和无限次 3、 控制循环的语句种类 专门用于控制循环的语句有三种,除此之外,还有两种形式也可以构成循环。

一、 while语句 专门解决当型结构的语句 格式: while(e)s 其中:e是任意型表达式 s是语句,若是多个语句用{ },构成循环体 功能:先对e求值然后判断e的值是否非0,若是,就去执行循环体中语句,执行完后又去求e的值;若为0,循环结束。 特点:是循环体中的语句有可能一次都不执行。