《c语言程序设计_c程序流程设计》由会员分享,可在线阅读,更多相关《c语言程序设计_c程序流程设计(43页珍藏版)》请在金锄头文库上搜索。
1、第四章 C程序流程设计C语句概述程序的三种基本结构 选择型程序设计循环型程序设计辅助控制语句4.1 C语句概述 C语句:以“;”作分隔符,编译后产生机器指令. C语句分类 表达式语句:表达式加分号构成。 函数调用语句:由一个函数调用加分号构成。空语句: ; 程序控制语句(9种):if( )else switch for( ) while( ) dowhile( ) continue break goto return分支循环辅助控制如 total=total+limit; a=3;func( ); printf(“Hello,world!n”);用 括起来的一组语句一般形式: 数据说明部分;执
2、行语句部分; 说明: “”后不加分号 语法上和单一语句相同 复合语句可嵌套复合语句:4.2 程序的三种基本结构 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序叫 优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 顺序结构ABA B流程图N-S图PAB真假PBA真假kA1A2AiAnk=k2k=k1k=kn k=kil二分支选择结构l多分支选择结构 选择结构l当型循环结构l直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1.An可以是一个简单语句,也可以 是一个基本结构 循
3、环结构 if语句(条件选择语句) if语句的三种形式形式一: 格式:if (expression) statement执行过程:4.3 选择型程序设计exprstatement非0=0例:if (xy)printf(“%d”, x);exprstatement1statement2非0=0形式二: 格式: if(expression)statement1else statement2 执行过程:例:if (xy) max=x;else max=y;形式三: 格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 )
4、 statement3. else statementn expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0 执行过程: 例:if (salary1000) index=0.4; else if (salary800) index=0.3;else if (salary600) index=0.2;else if (salary400) index=0.1;else index=0; 如:if(a=bif(3) printf(“OK”);if(a) printf(“%d”,a);uif后面的表达式类型任意 u语句可以是
5、复合语句 u if(x) if(x!=0)if(!x) if(x=0)例 考虑下面程序的输出结果: #include main() int x,y;scanf(“%d,%d”,if(xy)x=y; y=x;elsex+; y+;printf(“%d,%dn”,x,y); Compile Error!说明:if (expr1)if (expr2) statement1else statement2 elseif(expr3) statement3else statement4内嵌if内嵌ifif (expr1)if (expr2) statement1else statement2内嵌ifif
6、(expr1)if (expr2) statement1 elsestatement3内嵌ifif (expr1)statement1 elseif(expr3) statement3else statement4内嵌ifif语句嵌套#include main() int x,y;printf(“Enter integer x,y:“);scanf(“%d,%d“,if(x!=y)if(xy) printf(“XYn“);else printf(“XYEnter integer x,y:12,12X=Y例 输入两数并判断其大小关系if else 配对原则:缺省 时,else总是和它上面离它最近
7、 的未配对的if配对if() if() if() else.else. else.修改: if (a=b) if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);实现if else 正确配对方法:加 实现if else 正确配对方法例: if (a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);v一般形式:switch( 表达式) case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组 ; v执行过程:switch语句(开关分支语句)
8、v: lE1,E2,En是常量表达式(数据类型可以是整型、 字符型和枚举型),且值必须互不相同 l语句标号作用,必须用break跳出 lcase后可包含多个可执行语句,且不必加 lswitch可嵌套 l多个case可共用一组执行语句 如: case A:case B:case C: printf(“score60n”);break;说明:例 switch(score) case 5: printf(“Very good!”);case 4: printf(“Good!”);case 3: printf(“Pass!”);case 2: printf(“Fail!”);default : pri
9、ntf(“data error!”);运行结果:score为5时,输出:Very good! Good! Pass! Fail! data error!例子(1)#include main() int c;printf(“Enter m or n or h or other:“);c=getchar();switch(c) case m: printf(“nGood morning!n“);break;case n: printf(“nGood night!n“); break;case h: printf(“nHello!n“); break;default : printf(“n?n“);
10、 break; 例子(2) 根据输入字母输出字符串概述 C语言可实现循环的语句: while 语句 do while 语句 for 语句4.4 循环型程序设计v一般形式:while(表达式) 循环体语句; v执行流程:expr循环体假(0)真(非0)whilewhile语句v特点:先判断表达式,后执行循环体 v说明: l循环体有可能一次也不执行 l循环体可为任意类型语句 l下列情况,退出while循环 u条件表达式不成立(为零) u循环体内遇break,return,goto l无限循环: while(1)循环体;While语句特点和说明#include main() int i,sum=0;
11、i=1;while(i main() int i=1;while(imain( ) int i=0;for(i=0;imain( ) int i=0;for(;imain( ) int i=0;for(;imain( ) int i=0;for(;i main() int n;for(n=0;n+) if(1=n%2) printf(“continue;printf(“#“); if(n4) break; A do a=a*a; while(!a); A 循环体将执行一次 B 循环体将执行两次 C 循环体将执行无限次 D 系统将提示有语法错误C语言的循环语句 以下叙述正确的是 。 A do-w
12、hile语句构成的循环不能用其他语句构成的循环来代替 B do-while语句构成的循环只能break语句退出 C 用do-while语句构成的循环,在while后的表达式为非零时结 束循环 D 用do-while语句构成的循环,在while后的表达式为零时结束 循环 int x=-1; do x=x*x; while(x0); 上面程序将执行的循环次数为 。 A 循环体将执行无限次 B 循环体将执行两次 C 循环体将执行一次 D 系统将提示有语法错误C语言的循环语句 考察对for语句表达式1、2、3的执行顺序及对表 达式2的理解 设i和k都是int类型,则以下对循环语句:for (i=0,k
13、=-1;k=1;i+,k+)printf(“*n”);说法正确的是( )A.循环结束条件不合法B循环体一次也不执行C循环体执行一次D该循环是无限循环C语言的循环语句 下列程序执行后输出结果是():main()int i,n=1;for(i=3;i main() int x,y,k=0;for(x=0,y=5;x0;n-=2) m+;n-; printf(“%dn“,m); 执行后输出结果是 。 A 3 B 4 C 9 D 10C语言的循环语句 考查对while循环条件表达式的理解 以下程序: 若int类型的t在进入下面的循环之前,其值为0,则 以下叙述中正确的是 。 while(t=1) A 循环控制表达式的值为0 B 循环控制表达式的值为1 C循环控制表达式不合法 D 以上说法都不对C语言的循环语句 语句“while(!W);”的表达式“!W”等价于( ): A W=1 B W!=1 C W!=0 D W=0