【文档说明】C语言程序设计第四版-课件.ppt,共(47)页,348.535 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44501.html
以下为本文档部分文字说明:
第2章算法算法在程序中的重要性一个程序包含以下内容数据的类型与组织形式——数据结构操作步骤——算法结构化程序设计方法计算机语言计算机算法数值运算非数值运算算法实例在一组数a1,a2,a3,a4,...,a10中找出最大
值算法的特征有穷性:操作步骤有限确定性:每一步骤有确切定义输入:0个或多个输入,从外界获得信息输出:一个或多个输出,反映数据处理结果有效性:每个步骤能执行,并有确定结果——“正确”的算法有优劣之分,时间、空间
的复杂度算法的表达方式自然语言流程图N-S图伪代码计算机语言算法的表达方式自然语言流程图N-S图伪代码计算机语言如果x是正数,就打印x;否则打印-x算法的表达方式自然语言流程图N-S图伪代码计算机语言x>0打印x打印-xTF算法
的表达方式自然语言流程图N-S图伪代码计算机语言x>0TF打印x打印-x算法的表达方式自然语言流程图N-S图伪代码1计算机语言如果x>0就打印x否则打印-x算法的表达方式自然语言流程图N-S图伪代码2计算机语言ifx>0thenprint
xelseprint-x算法的表达方式自然语言流程图N-S图伪代码2计算机语言if(x>0)printf("%d",x);elseprintf("%d",-x);判断框处理框输入/输出框流程线程序流程图常用符号结构化程序设计方法自顶向下逐步细化模块化设计结构化编码大
任务分解为小任务三种基本程序结构顺序结构选择结构循环结构顺序结构流程步骤1步骤2步骤3选择结构(分支结构)流程语句组1语句组2条件YN循环结构流程语句组条件YN第4章选择结构选择结构(分支结构)流程语句
组1语句组2条件YN选择结构实例P.66例3.5一元二次方程程序存在的问题:用户输入的数据必须保证b2-4ac≥0,否则调用sqrt函数会出错。改进:P.86例4.1是否还有不完善之处?if语句if(条件)语句if(条件){复合语句}else
{复合语句}if(条件)语句else语句if语句intx;printf("x=");scanf("%d",&x);if(x>=0)printf("greaterthanzeroorequaltozero\n");elseprintf("lessthanzero\n");p
rintf("It'sanegative\n");分别输入正数、负数、零,判断程序的运行结果if语句intx;printf("x=");scanf("%d",&x);if(x>=0)printf("greaterthanzeroorequaltozero\n");printf("It'sa
positivenumber\n");elseprintf("lessthanzero\n");分别输入正数、负数、零,判断程序的运行结果关系运算符<<=>>===!=优先级高优先级低关系运算符算术运算→关系运算→赋值运算优先于优先于例:P.92L.8关系
表达式用关系运算符连接算术表达式(或字符/关系/逻辑/赋值表达式)形成关系表达式的值是真(以1表示)或假(以0表示)字符/关系/逻辑/赋值表达式均以数值形式参加关系运算关系表达式判断下面程序运行时显示的结果:inta=5,b=3;printf("%d\n",a>b);printf(
"%d\n",(a>3)>(b==3));printf("%d\n",a>3>b==3);printf("%d\n",a>b>2);printf("%d\n",a-3>(b=2));printf("%d\n",'a'>'A');逻辑运算符!
非&&与||或运算规则见表4-2,4-3例P.93-94优先级逻辑表达式例:P.95-96闰年的表达以逻辑运算符连接关系表达式和逻辑量形成逻辑表达式的结果是真(以1表示)或假(以0表示)0和1以外的数据(数值、字符等)参加逻辑运算时,以0为假,非0为真逻辑变量C++,C99版本
使用类型符_Bool值为true和false头文件stdbool.hif语句if(条件)语句if(条件)语句else语句if(条件){复合语句}else{复合语句}说明:“条件”是关系表达式或逻辑表达式,其值为“真”(非0)或“假”(0)语句均要以分号结束,{}括
起的复合语句每句都以分号结束if语句例:P.88例4.3三个数从小到大排列例求分段函数的值107110131||3xexxxxxyx*用多个平行的if语句表达*用if…elseif…else…表达*abs
,pow,exp函数的使用if语句if(条件1)语句1elseif(条件2)语句2elseif(条件3)语句3......else语句n例:求一元二次方程的解输入a,b,caacbbxaacbbx24224122输出x1,x2b2-4ac≥0YN复数解a≠0NYb≠0Ybcx输
出xNC=0YN无解任意if语句的嵌套if语句的嵌套if(...)if(...)语句1else语句2elseif(...)语句3else语句4“语句”包括复合语句读教材101页代码条件运算符和条件表达式条件运算符?:唯一的三目运算符条件表达式表达式1?表达式2:表达式3当表达式
1为真时返回表达式2的值,否则返回表达式3的值条件运算符和条件表达式例inta,b,x;a=5;b=8;x=a>b?a:b;printf("%d",x);switch语句实现多分支选择结构switch(表达式){case常量表达式1:语句1case常量表达式2:语句2......case常量
表达式n:语句ndefault:语句n+1}switch语句实现多分支选择结构说明:switch会执行相符的分支之后的所有语句;为了使程序在执行一个相符的分支后不再继续执行后面的语句,可使用break语句终止switch;相邻的多个
分支可执行共同的语句。阅读下面的程序,判断编译和运行结果intx;chary;scanf("%d",x);if(90<=x<=100)y="A";if(80<=x<=89)y="B";if(70<=x<80)y="C";if(6
0<=x<70)y="D";elsey="E";printf("Level:%c\n",y);注意:scanf函数中的地址运算符;90<=x<=100的正确表达;char类型,单引号与双引号;分支的结构与运行步骤。阅读下面的程序,判断编译和运行结果intx;
chary;printf("inputx:");scanf("%d",x);switch(x/10){case'10':y="A";case'9':y="A";case'8':y="B";case'7':y="C";
case'6':y="D";default:y="E";}printf("Level:%c\n",y);注意:同前;case后的数据类型;每个case后的break语句;使用相同语句的分支合并。阅读下面的程序,判断运行结果intx=13,
y;if(x>5)printf("y=20");printf("y=10");printf("%d",y);注意:y没有被赋值的错误;分支结束后的语句阅读下面的程序,判断运行结果floatr,S;scanf("r=%f",&r);if(r>=0)s=3.14159*r*r;printf
("S=%f",s);elseprintf("radiuscannotbenegative");注意:(1)条件后未写{}造成分支语句不匹配,(2)变量名大小写问题;阅读下面的程序,判断编译和运行结果intx,y;scanf("%d",
&x);if(x<1)y=x;if(1<=x<10)y=2x-1;if(x>=10)y=3x-1;printf("y=%d",y);floatx,y;scanf("%f",&x);if(x<1)y=x;elseif(x<10)y=2*x-1;elsey=3*x-1;print
f("y=%f",y);提醒数学式10<x≤20在计算机语言中的表达switch语句的特殊语法格式表达式的正确书写库函数的使用(见附录F)正确的数据类型正确的程序结构十分重要!!!