c语言程序设计-程序控制结构
第3章 程序控制结构 程序的三种基本结构 顺序结构 程序的三种基本结构 循环结构 C语言的语句类型 主要内容: 说明性语句 表达式语句 控制语句 复合语句 说明性语句 对程序中使用的变量、数组、函数等操作对象进行定义、声明的描述语句 只起说明作用,不产生可执行的机器指令代码。 例如:int a,b; float function( int, int); 表达式语句 表达式后面加一个分号,构成表达式语句 x=3; y=y+5; x=a-b && c || d ; printf("x=%d, y=%d\n",x,y); sort(a,10); 控制语句 1.选择分支控制语句 if ( ) …else … switch ( ) { … } 2.循环控制语句 for ( ) … while ( ) … do … while ( ) 3.其他控制语句 break、continue、goto return 复合语句 用一对花括号“{}”括起来的若干条语句 花括号中可以是说明语句、表达式语句、控制语句,也可以是复合语句 例如: ⑴ if (a>b) { max=a; min=b; } ⑵ for(n=1; n<10 ;n++) { p = n + p; if( p >= 100 ) { printf(“%d\n”, p); break; } } 复合语句(续) 复合语句中如果有说明性语句,应该写在可执行语句的前面 3.1 顺序结构程序设计 3.4.1 顺序结构程序的一般算法描述 3.1.1 顺序结构程序设计举例 【例3.1】数据交换。从键盘输入a、b的值,输出交换以后的值。 思路:在计算机中交换变量a和b的值,不能只写下面两个赋值语句 a=b ; b=a ; 程序: main( ) { int a,b,c; printf("\ninput a, b: "); scanf("%d,%d",&a,&b); printf("\nbefore exchange:a=%d b=%d\n",a,b); c=a; a=b; b=c; printf("after exchange: a=%d b=%d\n",a,b); } 举例: 【例3.2】已知三条边a、b、c,求三角形面积。计算三角形面积的海伦公式: 程序如下: #include "math.h" main( ) { int a,b,c; float s,area ; scanf("%d, %d, %d",&a,&b,&c); s =(a+b+c)/2.0f ; area = sqrt(s*(s-a)*(s-b)*(s-c)) ; printf("area = %8.3f \n",area) ; } 3.2 选择结构程序设计 if语句 if语句的一般形式 if语句的嵌套 switch语句 switch语句的一般形式 break语句 选择结构程序设计举例 简单分支语句 语句一般格式 if (表达式) 语句 简单分支语句的算法: 例如: ⑴ if (x>0) m++; ⑵ if ( a>b ) { c=a; a=b; b=c; } 双重分支语句 语句一般格式 if (表达式) 语句1 else 语句2 功能: 计算表达式的值,如果它的值是一个非0值(逻辑真),就执行内嵌语句1,之后跳过内嵌语句2,执行后续语句;否则跳过内嵌语句1,执行内嵌语句2,之后执行后续语句。 双重分支语句的算法: 例如: ⑴ if (x>0) m++; else m--; ⑵ if ( ch>= 'a' && ch<= 'z' ) { ch=ch-32 ; printf(" %c\n",ch); } else printf(" %c\n",ch) ; 多重分支语句 语句一般格式 if (表达式1) 语句1 else if (表达式2) 语句2 …… else if (表达式m) 语句m else 语句 n 功能: 依次计算并判断表达式i,为非0时执行后面的语句,都为0时,执行语句n 无论执行完那个语句分支,都转到后续语句 多重分支语句的算法 流程图 多重分支语句的算法 N-S结构图 if语句的简单应用 【例3.3】输入一个字符,如果是大写字母,则将其转换为小写字母输出,否则直接输出。 程序: #include "stdio