《专业C2讲基程序设计ppt课件》由会员分享,可在线阅读,更多相关《专业C2讲基程序设计ppt课件(42页珍藏版)》请在金锄头文库上搜索。
1、单击此处编辑母版副标题样式单击此处编辑母版副标题样式华中农业大学理学院华中农业大学理学院 章章 英英 C/C+语言程序设计语言程序设计 1/59本讲知识点:本讲知识点:通过一个具体例子介绍通过一个具体例子介绍C+程序的概程序的概貌,使学生了解貌,使学生了解C+语言的基本要素语言的基本要素C+程序的基本结构、书写规范程序的基本结构、书写规范学会一种学会一种C+集成开发环境(集成开发环境(IDE)的使用)的使用重点:重点:输入输出及选择语句输入输出及选择语句难点:难点:MinGW Developer Studio的使用;的使用;程序语句与具体执行过程之间的关系。程序语句与具体执行过程之间的关系。第
2、二讲第二讲 基本程序设计基本程序设计2/42 以以“求给定的两个整数之和求给定的两个整数之和”为题,要求应试者为题,要求应试者从键盘输入一个数作为答案,然后由程序给出正从键盘输入一个数作为答案,然后由程序给出正确与否的评判。确与否的评判。(P27)(P27)程序程序 = = 数据结构数据结构 + + 算法算法一、提出问题一、提出问题3/42算法:有穷的动作序列算法:有穷的动作序列数据:数据:两个加数(两个加数(x,y)及其和()及其和(z)。)。算法:算法:定义三个整型变量定义三个整型变量 x,y,z;确定两个加数确定两个加数 x 及及 y 的值;的值;输出题目(在显示器上显示);输出题目(在
3、显示器上显示);输入答案(从键盘输入一个整数,存放到变量输入答案(从键盘输入一个整数,存放到变量 z 中)中)判断判断 z 是否等于是否等于 x+y,若是则输出,若是则输出“正确正确”,否则输,否则输出出“错误错误”。4/42 / test1.cpp #include using namespace std; int main() / 主函数首部主函数首部 return 0; / 退出程序,返回操作系统退出程序,返回操作系统 注:这是一个完整的程序,是程序设计的起点。注:这是一个完整的程序,是程序设计的起点。 今后录入程序时,首先输入上述内容,然后将今后录入程序时,首先输入上述内容,然后将 其
4、他语句插入到返回语句之前。其他语句插入到返回语句之前。 int x, y, z;/(1)定义变量,分配内存空间定义变量,分配内存空间 return 0; / 退出程序,返回操作系统退出程序,返回操作系统 x = 3; y = 5;/(2)确定变量的值确定变量的值 return 0; / 退出程序,返回操作系统退出程序,返回操作系统 cout x ” + ” y z;/(4)输入答案输入答案 return 0; / 退出程序,返回操作系统退出程序,返回操作系统 if(x+y = z) /(5)判断并处理判断并处理 cout ”正确!正确!” endl; else cout ”错误。错误。” en
5、dl; return 0; / 退出程序,返回操作系统退出程序,返回操作系统 5/42程序的运行结果程序的运行结果第一次运行第一次运行输入输入8并回车并回车最后两行并非程序的输出结果,它们分别是:最后两行并非程序的输出结果,它们分别是:1.操作系统指出操作系统指出 “该程序该程序伴随着返回码伴随着返回码0终止终止”; 2.执行操作系统执行操作系统Pause命令的结果命令的结果“按任意键继续按任意键继续”6/42程序的运行结果程序的运行结果第二次运行(重新运行程序)第二次运行(重新运行程序)输入输入7并回车并回车7/42C+程序概貌程序概貌 程序外貌程序外貌程序元素程序元素英文字母、数字、运算符
6、号、标点符号、空格、换行英文字母、数字、运算符号、标点符号、空格、换行格式风格格式风格虽自由格式,但不讲究格式者绝对不是好程序员虽自由格式,但不讲究格式者绝对不是好程序员本课程严格要求:程序缩进编排本课程严格要求:程序缩进编排 程序内涵程序内涵程序元素程序元素保留字(关键词),语句保留字(关键词),语句主函数主函数程序风格程序风格外外内内8/42详细说明:主函数详细说明:主函数一个程序必须有一个,且只能有一个一个程序必须有一个,且只能有一个 main 函数。该函数。该函数被成为函数被成为主函数主函数。一般情况下,程序从主函数起执行;一般情况下,程序从主函数起执行;执行到主函数的执行到主函数的
7、return 语句后,将引起主函数返回到操作语句后,将引起主函数返回到操作系统(即程序结束)。系统(即程序结束)。主函数主函数 int main()外貌外貌主函数首部:主函数首部:int main()标识函数的圆括号标识函数的圆括号“( )”不可缺少;不可缺少;新标准要求新标准要求 main 函数的返回类型为函数的返回类型为 int;主函数的函数体主函数的函数体语句用一对花括号语句用一对花括号“ ”定界定界外外9/42详细说明:主函数详细说明:主函数主函数主函数 int main()函数体语句函数体语句变量定义变量定义 为变量分配内存空间为变量分配内存空间变量必须先定义,后使用(也称为变量必须
8、先定义,后使用(也称为访问访问,即,即读读、写写)内内10/42问题中的变量定义问题中的变量定义(1)定义三个整型变量定义三个整型变量 (P33)int x, y, z;何为变量?何为变量?何为整型变量?何为整型变量?int代表什么?代表什么?内存空间图例内存空间图例xy z11/42详细说明:主函数详细说明:主函数主函数主函数 int main()函数体语句函数体语句变量定义变量定义 为变量分配内存空间为变量分配内存空间变量必须先定义,后使用(也称为变量必须先定义,后使用(也称为访问访问,即,即读读、写写)执行语句执行语句操作数据(访问变量、常量,执行计算,输入操作数据(访问变量、常量,执行
9、计算,输入/输出等)输出等)返回语句返回语句结束主函数执行,将程序控制权交给操作系统。结束主函数执行,将程序控制权交给操作系统。返回值由程序员自定返回值由程序员自定通常返回通常返回0 (表示程序正常结束)(表示程序正常结束)或返回其他值,以表示某种特定情况下结束程序。或返回其他值,以表示某种特定情况下结束程序。内内12/42最简单的最简单的C+程序程序int main() reutrn 0;或者写在一行:或者写在一行:int main()return 0;13/42一般地一般地(程序中有输入程序中有输入/输出操作时输出操作时)1 / 程序文件名程序文件名.cpp 2 #include 3 us
10、ing namespace std; 4 5 int main()/ 主函数首部主函数首部 6 / 主函数的函数体主函数的函数体 7 return 0; 8 9MinGW Developer Studio C+应应用程序集成开发环境要求程序文件用程序集成开发环境要求程序文件最后以新行(空行)结束。最后以新行(空行)结束。注:行号不是程序中的成分。注:行号不是程序中的成分。14/42课堂实战课堂实战2-1问题描述:问题描述:王小二同学是一个聪明的孩子,他到王小二同学是一个聪明的孩子,他到超市去买东西,看到电子计价算账方便快捷,超市去买东西,看到电子计价算账方便快捷,就想编程模拟操作一下。请你帮助
11、他完成。已就想编程模拟操作一下。请你帮助他完成。已知苹果和香蕉的单价是知苹果和香蕉的单价是4.5、3.2元元/公斤。若购公斤。若购买买5公斤及以上,可打公斤及以上,可打95折。折。输入说明:输入说明:苹果和香蕉的重量。苹果和香蕉的重量。输出说明:输出说明:输出应付款。输出应付款。&2.5.1 MinGW Developer Studio (C+集成开发环境)的使用集成开发环境)的使用15/42/2-1.cpp#includeusing namespace std;int main(void) float apple, banana, total;coutapplebanana; if( app
12、le + banana 5 ) total = apple * 4.5 + banana * 3.2;else total = (apple * 4.5 + banana * 3.2) *0.95; couttotalendl;return 0;16/42二、二、C+程序基本元素程序基本元素 自然语言自然语言 对比对比 C+C+语言语言汉字汉字词语词语语句语句段落段落节节章章完整作品完整作品字符集字符集标识符标识符语句语句函数函数类类源程序文件源程序文件程序程序注意:注意:大小写敏感!大小写敏感!Num Num ,num num ,NUMNUM是三个不同的标识符。是三个不同的标识符。17/42
13、二、二、C+程序基本元素程序基本元素标识符举例标识符举例保留字(关键词)保留字(关键词) C+ C+标准中已经规定其含义;标准中已经规定其含义; 如:如: int,return,include,if,else等等main,std,cout,cin,endl等已由编译系统命名;等已由编译系统命名;用户自定义变量名等(如程序中的用户自定义变量名等(如程序中的x,y,z)。)。18/42C+保留字保留字保留字保留字亦称亦称关键词关键词,是系统预先定义的标识符,有,是系统预先定义的标识符,有其固定的特殊含义。其固定的特殊含义。程序员不能挪作它用。程序员不能挪作它用。常用的保留字有常用的保留字有 inc
14、lude,using,namespace(见第(见第7章)章) int,double,char (数据类型相关)(数据类型相关) return(返回)(返回) if,else(条件分支)(条件分支) for,while,do(循环)(循环) 19/42自定义标识符的命名规则自定义标识符的命名规则自定义标识符的命名规则自定义标识符的命名规则不能与保留字相同;不能与保留字相同;必须用字母或者下划线开头,后面可跟字母、下划线必须用字母或者下划线开头,后面可跟字母、下划线或数字;或数字;名字的长度不宜过长。名字的长度不宜过长。例如例如 New,NEW,_,_new,newRecord 合法合法 1st
15、,2nd,new-record,#123,$x非法非法20/42实战练习实战练习判断下列自定义标识符合法与否:判断下列自定义标识符合法与否:int a3;int t_t_t;int if;int _xyz;int 2ok;21/42基本数据类型基本数据类型C+编译系统均提供了一些设计完善的基本数据类编译系统均提供了一些设计完善的基本数据类型(参见表型(参见表2-1 )数据的存放形式数据的存放形式 (决定数据的取值范围、精度)(决定数据的取值范围、精度)数据的操作方法数据的操作方法 (可能的运算)(可能的运算)常用的数据类型常用的数据类型(MinGW C+等系统中等系统中)整型整型int 带符号
16、整型,占用带符号整型,占用4字节,取值范围正负字节,取值范围正负21亿多亿多unsigned int 无符号整型,占用无符号整型,占用4字节,字节,042亿多亿多浮点型浮点型float 单精度,占用单精度,占用4字节,字节,7个有效位个有效位double 双精度,占用双精度,占用8字节,字节,15个有效位个有效位22/42数值数据的运算数值数据的运算数值数据的基本运算数值数据的基本运算算术运算(算术运算(+、-、*、/),整数相除取余(),整数相除取余(%)关系运算(关系运算(、=、=、!=)赋值运算(赋值运算(=)算术运算算术运算整型数与整型数的运算结果为整型数整型数与整型数的运算结果为整型
17、数(5/2为整数商为整数商2);浮点型数与浮点型数、整型数与浮点型数运算结果为浮浮点型数与浮点型数、整型数与浮点型数运算结果为浮点型数。点型数。关系运算的结果为布尔型(关系运算的结果为布尔型(bool)值)值关系成立时,结果为关系成立时,结果为“真真”(true,即整数,即整数 1););关系不成立时,结果为关系不成立时,结果为“假假”(false,即整数,即整数 0)。)。23/42变量定义变量定义 定义变量就意味着给该变量分配内存空间。定义变量就意味着给该变量分配内存空间。 变量定义格式变量定义格式 数据类型数据类型 变量名;变量名; 数据类型数据类型 变量名变量名 = 初始化数值;初始化
18、数值; 变量变量 待解问题待解问题与与计算机内存计算机内存之间的桥梁之间的桥梁是数据的载体、待解问题的一种表达方式,是数据的载体、待解问题的一种表达方式,变量的变化标志问题求解的历程;变量的变化标志问题求解的历程;是计算机内存单元的抽象名称;是计算机内存单元的抽象名称;是程序中最活跃的成分,是程序中的是程序中最活跃的成分,是程序中的“小精灵小精灵”,是,是阅读理解程序、编写程序的关键。阅读理解程序、编写程序的关键。24/42三、三、C+输入输出及赋值操作输入输出及赋值操作 赋值语句赋值语句 变量名变量名 = = 值;值; 说明说明 符号符号 “= =” 被称为被称为赋值运算符赋值运算符 执行赋
19、值语句将用给定的值执行赋值语句将用给定的值覆盖覆盖( (替换替换) )变量的原值。变量的原值。 即:将新值存入变量所联系的内存空间。即:将新值存入变量所联系的内存空间。 变量是其值在程序执行过程中可以被改变的量变量是其值在程序执行过程中可以被改变的量 赋值操作是改变变量值的方法之一赋值操作是改变变量值的方法之一 还可以通过输入语句改变变量的值还可以通过输入语句改变变量的值25/42问题中的赋值问题中的赋值(2)确定两个加数的值确定两个加数的值x = 3; y = 5;等号是赋值运算符等号是赋值运算符 (P33)3 和和 5 是整型常量是整型常量26/42左值与右值左值与右值 左值左值 能出现在
20、赋值符号左侧的量被称为能出现在赋值符号左侧的量被称为左值左值 左值具有与之联系的内存单元,并且该单元是可写的左值具有与之联系的内存单元,并且该单元是可写的 左值的本质是变量左值的本质是变量 右值右值 能出现在赋值符号右侧的量被称为能出现在赋值符号右侧的量被称为右值右值 右值是其值是可读的量,如:常量、变量、表达式右值是其值是可读的量,如:常量、变量、表达式 左值量作为右值使用时,只读取其值,不可能修改其值左值量作为右值使用时,只读取其值,不可能修改其值27/42实战练习实战练习int a , b, c;double x, y, z;a = b = c;x = ( y = 1 ) + 2 ;z
21、= sqrt( x ); x = 5.5 ;28/42输入语句输入语句 输入语句输入语句 cin 变量名;变量名;说明说明 cin是编译系统已经定义的标识符,指控制台输入设备是编译系统已经定义的标识符,指控制台输入设备(console input),特指),特指键盘键盘; 称称操作符操作符“”为抽取运算符;为抽取运算符; 执行输入语句时,将暂停(等待用户输入)、并将所输执行输入语句时,将暂停(等待用户输入)、并将所输入的数据存放到指定的变量入的数据存放到指定的变量(所联系的内存单元)中;(所联系的内存单元)中; 可以连续执行抽取(输入)操作可以连续执行抽取(输入)操作 cin 变量名变量名1
22、变量名变量名2; 其中,键盘输入多个数据时,用空格分隔各个数据。其中,键盘输入多个数据时,用空格分隔各个数据。29/42输出语句输出语句 输出语句输出语句 cout 表达式;表达式;说明说明 cout是编译系统已经定义的标识符,指控制台输出设备是编译系统已经定义的标识符,指控制台输出设备(console output),特指),特指显示器显示器;称称操作符操作符“”为插入运算符;为插入运算符;执行输出语句将表达式的值执行输出语句将表达式的值在显示器的当前位置上显示;在显示器的当前位置上显示;可以连续执行插入(输出)操作可以连续执行插入(输出)操作 cout 表达式表达式1 表达式表达式2;输出
23、语句输出语句不会不会在各表达式之间自动插入数据分隔符号。在各表达式之间自动插入数据分隔符号。需要将分隔符号作为数据输出。如:需要将分隔符号作为数据输出。如: cout x “ + ” y “ = ”;30/42显示器的特点显示器的特点 每行可显示每行可显示 80 个字符个字符 超过超过 80 个字符时自动换行个字符时自动换行 不足不足 80 个字符时可用个字符时可用 cout endl; 换行换行 每屏可显示多行,并且自动上滚每屏可显示多行,并且自动上滚 输出数据后,光标自动向右或换行向下移动输出数据后,光标自动向右或换行向下移动除输出回车除输出回车(r)和退格和退格(b)外,只能从左至右依次
24、输出;外,只能从左至右依次输出;换行后,不可返回上一行。换行后,不可返回上一行。 一般,一般,1个汉字占个汉字占2个字符宽。个字符宽。31/42问题中的输出问题中的输出(3)输出题目输出题目cout x “ + ” y “ = ”;cout 显示器显示器 z;cin 键盘键盘 抽取运算符抽取运算符33/42问题中的判断问题中的判断(5)(5)判断是否正确,给出评判判断是否正确,给出评判if( x+y = z ) cout“正确正确”endl;else cout“错误错误”endl;34/42算法:有穷的动作序列算法:有穷的动作序列if-else 双分支选择语句双分支选择语句表达式表达式语句语句
25、1语句语句2真真假假cout“正确正确”endl;cout“错误错误”endl;x+y = z35/42完整代码实现完整代码实现/test1.cpp#includeusing namespace std;int main(void) int x, y, z; x=3; y=5; coutx“+”yz; if( x+y = z ) cout“正确正确”endl; else cout“错误错误”endl; return 0;36/42课堂实战课堂实战2-2问题描述:问题描述:编写一个程序计算员工周工资,输入某雇员编写一个程序计算员工周工资,输入某雇员的每周工作时间(以小时计)和每小时的工资数,计算
26、的每周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员周工作小时超过并输出他的工资。若雇员周工作小时超过4040小时,则超小时,则超过部分按原工资的过部分按原工资的1.51.5倍的加班工资来计算。若雇员每倍的加班工资来计算。若雇员每周工作小时超过周工作小时超过6060小时,则超过小时,则超过6060的部分按原工资的的部分按原工资的3 3倍的加班工资来计算,而倍的加班工资来计算,而4040到到6060小时的工资仍按照原工小时的工资仍按照原工资的资的1.51.5倍的加班工资来计算。倍的加班工资来计算。 输入说明:输入说明:小时工资和工作时间。小时工资和工作时间。输出说明:输出说明:
27、本周工资。本周工资。37/42/2-2.cpp#includeusing namespace std;int main(void) int pay, hour, wage;coutpayhour; if( hour = 40 ) wage = pay * hour;else if (hour =60) wage = 40*pay+(hour-40)*1.5*pay; else if( hour = 168 ) wage = 40*pay+20*1.5*pay+(hour-60)*3*pay;coutwageendl;return 0;38/42课堂实战课堂实战2-3问题描述:问题描述:输入三个
28、数,将它们按从小到大的顺输入三个数,将它们按从小到大的顺序输出。序输出。输入说明:输入说明:3个数据。个数据。输出说明:输出说明:按从小到大输出按从小到大输出3个数据。个数据。39/42/2-3.cpp#includeusing namespace std;int main(void) int x, y, z, t;cinxyz; if( x y ) t=x ; x=y; y=t; if( x z ) t=x ; x=z; z=t; if( y z ) t=y ; y=z; z=t; coutx“ ”y“ ”zendl;return 0;40/42本讲小结本讲小结程序员犹如一个钟表匠:程序员犹如一个钟表匠:(1)钟表几乎都是为他人而制作的。钟表几乎都是为他人而制作的。(2)尽量使钟表的外表简洁美观、含义清晰。尽量使钟表的外表简洁美观、含义清晰。(3)留给用户一些简单的操作接口,将复杂的操作留给用户一些简单的操作接口,将复杂的操作包装在内部。包装在内部。41/42作业及实验作业及实验网址:网址:http:/http:/ 1&2 时长时长2020天天第第1 1次实验:次实验: HZAU-HZAU-专业专业C+C+实验实验1 1 实验当天结束实验当天结束请注意截止时间!请注意截止时间!42/42