C语言程序基本结构.ppt
《C语言程序基本结构.ppt》由会员分享,可在线阅读,更多相关《C语言程序基本结构.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Rose第 二 章程序基本结构程序基本结构济南大学Rose目 录控制语句控制语句 2.1 2.1 分支结构分支结构分支结构分支结构2.2 2.2 关系运算和逻辑运算关系运算和逻辑运算关系运算和逻辑运算关系运算和逻辑运算2.3 2.3 循环结构循环结构循环结构循环结构2.4 break2.4 break和和和和continuecontinue语句语句语句语句2.5 2.5 语句标号和语句标号和语句标号和语句标号和gotogoto语句语句语句语句济南大学Rose实验实验25题改进:题改进:main()floata,b,c,s,area;scanf(%f%f%f,&a,&b,&c);if(a+bc&
2、a+cb&b+ca)s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“areais%fn”,area);分支体分支体济南大学Rose观察下面分支程序,模仿编程。观察下面分支程序,模仿编程。main()floata,b;printf(Pleaseinputa:);scanf(%f,&a);if(a0)printf(“inputerror!”);预备学习预备学习1a0?成立成立不成立不成立printf输入输入a单分支单分支分支体由一条语句分支体由一条语句构成时,大括号可构成时,大括号可省略。省略。济南大学Rose观察下面分支程序,模仿编程。观察下面
3、分支程序,模仿编程。main()floata,b;printf(Pleaseinputa:);scanf(%f,&a);if(a0)b=-a;elseb=a;printf(resultis:%f,b);预备学习预备学习2a0?成立成立不成立不成立b=-ab=a输入输入a输出输出b双分支双分支济南大学Rose从键盘上输入两个整数,输出较小从键盘上输入两个整数,输出较小的那个数。的那个数。预备练习预备练习1济南大学Rose预备练习预备练习1程序源代码:程序源代码:main()inta,b,min;printf(Pleasetwodata:);scanf(%d%d,&a,&b);if(ab)min=
4、a;elsemin=b;printf(resultis:%d,min);济南大学Roseif语句的三种形式语句的三种形式(1)格式1:if (表达式)分支体;格式2:if (表达式)分支体1;else 分支体2;else后没后没有表达式有表达式括号后没括号后没有分号有分号分支体里可以包含分支体里可以包含多条程序语句,用一多条程序语句,用一对对扩起来,做为扩起来,做为整体。这种由整体。这种由扩扩起来的语句叫做起来的语句叫做复合复合语句语句。括号之外不再。括号之外不再加加“;”else必须和必须和if配对使用,配对使用,不能单独出现。不能单独出现。济南大学Rose知识点如何表达条件知识点如何表达条
5、件选择条件通常是关系表达式或逻辑表达式。放在括号选择条件通常是关系表达式或逻辑表达式。放在括号中。中。逻辑运算符:逻辑运算符:&、|、!、!表达式值为表达式值为0代表条件不成立(假)代表条件不成立(假)表达式值为非表达式值为非0代表条件成立(真)代表条件成立(真)例如:例如:100a999100a&a999济南大学Roseif语句扩展语句扩展表达式可为任意表达式,只要值为表达式可为任意表达式,只要值为0就认为条件不成立,值为就认为条件不成立,值为非非0就认为就认为条件成立。例如:条件成立。例如:if(1)if(-4+3)if(a)flag=3;if(flag)济南大学Rose算算术术运运算算优
6、优先先级级高高于于关关系系运运算算,关关系系运运算算优优先先级级高高于逻辑运算。于逻辑运算。逻辑运算符优先级:逻辑运算符优先级:!、!、&、|参参与与逻逻辑辑运运算算的的数数据据理理解解:值值为为非非零零即即是是真真,值值为零即是假。为零即是假。例如:例如:a.3&0结果为结果为0;b.7|0结果为结果为1;c.!800结果为结果为0关系表达式的运算关系表达式的运算济南大学Rose多分支结构多分支结构表达多种情况的选择表达多种情况的选择常用常用if语句嵌套实现语句嵌套实现规则的多分支语句可用规则的多分支语句可用switch语句实现语句实现济南大学Roseif 语句的三种形式(3)格式3:if
7、(表达式1)语句序列1;else if (表达式2)语句序列2;else 语句序列3;例例3设有分段函数:设有分段函数:-1(x0)编一个程序,输入编一个程序,输入x,输出输出y。Rose简单算法流程图简单算法流程图x0?x=0?y=-1y=0y=1真真(非非0)真真(非非0)假假(0)假假(0)#includemain()intx,y;scanf(“%d”,&x);if(x0)y=-1;elseif(x=0)y=0;elsey=1;济南大学Roseif语句嵌套语句嵌套注意:注意:注意:注意:if if语句或语句或语句或语句或ifelseifelse语句虽然书写在多行,但语法逻辑上是一条语语句
8、虽然书写在多行,但语法逻辑上是一条语语句虽然书写在多行,但语法逻辑上是一条语语句虽然书写在多行,但语法逻辑上是一条语句。句。句。句。elseelse总是与它上面最近的那个总是与它上面最近的那个总是与它上面最近的那个总是与它上面最近的那个ifif配对配对配对配对。必要时可加大扩号必要时可加大扩号必要时可加大扩号必要时可加大扩号“”,改变匹配关系。,改变匹配关系。,改变匹配关系。,改变匹配关系。济南大学Roseif语句嵌套语句嵌套 例如:if (表达式1)if (表达式2)语句序列1;else 语句序列2;if (表达式3)语句序列3;else 语句序列4;if与else的配对关系并不依赖于书写程
9、序时用户根据程序的层次性逐渐内缩的梯形结构,而else总是与它上面最近的那个if 配对。Rose举例举例求一元二次方程求一元二次方程ax2+bx+c=0的解的解流程图见教材流程图见教材2.4济南大学Rose本例题学到一个实数的比较方法:本例题学到一个实数的比较方法:实型数据,由于采用浮点数的形式存储于计算实型数据,由于采用浮点数的形式存储于计算机中,在存储与读取的过程中有精度损失,就机中,在存储与读取的过程中有精度损失,就是说实数经过存储后再读取出来,就不能精确是说实数经过存储后再读取出来,就不能精确等于原来的数值了。这样一个实数与其他数进等于原来的数值了。这样一个实数与其他数进行相等比较时,
10、不能用行相等比较时,不能用=表达相等关系,例表达相等关系,例如实数如实数a=0是不能正确比较的。而应该用它与是不能正确比较的。而应该用它与其他数相减的差的绝对值在某一个小数范围内其他数相减的差的绝对值在某一个小数范围内来表示近似相等。如本例中的来表示近似相等。如本例中的fabs(a)=1e-6,表示如果表示如果a小于小于10-6,就算是近似为,就算是近似为0了。了。济南大学Rose 分支结构编程练习从键盘上输入一个小于10000的数,判断它是几位数,并输出判断结果。济南大学Roseswitch(多分支多分支)语句语句使用形式:switch(表达式)case 常量1:语句序列1;break;ca
11、se 常量2:语句序列2;break;case 常量n:语句序列n;break;default:语句序列n+1;?济南大学Rose说明说明:switch语句的执行部分是由若干个语句的执行部分是由若干个case语句语句和一个可缺省的和一个可缺省的default语句组成的复合语句语句组成的复合语句,整个要用整个要用大括号大括号括起来括起来.语句序列语句序列1n+1中,如中,如果某个语句是由两个以上的语句组成,可以不果某个语句是由两个以上的语句组成,可以不用大括号。用大括号。switch后的表达式和后的表达式和case后的常量值可以为任后的常量值可以为任何类型,但一般情况下为整型和字符型。何类型,但
12、一般情况下为整型和字符型。济南大学Rose当表达式的值与当表达式的值与case后的常量值相等时,则执行该后的常量值相等时,则执行该case后的语句序列。执行完后退出后的语句序列。执行完后退出switch语句,跳转到语句,跳转到整个整个switch语句之后的下一个语句执行。如果所有的语句之后的下一个语句执行。如果所有的case语句的常量值与语句的常量值与switch之后的表达式不匹配,则执之后的表达式不匹配,则执行行default之后的语句序列。之后的语句序列。各各case语句之后的常量值不能相同。语句之后的常量值不能相同。如果某个如果某个case语句最后的语句最后的break语句被省略,则执行
13、语句被省略,则执行完该完该case语句之后,系统则会继续执行下一个语句之后,系统则会继续执行下一个case语句。语句。多个多个case语句可以共用一组执行语句语句可以共用一组执行语句济南大学Rose【分分析析】成成绩绩的的可可能能取取值值是是多多种种多多样样的的,但但case后后面面的的常常量量值值只只能能是是一一个个具具体体的的值值,不不能能表表达达为为一一个个值值的的范范围围;因因此此需需将将原原成成绩绩值值进进行行某某种种运运算算转转换换为为相相应应的的一一个个具具体体值值,这这样才能进行样才能进行case的匹配。的匹配。请大家思考?请大家思考?例例5在在学学生生成成绩绩管管理理中中,经
14、经常常要要将将成成绩绩的的百百分分制制转转换换成成对对应应的的等等级级制制。90分分以以上上为为A等等,80-89为为B等等,70-79为为C等,等,60-69分为分为D等,其余为等,其余为E等。等。编制程序,根据输入的百分制成绩,输出对应的等级。编制程序,根据输入的百分制成绩,输出对应的等级。提示:将原成绩值与提示:将原成绩值与10做整除运算,可得到一个具体值。做整除运算,可得到一个具体值。济南大学Rose#includemain()intscore,temp;printf(“Inputscoreofstudent:”);scanf(“%d”,&fscore);temp=fscore/10;
15、switch(temp)case10:case9:printf(“A”);break;case8:printf(“B”);break;case7:printf(“C”);break;case6:printf(“D”);break;default:printf(“E”);参参考考程程序序济南大学Rose条件运算符条件运算符简单的条件选择可以使用条件运算符。格式:表达式1?表达式2:表达式3例如:ab?a-b;b-a;条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符。例如:max=ab?a:b详细语法见P38页。济南大学Rose例:输入一个字符,如果是大写字母,转换例:输入一个字符,如
16、果是大写字母,转换为小写,如果不是则不转换。为小写,如果不是则不转换。main()charch;scanf(“%c”,&ch);ch=(ch=A&chc&a+cb&b+ca)scanf(%f%f%f,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“areais%fn”,area);循环体循环体随机次随机次数循环数循环济南大学Rose观察下面循环程序,模仿编程。观察下面循环程序,模仿编程。求全班同学成绩的平均分。求全班同学成绩的平均分。main()floata,sum=0;inti,num;scanf(“%d”,&num);
17、for(i=1;i=num;i=i+1)printf(inputscore:);scanf(%f,&a);sum=sum+a;printf(resultis:%f,sum/num);预备学习预备学习程序程序lianxi2.c固定次固定次数循环数循环济南大学Rose循循环环结结构构比比较较适适合合解解决决多多次次重重复复执执行行相相同同的操作运算。的操作运算。分分析析以以上上这这句句话话,用用循循环环结结构构来来解解决决问问题题的时候我们需要关注哪些?的时候我们需要关注哪些?1.多多次次重重复复这这就就需需要要考考虑虑一一个个循循环环的的执执行次数如何控制?行次数如何控制?2.相相同同的的操操作
18、作运运算算这这就就是是循循环环体体,就就是是循环控制结构内的操作语句。循环控制结构内的操作语句。循环结构的适用情况循环结构的适用情况济南大学Rose1、for(循环变量循环变量=初值;循环变量初值;循环变量=终值;循环变量增值)终值;循环变量增值)循环体语句循环体语句2、while(循环条件)循环条件)循环体语句循环体语句3、do循环体语句循环体语句while(循环条件);循环条件);三种三种C语言循环控制结构语句语言循环控制结构语句说明:三种语句的功能大体上是说明:三种语句的功能大体上是一样的,都能实现循环结构控制,一样的,都能实现循环结构控制,只是具体的语法结构不同,编程只是具体的语法结构
19、不同,编程时有些细节处理不同。时有些细节处理不同。说明:当循环体由若干语句组成时说明:当循环体由若干语句组成时,应用大括号括起来。应用大括号括起来。注意注意分号分号济南大学Rose从键盘上输入从键盘上输入10个整数,输出每个个整数,输出每个数的平方数的平方。使用使用for语句编程。语句编程。编程练习编程练习3分钟分钟济南大学Rose参考程序:参考程序:main()inta,i;printf(inputaninteger:);for(i=1;i=10;i=i+1)scanf(%d,&a);printf(:%dn,a*a);济南大学Rose补充:自增运算符补充:自增运算符自减运算符自减运算符例如:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 基本 结构
限制150内