江淮学院72学时全套讲义打印稿.ppt

上传人:tian****1990 文档编号:12716726 上传时间:2020-05-19 格式:PPT 页数:207 大小:1.41MB
返回 下载 相关 举报
江淮学院72学时全套讲义打印稿.ppt_第1页
第1页 / 共207页
江淮学院72学时全套讲义打印稿.ppt_第2页
第2页 / 共207页
江淮学院72学时全套讲义打印稿.ppt_第3页
第3页 / 共207页
点击查看更多>>
资源描述
1,概述,说明:教育部关于大学生计算机能力的统一要求。目的:(1)掌握C语言的语法知识(2)掌握C语言程序设计方法(3)锻炼严密的逻辑思维能力,提高科学研究的素质与前导课程关系【大学计算机基础】计算机系统的硬件组成(参看2.1.2)2、8、10、16进制整数的转换(参看2.2.1、2.2.2)数据在计算机中的存放形式(参看2.3.1、2.3.2)计算机基本操作(参看4.2.1、4.2.2、4.2.3)WORD编辑(参看5.2.1、5.2.2、5.2.3)知识结构:(1)自然语言的知识结构(2)C语言的知识结构(3)教材的知识结构,2,自然语言的知识结构,C语言的知识结构,教材的知识结构,3,学习方法提要:(1)词类、句型、程序结构分析、记忆(2)程序设计与调试上机实验、总结(3)常用算法与标准程序段分析、实验、记忆考试要求:(1)时间:期中考试、期末考试(2)范围:课堂教学的所有内容、作业中的习题(3)题型:单项选择题(10题20分)、填空题(10空20分)程序阅读题(4题20分)、程序填空题(2题10分)程序设计题(3题30分)教学要求:(1)课堂教学方式:讲解总结实例分析提问讨论(2)实验教学方式:(前)准备(中)自主(后)总结与记录(3)课堂纪律:按时不出声(4)作业通过实验来验证其正确性。,4,第1章C语言概述,C语言概况C程序概况运行C程序的步骤与方法与(重点)补充计算机程序计算机程序一串计算机能识别的、可执行的指令。【例】操作系统专家编好大家使用的计算机程序本班成绩统计程序自己编写自己使用的计算机程序。计算机语言计算机语言写计算机程序所遵守的某种语法规则的集合(指令的集合)。【三个阶段】机器语言又名二进制语言,用0和1组成指令(含操作和数据)符号语言又名汇编语言,用指定的单词和数字组成指令高级语言用接近人类的自然语言和数学公式组成指令(语句)高级语言的发展非结构化语言、结构化语言(如C)、面向对象的语言(如C+)1.1C语言出现的历史背景【发展过程】60年+硬件处理63年简化67年简化70年扩充72、73年可移植77年标准化ALGOLCPLBCPLBC独立C78年标准化83年标准化89标准化90年标准化99年旧标准C83ANSICC89ISOC(c89)C99(美国国家标准)(美国国家标准)(国际标准化组织)(国际标准化组织)【编译程序】TurboC、QuickC、MicrosoftC、BORLANDC、C+、VC+,5,1.2C语言的特点【略】边学边理解1.3简单C语言程序介绍【例1】从键盘上输入两个实数,输出他们的和。#includestdio.h/*将标准输入输出函数包含到本程序中*/voidmain()/*主函数的标记,main称为主函数名*/floata,b,s;/*定义实型变量a、b、s*/scanf(%f,%f,/*输出变量s中的实数*/*主函数的结束,前面的表示主函数的开始,后面的表示主函数的结束*/,6,【例2】从键盘上输入两个整数,求并输出他们中的大者和小者。#includeintmax(intx,inty)/*非主函数的标记,max是函数名、x和y是函数参数*/intz;/*定义本函数用到的变量z*/if(xy)/*如果x大于y*/z=x;/*将参数x中的整数送到变量z中*/else/*否则*/z=y;/*将参数y中的整数送到变量z中*/return(z);/*返回变量z中的整数,即参数x和y中的大者*/*本函数的结束标记*/intmin(intx,inty)/*非主函数的标记,min是函数名、x和y是函数参数*/intz;if(xy)z=x;elsez=y;return(z);voidmain()inta,b,s;/*定义整型变量a、b、s*/;scanf(%d,%d,/*输出变量s中的整数(两个整数中的小者)*/,7,关于C程序的初步小结:(1)组成C程序的符号都是键盘上符号,即ASCII代码字符集的字符(参看附录AP364)。其他符号(如汉字)只能出现在中间或/*/中间。(2)总是有一个,并且只能有一个名为“main”的主函数;其他函数称为非主函数,可以没有,也可以有很多个。(3)任何C程序的结构都是下列几种之一:函数1主函数函数1函数2函数1.函数2主函数主函数.函数n(4)程序的执行总是从主函数体的第1条语句开始,到最后一条语句结束非主函数的执行,只能利用函数调用来执行。(5)任何函数的基本结构都是这样的:函数名(函数参数1,函数参数2,.)【参数可以没有】函数中所使用的变量的定义;【可以没有】输入某些变量的值;【可以没有】对参数和变量的加工处理;【可以没有】输出某些变量的值;【可以没有】返回某些变量的值;【主函数没有、非主函数可以没有】【花括号及括住的部分称为函数体、前面称为函数头】(6)语句的最后一定有“分号”,一行可以写多条语句。一个语句可以写在多行上。最好的书写格式是缩格对齐方式,称为“结构化”书写格式。(7)输入、输出使用系统函数scanf()和printf()来完成,程序的开头要加#include或#includestdio.h(我们常用)(8)注释是用“/*”和“*/”括住的任何一串符号。可以出现在程序的任何一处。,8,1.4C程序的上机调试步骤与方法【用VC+6.0编译程序】【预备知识】调试窗口VC的主窗口运行窗口运行程序时会自动弹出一个窗口,接收输入数据,并显示输出结果。基本操作方法(后面用到处再介绍)编译、调试程序的过程是在Windows窗口下进行的,应掌握Windows的基本操作方法。例如,菜单驱动方法、工具按钮的使用、热键、对话框操作、文本框输入、鼠标操作等。编辑修改源程序和WORD操作类似。【调试程序的步骤(参看1.4.1节)】参看右图【调试程序的方法】,9,第一步:开机、启动VC+6.0【建议:在D盘根目录下建一个自己的文件夹】【方法】通电,启动WINDOWS;依次选取“开始”、“程序”、“MicrosoftVisualC+6.0”再单击“MicrosoftVisualC+6.0”菜单;将出现下列VC+主窗口。也可以直接双击桌面上的VC+6.0的图标。工作区显示当前工作区的名称,以树状结构显示工程文件夹及其中的源程序名。编辑区显示正在编辑调试的源程序。输出区显示编辑区中的源程序在编译、连接时的错误信息。,10,常用菜单File(文件)New(新建)创建源程序文件。Open(打开)调入已经建立的源程序文件。CloseWorkspace(关闭工作区)关闭当前工作区,结束某个程序的调试。Save(保存)保存编辑区的文件(存盘)。Edit(编辑)Cut(剪切)删除选中的阴影区并复制到剪贴板中。Copy(复制)将阴影区复制到剪贴板中。Paste(粘贴)将剪贴板中内容插入到光标处。【注】选定阴影区的方法是用鼠标拖曳。Build(创建)Compile(编译)【Ctrl+F7】对工作区的源程序进行编译生成OBJ文件。Build(创建)【F7】对工作区的源程序进行连接生成EXE文件。Execute(执行)【Ctrl+F5】运行编译连接后的可执行程序(EXE文件)。,11,第二步:建立新的源程序【方法】执行菜单命令“File|New”,在弹出的对话框中单击“Files”标签,显示结果如下图。选取“C+SourceFile”。在“Location”文本框中选取或输入源程序所在的路径。例如“D:CCW”在“File”文本框输入源程序文件名,扩展名选C。例如“P1.C”。单击“Ok”按钮。光标将出现在编辑区,可以输入源程序清单。注:建议文件名构成姓名拼音章号_题号.C如CCW6_5.C,12,第三步调试旧的源程序【方法】执行菜单命令“File|Open”或工具按钮,将弹出如图所示的对话框。单击“查找范围”文本框右边的向下箭头按钮,选定存放源程序所在的文件夹。在下面的列表框中选定“源程序”文件。例如“P2.C”。单击“打开”按钮。源程序清单将出现在主窗口的编辑区,可以对其进行编辑修改与调试。,13,第四步编辑源程序清单【方法】同WORD操作。【可以使用汉字,修改源程序时一定要回到英文输入】。第五步存盘【方法】执行菜单命令“File|Save”或按对应工具按钮。第六步编译生成中间代码文件(.OBJ)【方法】执行菜单命令“Build|Compile”或热键“Ctrl+F7”或常用工具。此时将弹出一个对话框,单击“是”按钮。在输出区将显示编译后的结果。【说明】无错误:在输出区显示错误条数(0)、警告性错误条数(0);有错误:在输出区显示错误条数、警告性错误条数、以及出错的程序行数和原因。(有警告性错误可以连接!)第七步连接生成可执行文件(.EXE)【方法】执行菜单命令“Build|Build”或按热键“F7”或按常用工具。在输出区将显示连接后的结果。【说明】无错误:在输出区显示错误条数(0)、警告性错误条数(0);有错误:在输出区显示错误条数、警告性错误条数、以及出错的原因。,14,第八步运行目标程序【方法】单击菜单命令“Build|Execute”。或热键“Ctrl+F5”或常用工具。【说明】程序运行时,会自动弹出一个“运行窗口”。如果程序没有输入,则窗口中将显示程序运行的输出结果;如果程序有输入,则窗口中将有光标闪烁,等待输入。程序运行结束后,窗口中将显示“PressanyKeytoContinue”,按任何键将退出“运行窗口”,返回VC主窗口。第九步调试下一个程序【经常忘了这一步,造成错误或死机!】【方法】执行菜单“File|CloseWorkspace”,将弹出一个对话框,单击“是”按钮。(1)如果接着调试新程序从第二步开始;(2)如果接着调试旧程序从第三步开始第十步:退出VC【方法】单击VC主窗口右上角的关闭按钮。【异常情况的强迫关闭】按“Ctrl+Alt+Delete”键,弹出任务管理器,选中“应用程序”标签,再选取要关闭的“VC+6.0”,单击“结束任务”按钮。第十一步:关机。【方法】单击菜单命令“开始|关机”。【建议】备一个U盘,关机前复制本次实验的源程序文件(扩展名为C)到U盘备份。,15,第一章习题答疑,1.5输出指定的三行符号。提示:一行符号的输出方法如下:printf(”符号符号n”);1.7上机运行本章的3个例题。重点:熟悉C程序的调试步骤和每步的操作方法可以制造错误,增加练习的机会。说明:从第4章开始的程序设计题目,格式要求如下:题目修改后正确程序清单的程序清单输入数据错误原因的输出结果分析,16,第二章程序的灵魂算法,算法概念算法的表示结构化程序设计方法程序数据结构算法2.1算法的概念算法解决某个问题的方法步骤(计算方法、数学方法、物理方法等)2.2简单算法举例【例一】表决型的会议【算法】第1步宣布会议开始第2步宣读某个决议草案第3步通过监票人和计票人名单第4步宣读投票注意事项第5步投票第6步计票第7步宣布投票结果第8步宣布会议结束,17,【例二】计算123.100【算法1】【算法2】【算法3】【算法4】令S为0令S、K均为0令S、K均为0计算:计算:S=S+1计算:S=S+K计算:K=K+1计算:S=S+2计算:K=K+1计算:S=S+K输出S.判断:若k=.)指针运算符(printf(%dn,+k);输出结果是4,k为4printf(%dn,k+);输出结果是4,k为5【注】(1)注意理解后缀+、-的加减1的时间。i=3;k=i+;k为3、i为4i=3;k=(i+)+(i+)+(i+)k=3+3+3=9、i=3+1+1+1=6结论:后缀的+和-是所在的表达式全部计算结束后,再进行加减1的运算。(2)自左向右尽可能地选取多个运算符组成复合运算符。k=1;k+k+k相当于(k+)+(k+)+k,结果是3,k为3。(3)+和-只能作用于变量,不能作用于表达式。k=1;+k相当+(+k),其中(+k)是正确的,但+(+k)是错误的。(4)注意TC中函数参数的计算顺序是自右向左的(VC中是自左向右)。k=1;printf(“%d,%d”,k,k+);输出结果是2,1(VC中是1,1)。五、算术表达式表达式:用运算符将合适的运算对象连接起来的式子。表达式值:表达式的最终运算结果值。表达式类型(两种分类):表达式值的数据类型、最后一个运算符的类型。运算符的运算对象:常量、变量、表达式(常量、变量看成表达式特例)。表达式运算的转换规则:就长不就短。算术表达式:用算术运算符将合适的运算对象连接起来的式子。,34,3.9赋值运算符与赋值表达式一、赋值运算符【注】(1)前一个运算对象只能是变量,后一个运算对象是表达式(或常量、变量)。(2)赋值时的转换规则是:就左不就右。当字节数少的值赋予字节数多的变量时,不会出错;反之,可能会出错。【例】intk;k=3.99;k为3。floatf;f=3;f为3.000000unsignedshortu=65535;shortk;k=u;k为-1longL=32768;shorts;s=L;s为-32768,复习:带符号整数与无符号整数,35,二、复合赋值运算符【优先级】+、-、+、-、强制双目算术赋值就长不就短,转为双精度所有赋值运算符的优先级相同。【注】后5个将在第12章“位运算”介绍。右边表达式自动加圆括号。【例】intk=3;k-=3;k为0。intk=3;floatf=3.0;f*=3;f为9.000000k*=1+2;intk=-5;k/=2;k为-2相当于“k=k*(1+2);”longL=5;L%=8L;L为5L,常见的警告型错误:floatf;f=1.0+2.0;,36,三、赋值表达式赋值表达式:用赋值运算符连接变量和表达式组成的式子。赋值表达式的值:赋予左边变量的值。赋值表达式的类型:左边变量的数据类型。【注】(1)赋值表达式也是表达式,可以出现在赋值运算符的右边。例如,intk1=1,k2=2,k3;k3=k2=k1=5;k3=k2=k1=5相当于k3=(k2=(k1=5);结果k3、k2、k1均为5。注:定义变量时的初值只能是常量(或常量组成的表达式)下列定义语句是错误的:intk1=k2=k3=5;(2)赋值运算符的左边只能是变量,不能是表达式。例如,intk1=1,k2;k2=k1+2=3;k2=k1+2=3相当于k2=(k1+2)=3),赋值运算符的左边是表达式。【例】inta=2;计算表达式“a+=a-=a*a”和变量a的值。a+=a-=a*a相当于a+=(a-=a*a)。先算a-=a*a,相当于a=a-(a*a),表达式计算结果是-2,a是-2。再算a+=(-2),相当于a=a+(-2),表达式计算结果是-4,a是-4。3.10逗号运算符与逗号表达式一、逗号运算符运算符是“,”;双目中缀、运算对象是表达式。运算规则是先计算左边的表达式,再计算右边的表达式。运算结果是右边表达式的值;类型是右边表达式的数据类型。结合性是自左向右的。,37,二、逗号表达式逗号表达式:用逗号运算符连接两个表达式组成。逗号表达式的值:右边表达式的值。倒数第2逗号表达式的类型:右边表达式的数据类型。倒数第1【注】不是所有的逗号都是逗号运算符。例如,intk=5,j=6;printf(%d,%d,k,j+1);【说明】运算符的优先级:+、-、+、-、强制双目算术赋值逗号各种赋值运算符是同级的、多个逗号运算符也是同级的。【例】3+5,4+2,3+1逗号表达式值为4。inta,b,c;a=3,b=4,c=5逗号表达式值为5,变量a、b、c值依次为3、4、5。inta,b,c;c=(a=3,b=4)赋值表达式值为4,变量a、b、c值依次为3、4、4。intx,a;x=(a=3,3*6)赋值表达式值为18,变量a、x值依次为3、18。intx,a;x=a=3,3*6;逗号表达式值为18,变量a、x值均为3。inta=3,b=4,c=5;printf(%d,%d,%dn,a,b,c);输出结果是3,4,5printf(%d,%d,%dn,(a,b,c),b,c);输出结果是5,4,5【编程经验】不要自找麻烦,使用一些难以理解的表达式。(1)intn=5,a=12;a%=(n%=2)结果n为1、a为0、表达式为0。(2)inta=16;a+=a-=a*=a结果a为0、表达式为0。,38,第三章习题答疑(一),3.3十进制带符号整数转换成八、十六进制整数。通用验证程序清单如下:#include”stdio.h”voidmain()intx=?;printf(”%o%xn”,x,x);/*以八、十六进制输出*/其中:?是对应的带符号整数。输出结果是4字节八进制整数十六进制整数,39,3.7字符加密(用后4个字母)提示:每个字母+4即是后4个字母不能是W、X、Y、Z。3.9计算某个表达式的值。通用验证程序清单如下:#include”stdio.h”voidmain()每次换成新表达式?xx;xx=(表达式);/*计算表达式值存入xx*/printf(”%?n”,xx);其中:?表达式对应的数据类型符(需事先判断)?表达式为整型,则为d表达式为实型,则为f,第三章习题答疑(二),40,3.10写出程序运行的输出结果,上机验证。3.12a=12,计算某表达式后,求变量a的值。通用验证程序清单如下:#include”stdio.h”voidmain()shorta=12,n=5;表达式;printf(”%dn”,a);其中:表达式每次换成新表达式输出结果是变量a的值。,第三章习题答疑(三),41,第四章最简单的C程序设计顺序程序设计,C语句函数调用语句数据定义语句表达式语句和赋值语句分支语句(3个)复合语句和空语句控制语句循环语句(5个)字符输入输出函数转向语句(1个)数据输入输出函数返回语句(1个)顺序结构程序设计函数调用语句表达式语句(赋值语句)4.1C语句概述复合语句【说明】空语句(1)函数调用语句函数名(实际参数1,实际参数2,.);(2)表达式语句表达式;(3)复合语句语句1;.语句K;其中可以出现任何语句,数据定义语句要集中写在前面。(4)空语句;,函数与函数调用的概念f(x,y)=x2+6y-7f(2,1)=22+61-7=3,42,4.2赋值语句【格式】变量表达式;【注】表达式语句的一种。4.3数据输入输出概念及其在C语言中的实现。一、程序中的输入输出要求#includestdio.h#includestdio.hvoidmain()只能计算5+8的程序voidmain()能计算任何两整数和的程序intx1,x2,x;intx1,x2,x;x1=5,x2=8;输入两个整数存入x1,x2;x=x1+x2;x=x1+x2;看不到计算结果输出变量x中的值;二、C语言中输入输出的实现【方法】利用系统函数中的输入输出函数。【注】(1)系统函数系统已经编好的一段程序,能完成特定功能。(2)使用系统函数的方法函数调用,即“函数名(实参1,.)”。(3)使用系统函数的程序开始必须写:#include头文件名.h其中的“头文件”中含有该系统函数的程序清单。(4)头函数有很多种,存放输入输出函数的头文件名是“stdio.h”。存放数学类函数的头文件名是“math.h”。,43,4.4字符数据的输入输出一、字符输出函数【调用格式】putchar(ch)参数ch:字符型表达式(结果为0127的整型或字符型数据)【功能】在显示器上显示ch对应的单个字符。【例】#includestdio.h/*程序中使用了字符输出函数*/voidmain()putchar(ch1);putchar(n);putchar(ch2);charch1;输出结果是:Aintch2;改为Bch1=A,ch2=66;改为putchar();putchar(ch1);putchar();putchar(ch1+1);putchar(ch2-1);输出结果是:A输出结果是:BA二、字符输入函数【调用格式】getchar()【功能】从键盘上读取单个字符作为函数的返回值。【注】(1)通常的使用方法:字符(整)型变量getchar();(2)键盘上输入数据,输完后应跟一个“回车键”。注意回车键也是一个字符。【例】#includestdio.h/*程序中使用了字符输入函数*/voidmain()若输入A回车键B回车键charc;则输出结果是:A不能输入c=getchar();putchar(c);若输入AB回车键c=getchar();putchar(c);则输出结果是:AB【讨论】若一定要按第1种方法输入,程序怎么改!【说明】键盘缓冲区的概念。,44,4.5格式输入输出函数一、格式输出函数【调用格式】printf(输出格式字符串,表达式1,表达式2,.)其中:“输出格式字符串”是由“输出格式字符”与“非格式字符”组成的一串字符。【功能】按自左向右(TC中自右向左)顺序计算各个表达式的值,然后按照自左向右的顺序,依据“输出格式字符串”中的“输出格式字符”规定的格式输出表达式值。“输出格式字符串”中的“非格式字符”将原样原位置输出。【注】(1)输出格式字符及其对应的格式。参看下页的表格。(2)0255之间的整数可以使用“%c”格式输出(256个符号称扩展ASCII代码)。(3)单个字符可以使用“%d”、“%o”、“%x”、“%u”格式输出。(4)常用输出格式字符:带符号整数无符号整数长整数无符号长整数实数字符字符串%d%u%ld%lu%f%c%s(5)常用的非格式字符:,(数据间隔)n回车换行【例】#include“stdio.h”/*使用系统函数printf()应有#includestdio.h*/voidmain()inti=1;shorts=2;longl=3L;floatf=4.0;doubled=5.0;charc=A;printf(i=%d,s=%d,l=%ldn,i,s,l);输出结果:i=1,s=2,l=3printf(f=%f,d=%5.2fn,f,d);输出结果:f=4.000000,d=5.00printf(%c%cn%sn,c,c+32,string!);输出结果:Aastring!跳页,printf(%d%d,12,345);12345printf(%d,%d,12,345);12,345printf(%dn%d,12,345);12345,128-255在VC中是乱码!,45,46,二、格式输入函数【格式】scanf(输入格式字符串,地址1,地址2,.)其中:“输入格式字符串”是由“输入格式字符”与“非格式字符”组成的一串字符。【功能】按照自左向右的顺序,依据“输入格式字符串”中的“输入格式字符”规定的格式从键盘输入数据,按次序存入地址1,地址2,.对应的变量中。“输入格式字符串”中的“非格式字符”必须原样原位置输入。【注】(1)地址的写法:若输入:1,2,3回车键45回车A回车B回车键则i=1,其他变量值不确定!且这些不能输入跳页用来接受回车换行符号,47,48,4.6顺序结构程序设计例程序设计方法:读3遍题目,了解已知什么?求什么?设计算法、提取数据结构。【例一】输入三角形边长,求面积。【程序设计】(1)算法:输入3个边长a、b、c;用下列公式计算面积s。,其中L=(a+b+c)/2;输出面积s。(2)数据结构:设计存放原始数据、中间数据、最终结果数据的变量名及类型。原始数据:a、b、c(实型);中间结果:L(实型);最终结果:s(实型)。【程序清单】#includestdio.h#includemath.h/*其中用到开方的系统函数sqrt(表达式)*/voidmain()floata,b,c,L,s;/*由数据结构确定的数据定义语句*/scanf(“%f,%f,%f”,注:在VC中此处会出现警告性错误。双精度数存入单精度变量L。在VC中,这样的警告性错误不影响程序的正确运行!,49,【例二】输入a、b、c,求方程ax2+bx+c=0的两个实根(假定b2-4ac0)。【程序设计】(1)算法:输入a、b、c;用公式计算:db2-4ac,用公式计算输出两个实根x1和x2。(2)数据结构:原始数据:a、b、c(实型);中间结果:d(实型);最终结果:x1、x2(实型)。【程序清单】#includestdio.h#includemath.h/*程序中用到开方函数sqrt(表达式)*/voidmain()floata,b,c,d,x1,x2;scanf(%f,%f,%f,【顺序结构程序设计方法】输入计算(算法设计)数据结构设计输出,50,第四章习题答疑(一),4.4给变量的值,编程序输出指定的格式与数据提示:使用数据定义语句定义变量并赋予初值;使用输出函数按照指定格式输出各变量的值4.5读程序,写输出结果。提示:按照输出格式写出各个变量的值。4.6对照程序清单,如何输入数据使得各变量获得正确的值。提示:程序中应增加输出语句,输出各变量的值,检查输入是否正确?,51,第四章习题答疑(二),4.7给出输入语句,要求决定输入数据的格式,使得各变量获得正确的值。设计一个程序,包括变量定义,指定的输入语句,输出语句。4.8程序设计题。(已知圆半径和圆柱体的高)计算圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。提示:算法设计:计算、输出数据结构设计:原始数据、结果数据4.9程序设计题。(已知华氏温度,求摄氏温度)提示:算法设计:输入、计算、输出数据结构设计:原始数据、结果数据,52,第五章选择结构程序设计,关系运算符与关系表达式逻辑运算符与逻辑表达式单分支与双分支选择语句多分支选择语句选择结构的程序设计5.1关系运算符与关系表达式一、关系运算符关系运算符是用来比较数据大小的。关系运算的结果是整数“1”或“0”,分别表示关系的“成立”和“不成立”。关系运算符的对象是数值,可以是整型、实型、字符型、指针型等,不能是字符串。,53,【注】(1)优先级:=、=、!=+、-、单目算术、强制双目算术关系赋值逗号(2)运算对象可以是数值型的任何表达式,包括算术、赋值、逗号表达式,也可以是关系表达式(1或0),或后面介绍的其他类型的表达式。(3)字符的大小:0空格01.9AB.Zabb)=c关系表达式,值为1注:可以不加圆括号讨论:abc(b+c)b赋值表达式,值为1,变量c为1在C中的实现方法:d=abc赋值表达式,值为0,变量d为05.2逻辑运算符与逻辑表达式一、逻辑运算符逻辑运算符是用来判断逻辑关系的。逻辑运算的结果只能是整数“1”或“0”,分别表示逻辑意义上的“真”和“假”。逻辑运算符的对象是数值,可以是整型、实型、字符型。0表示假、非0表示真。注1:注2:,55,【优先级】!、+、-、单目算术、强制双目算术关系(m=ab)(3)内嵌语句建议缩格书写(格式化书写)。(4)内嵌语句可以是除数据定义外任何语句,如复合语句。(5)if-else的嵌套规则:else总是和前面最近的无配对else的if配套。请看下例。,57,if(e1)if(e2)s1;正确的错误的elses2;如果else就要和第1个if配对,如何做?二、例【例一】输入3个实数,【例二】输入实数x,-1x0如果ab,则将a、b互换;如果x小于0,则令s为-1;【3分支】【单分支】如果ac,则将a、c互换;否则,如果x等于0,则令s为0;如果bc,则将b、c互换;否则,令s为1。依次输出a、b、c。输出s。数据结构:a、b、c、d(float)数据结构:x(float)、s(int)程序:#includestdio.h程序:#includestdio.hvoidmain()voidmain()floata,b,c,d;floatx;ints;scanf(%f,%f,%f,注1:书写格式不合要求!注1:书写格式不合要求!注2:分号改为逗号注2:“x=0”应修改为“fabs(x)=A”语句(称为中断语句)。此时,该语句的功能变成:做完某个case后的语句串将结束switch语句。【说明】该语句(带break;)能完成多分支结构,即用n个条件从n+1个操作中选择一个操作执行。要注意这n个条件必须是“表达式=n个不同值”。如果是互不相关的n个条件,则应该使用“嵌套的if-else”语句来实现。【例】输入单个字母,输出对应的成绩范围:字母ABCD成绩范围85-10070-8460-690:则有双实根;x,存单实根,实型。三分支否则,若b2-4ac0)/*下面一行的分号能否改为逗号?*/x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(x1=%fx2=%fn,x1,x2);elseif(d0)r=-b/(2*a),i=sqrt(-d)/(2*a);printf(x1=%f+i%fx2=%f-i%fn,r,i,r,i);elseprintf(“x1=x2=%fn”,-b/(2*a);注意观察右花括号位置讨论:程序防御错误操作的能力。(不考虑a为0的情况,用户操作可能造成程序出错),62,第五章习题答疑(一),总提示(程序设计的基本步骤)输入加工数据结构输出5.3计算表达式的值。仿照第三章求表达式值的题目,编写验证程序!5.4输入3个整数a、b、c,输出其中最大数提示:a、b中大者存入m(二分支)c、m中大者存入m(单分支)5.5求分段函数值。提示:三分支结构。5.6百分制成绩转换成5级分制成绩。提示:5分支结构或6分支结构(输入的百分制成绩有错)。用嵌套的if-else语句!(简单)用swicth语句!(成绩x/10=10、9、8、0),63,第五章习题答疑(二),5.7给出一个5位的正整数。求(1)几位数?(2)求每位上的数字并输出?(123要求输出1、2、3)(3)按逆序输出每位数字。(123要求输出3、2、1)提示:(1)5分支结构。if(x10)elseif(x100)else(2)x%10是个位上的数字(123%10是3)做5次x/10是去掉个位上的数字(123/10是12)将上述结果保存在abcde中,按下列方式输出。5分支:if(万位a!=0)输出a、b、c、d、eelseif(千位b!=0)输出b、c、d、eelse(3)重复(2)中的输出(5分支)、注意数字的顺序要颠倒!说明:可以编3个程序,也可以只编1个程序。5.94个数按照由小到大顺序输出(设4个数存在变量a、b、c、d中)提示:a、b、c、d中最小数调到a中(3个单分支);b、c、d中最小数调到b中(2个单分支);【参看例题】c、d中最小数调到b中(1个单分支);,64,第六章循环结构程序设计,三种循环结构goto语句三条循环语句break语句、continue语句循环结构的程序设计方法(3)次数型6.1概述【三种循环结构】(1)当型(2)直到型(允许0次循环)(不允许0次循环)(次数型循环),65,6.2goto语句及其构成的循环一、语句标号【构成】标识符(常用大写字母组成)【位置】任何语句的前面。语句标号和语句间加“:”号,即“语句标号:语句;”。【作用】相当于给语句起个名称。惟一用在“goto语句中”。二、goto语句【格式】goto语句标号;【功能】不执行后面的语句,转向语句标号处的语句,继续执行。三、用goto语句组成的循环【一般形式】语句标号:语句1;.循环操作(循环体)语句n;if(控制条件)goto语句标号;.(退出循环)100【程序】#includestdio.h四、例求sk1+2+3+.+100。voidmain()k=1ints=0,k=1;【重要说明】LOOP:s=s+k;循环体不要使用goto语句构造循环,k+;能否改为s+=k+;因为它破坏了程序执行的的基本顺序(结构)!if(k101)gotoLOOP;【注】关于goto语句是有争论的?printf(“s=%dn”,s);,66,6.36.7循环语句(3条语句)while语句(当型)do-while语句(直到型)for语句(次数型)【格式】while(表达式)do语句;for(表达式1;表达式2;表达式3)语句;while(表达式);语句;【功能】【注】(1)其中的“语句”可以是除数据定义外的任何语句,通常是复合语句,称为“循环体”。(2)while、do-while中的表达式和for中表达式2称为“控制循环的条件”。通常是关系表达式或逻辑表达式,也可以是任何类型的表达式。(3)注意避免“死循环”,即控制条件永远都成立!特殊情况下可以巧用死循环!(4)for中的表达式1通常为赋值表达式:控制变量初值;可省略。表达式2通常为关系表达式:控制变量(或)终值;可省略,默认1表达式3通常为赋值表达式:控制变量+=(或-=)步长。可省略。(5)for语句中的表达式1、表达式3有时使用逗号表达式,以便做更多的操作。(6)循环是可以嵌套的,即外层循环体中可以包含其它循环(称内层循环)。(7)注意内嵌语句缩格书写(格式化书写)(8)三条循环语句是可以互换的。请看下表(理论分析,有利于掌握语句功能)。,67,100【例一】求sk1+2+3+.+100。k=1#includestdio.h#includestdio.hvoidmain()/*用while语句*/voidmain()/*用do-while语句*/intk=1,s=0;优化s=s+k+;intk=1,s=0;while(k101)s+=k+;dos+=k+;s=s+k;k+;while(k101);printf(s=%dn,s);printf(s=%dn,s);程序设计技巧:求累加和的变量初值为0,68,#include“stdio.h”另外的写法:k=100k!=101k-101voidmain()/*用for语句*/for语句的各种变形;intk,s;(1)s=0;for(k=1;k101;k+)s=s+k;s=0;(2)s=0,k=1;for(;k101;k+)s=s+k;for(k=1;k101;k+)(3)s=0;for(k=1;k101;)s=s+k;k+;s=s+k;(4)s=0,k=1;for(;k101;)s=s+k;k+;printf(s=%dn,s);(5)for(s=0,k=1;k101;k+)s=s+k;(6)for(s=0,k=1;k101;s=s+k,k+);(7)for(s=0,k=1;k-101;s+=k+);6.8break语句和continue语句break语句continue语句【格式】break;【格式】continue;【功能】强行中止循环。【功能】强行重新开始循环。【注1】只能用在循环体中。其中的break语句还可以用在switch语句中。【注2】单独使用无意义。退化成单分支循环体2永远不执行!,69,【注3】通常是和if语句配合使用(作为if语句的内嵌子句,用新条件控制其是否执行)。提供循环的第二个出口控制循环体2是否要执行【注4】continue语句可以不用。【例一】计算m!=1*2*.*m。【例二】求100200间不能被3除尽的整数#includestdio.h#includestdio.hvoidmain()voidmain()longm,n,s=1L;intn;scanf(%ld,如何不用continue语句?程序设计技巧:求连乘积的变量初值为1。,巧用死循环,If(条件2)continue;,If(条件2)break;,70,6.9循环结构程序设计例【每题代表一种类型】【例一】用下列公式计算值,精度为10-6。算法分析:【与s1+2+100类比】n项分子=-(n-1项分子)、n项分母=n-1项分母+2算法:依次求第1项、第2项、第k项相加。当型循环(|k项|=1E-6)pi+=x;fm=fm+2;fz=-fz;x=fz/fm;pi=pi*4.0;讨论:分子fz、分母fm能否设计成整型?printf(pi=%fn,pi);,本题代表:依次求某序列前n项的问题,参看下页习题,71,求多项式前若干项之和的问题,1.【习题6.8】求下列分数序列前20项之和。【参看例题:求值】次数型循环分子=前一项分母分母=前一项分子+前一项分母2.【习题6.11】用迭代法求a的平方根。迭代公式如下:【参看例题:求值】求序列(X1、X2、X3、X4、)的前若干项的问题。其中X1可以任给一个数;迭代公式就是由前一项求出后一项的公式。当型循环何时中止?Xn与Xn+1的差的绝对值很小的数。注:序列中的X1、X2、X3、只能用2个变量来存放。,已知项数的for(k=1;k=精度)将新项加到求和变量中;利用前一项求出后一项;,72,【例二】输入正整数m,判断是否素数。【第二章作业】算法:依次用2、.、m-1去除m,均不能除尽的是素数。参看框图数据结构:m,存放输入的正整数,整型;k,依次存放2、.、m-1。控制次数循环的变量,整型。flag,用于存放判断的结果,整型。该变量常称“标记变量”。程序:#includestdio.hvoidmain()intm,k,flag;scanf(%d,算法优化:其中的“m-1”可以改为“m/2”,还可以改为“m的平方根”,但要注意增加:#includemath.h。注:关于标记变量flag的使用(用于循环体中多种情况的出口标记)。,本题代表:循环多出口的问题,73,【例三】对输入的一段文字(以回车换行键为结束标记)进行电文加密后输出。加密的方法是字母用后4个字母替代,其他字符不变。87888990注意字母是组成圆圈的,z的后一个字母是a。(ABCDEFGHUVWXYZABCD)算法:读取当前字符;(abcdefghuvwxyzabcd)构造一个当型循环结构。控制继续循环的条件是:输入的字符不是n。循环体中操作:(1)对当前字符进行判断:若是字母则加4;加4后,如果在Z+1Z+4或超过小写z,则减26;(2)输出字符;(3)再读取下一个字符。数据结构:ch,先存放读取的字符,后存放加密后的字符;程序:#includestdio.hvoidmain()charch;ch=getchar();while(ch!=
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!