高级语言程序设计(C语言版 第2版)-基于计算思维能力培养 课件全套 第1-10章-程序设计引论-C综合性程序设计案例分析_第1页
高级语言程序设计(C语言版 第2版)-基于计算思维能力培养 课件全套 第1-10章-程序设计引论-C综合性程序设计案例分析_第2页
高级语言程序设计(C语言版 第2版)-基于计算思维能力培养 课件全套 第1-10章-程序设计引论-C综合性程序设计案例分析_第3页
高级语言程序设计(C语言版 第2版)-基于计算思维能力培养 课件全套 第1-10章-程序设计引论-C综合性程序设计案例分析_第4页
高级语言程序设计(C语言版 第2版)-基于计算思维能力培养 课件全套 第1-10章-程序设计引论-C综合性程序设计案例分析_第5页
已阅读5页,还剩1400页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级语言程序设计高级语言程序设计——基于计算思维能力培养高级语言程序设计——基于计算思维能力培养第1章程序设计引论主要内容计算机科学与问题求解程序与程序设计程序设计语言C语言简介C语言程序开发工具与开发步骤本章思维导图计算机科学与问题求解1.11.1计算机科学与问题求解维基百科(Wikipedia)关于计算机科学(ComputerScience,缩写为CS)的定义是:系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。美国计算机学会(ACM)指出计算机科学是“计算机和算法过程”的研究,包括它们的原理、它们的硬件和软件设计、它们的应用以及它们对社会的影响”。CS又称计算学科(ComputingDiscipline)。计算机学科的根本问题是:什么能、且如何被有效地自动计算。1.1计算机科学与问题求解问题求解是指人们在生产、生活中面对新的问题时,由于缺少现成的有效对策所引起的一种积极寻求问题答案的活动过程。问题求解是计算科学的根本目的,计算科学多半也是问题求解的实践中发展起来的。1.1计算机科学与问题求解图1-1借助于计算机的问题求解过程1.1计算机科学与问题求解尽管关于计算机科学定义有许多种,但它们实质上都强调了算法的研究。算法是一组明确的,有效可计算操作的有序集合,它能在有限的时间内结束,并产生计算结果。1.1计算机科学与问题求解迷宫搜索如果我们可以指定一个算法来解决问题,那么我们就可以对该问题进行自动化的求解。计算机算法最终需要通过程序设计来实现,程序设计使得计算机科学成为实验学科而非纯理论学科。1.1计算机科学与问题求解2006年,美国Carnegie

Mellon大学计算机科学系前系主任周以真(JeannetteM.Wing)教授在CommunicationsoftheACM杂志发表了一篇《ComputationalThinking》(计算思维)的文章。1.1计算机科学与问题求解计算思维是指运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维强调一切皆可计算,从物理世界模拟到人类社会的模拟,从人类社会模拟再到智能活动,都可以认为是计算的某种形式。将计算思维贯穿于理论教学和实践应用,将有助于促进知识向能力的转化。1.1计算机科学与问题求解1.1计算机科学与问题求解1.1计算机科学与问题求解主要内容计算机科学与问题求解程序与程序设计程序设计语言C语言简介C语言程序开发工具与开发步骤程序与程序设计1.2程序并非计算机专利,《舌尖上的中国》第二季第2集《心传》——空心挂面加工:和面、搓条、盘条、上筷子、阴条、分筷子、再阴条、出筷子、装封。1.2.1程序计算机程序(ComputerProgram)是指一组指示计算机或其他具有信息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。计算机(硬件)本身并不是一个智能设备,它需要运行特定的程序才能完成特定的任务。1.2.1程序像平常大家用的QQ、支付宝等都是应用程序。1.2.1程序图1-2利用全景拍摄软件拍摄的全景照(拍摄于DevilsTower,USA)在手机上安装全景拍摄程序后,就可以将连续拍摄的照片拼接成全景照片,上面这幅全景照拍摄于美国的魔鬼峰1.2.1程序

图1-3电波钟表

图1-4车载行车电脑利用车载行车电脑中的程序可以记录汽车的速度,油耗温度等信息。随着信息技术的普及,需要更多的程序来满足不同应用的需求。1.2.1程序1.2.1程序程序设计,简单地讲就是设计“程序”的过程,程序设计是创造性劳动。因此,程序员成为一种热门职业。温度等信息。随着信息技术的普及,需要更多的程序来满足不同应用的需求。1.2.2程序设计程序设计并非计算机科学的全部。1.2.2程序设计主要内容计算科学与问题求解程序与程序设计程序设计语言C语言简介C语言程序开发工具与开发步骤程序设计语言1.3机器语言0,1二进制代码,机器可以唯一识别的语言1.3.1程序设计语言的分类汇编语言用指令助记符来表示机器指令。1.3.1程序设计语言的分类高级语言用接近自然语言的代码来书写程序。例如:printf(“%d”,1+2);System.out.print(1+2);1.3.1程序设计语言的分类高级语言历史上共出现2000多种。例如:VisualC# JavaPHP JavaScriptObjective-C1.3.1程序设计语言的分类编译型解释型虚拟机型图1-5编译连接示意图1.3.2程序的执行方式图1-6解释流程示意图

1.3.2程序的执行方式编译型解释型虚拟机型图1-7虚拟机工作原理示意图1.3.2程序的执行方式编译型解释型虚拟机型1.要把高级语言编写的源程序转换为目标程序,需要使用()。驱动程序编辑程序编译程序链接程序ABCD提交单选题5分主要内容计算科学与问题求解程序与程序设计程序设计语言C语言简介C语言程序开发工具与开发步骤C语言简介1.41972年产生于Bell实验室1.4C语言简介KenThompson江湖人称kenDennisM.Ritchie江湖人称dmr1.4C语言简介1969年,贝尔实验室,KenThompson和DennisM.Ritchie梦想能遨游宇宙Ken设计了一款电子游戏——“SpaceTravel”游戏在PDP-7小型机上开发,因为这台机器免费,免费的机器没有操作系统玩游戏之前,先给PDP-7做个操作系统,命名为“UNIX”1.4C语言简介汇编编写UNIX太慢,又没有称手的高级语言,怎么办?70年代,将BCPL语言改造成更适合开发UNIX的B语言1971年,DennisM.Ritchie开始和Thompson合作开发UNIX,将B语言改造成C语言,1972年正式发布1.4C语言简介1983年,因为UNIX和C语言的巨大成功,ken和dmr共同获得当年度的计算机界最高奖——图灵奖经典CC++JavaC991.4C语言简介Ritchie和Unix的设计者KenThompson接受美国国家技术勋章1.4C语言简介语言简洁,功能强大应用广泛,对许多主流程序设计语言产生重要影响Cisquirky,flawed,andanenormoussuccess.1.4C语言简介TIOBE程序设计语言流行度排名数据来源(2022年1月)1.4C语言简介目前广泛应用于嵌入式系统开发可为学习C++、Java等其它程序设计语言打下基础图1-12华为鸿蒙操作系统图1-11Android操作系统1.4C语言简介2.用C语言编写的代码()。可立即执行是一个源程序经过编译即可执行经过解释才能执行ABCD提交单选题5分主要内容计算科学与问题求解程序与程序设计程序设计语言C语言简介C语言程序开发工具与开发步骤C语言程序开发工具1.5《论语》:“工欲善其事,必先利其器”VisualC++和Code::Blocks等。推荐使用:Code::Blocks或VisualC++。本书使用:

开源工具Code::Blocks20.03版Code::Blocks(简称CB),功能强大,支持C与C++,是一款跨平台的C/C++集成开发环境(IDE)。1.5C语言程序开发工具可以配置多种编译器,建议读者使用GCC编译器和GDB调试器。首页地址:http:://DownloadthebinaryreleaseforWindowscodeblocks-20.03mingw-setup.exe1.5C语言程序开发工具初始界面1.5C语言程序开发工具(方式一)新建consoleapplication

Project1.5C语言程序开发工具选择C语言1.5C语言程序开发工具输入ProjectTitle输入项目名称welcome选择存放路径1.5C语言程序开发工具设置编译器

设置编译器一般用默认选项1.5C语言程序开发工具Code::Blocks视图

编辑窗口Message窗口工程视图窗口编译运行编译并运行1.5C语言程序开发工具HelloWorld程序简介

编译预处理指令main函数首部main函数函数体1.5C语言程序开发工具程序运行结果

HelloWorld!Processreturned0(0x0)executiontime:0.042sPressanykeytocontinue.1.5C语言程序开发工具(方式二)建立单个C文件

1.5C语言程序开发工具(方式二)建立单个C文件#include<stdio.h>intmain(){

printf("welcometoC!\n");

printf("Thereisawillthereisaway!\n");

return0;}WelcometoC!Thereisawillthereisaway!1.5C语言程序开发工具需求分析设计编写源程序编译链接运行调试1.6C语言程序开发步骤程序调试#include<stdio.h>intmain(){

printf("welcometoC!\n") printf("Thereisawillthereisaway!\n"); return0;}缺少;号1.6C语言程序开发步骤调试(Debug)d:\c\ch1\1_1.c5 error:expected‘;’beforeprintf1.6C语言程序开发步骤Bug1.6C语言程序开发步骤Bug分类语法错运行时错误逻辑错1.6C语言程序开发步骤3.以下叙述中错误的是()。C语言比其他语言高级,具有其他语言的一切优点计算机只能接受和处理由0和1的代码组成的二进制或数据一个完整的C程序有且仅有一个主函数(main()函数)C语言程序的错误有语法错,运行时错误和逻辑错误三种ABCD提交单选题5分4.以下叙述中正确的是()。构成C程序的基本单位是函数,所有的函数名都可以由用户自行命名分号是C语句之间的分隔符,不是语句的一部分C程序中的每行只能写一条语句C程序中的注释部分可以出现在程序中任何合适的地方ABCD提交单选题1分1、CodeBlock的安装与使用(1)访问,下载CB安装包,自行安装CB软件。分别采用建工程(Project)方式和单个C文件方式编写输出“HelloWorld!”的程序,并编译运行。(2)熟悉CB菜单主要选项功能,在【Settings】|【Editor】菜单中,对编辑器字体和字号进行个性化设置。(如,试把字体设置为Cambria,字形为粗体,大小为24)(3)在【Setting】|【CompilerandDebugger】|【Toolchainexecutables】选项卡查看编译器安装位置。(4)熟悉Code::Blocks常用操作快捷键,熟练地掌握和使用这些快捷键可以有效提高编程效率,节约时间。实验一编辑部分:Ctrl+A:全选 Ctrl+C:复制

Ctrl+X:剪切 Ctrl+V:粘贴

Ctrl+Z:撤销 Ctrl+S:保存

Ctrl+Y:重做

Ctrl+Shift+C:注释掉当前行或选中块实验一编辑部分:Ctrl+Shift+X:解除注释

Tab:缩进当前行或选中块Shift+Tab:减少缩进

按住Ctrl,滚动鼠标滚轮,放大或缩小字体实验一编译与运行部分:Ctrl+F9:编译

Ctrl+F10:运行上次成功编译后的程序Ctrl+Shift+F9:编译当前文件(而不是当前打开的工程项目)F9:编译并运行当前代码(如果编译错误会提示错误而不会运行)实验一编译与运行部分:Shift+F11:全屏关开

Ctrl+C:终止正在运行的程序界面部分:Shift+F2:左侧导航栏开关键实验一2、VisualC++的安装与使用。全国计算机等级考试二级C语言程序设计考试大纲(2022版)规定的开发环境为MicrosoftVisualC++2010学习版,请自行安装,并在其中创建C程序,在屏幕上分行输出自己的学号、姓名和E-mail。实验一高级语言程序设计——基于计算思维能力培养第2章数据类型、运算符与表达式主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式本章思维导图C程序基本结构2.1#include<stdio.h>/*

@函数名称:getMax

@入口参数:两个整型形式参数a,b

@函数功能:返回两个形式参数中的较大者 @文件名:2_1.c*/注释【例2.1】C语言程序示例。2.1C程序基本结构intgetMax(inta,intb){intm;if(a>b)m=a;else m=b;returnm; /*如果a>b,则返回a,否则返回b*/}函数名称函数体2.1C程序基本结构/* @函数名称:main()

@函数功能:主函数*/intmain(){intx,y,z; /*变量定义*/printf("Pleaseinputtwointegers:");scanf("%d%d",&x,&y); /*输入两个整数*/

2.1C程序基本结构z=getMax(x,y);/*调用函数max求x,y中的较大者存入z*/printf("较大的数是:%d\n",z);

/*输出z的值*/return0;}函数调用z=max(x,y);intmax(inta,intb){…returnm;}2.1C程序基本结构语句分隔符;2.1C程序基本结构主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式C程序中

常见的符号2.21、标识符:用于标识程序中的函数、变量等对象的名称统称标识符。系统预定义标识符用户自定义标识符2.2C程序中常见的符号命名规则:(1)英文字母或下划线开头,中间可以是数字或英文字线、下划线等。(2)见名知意例:max,a,b,m,sum,_price,my@name,9cd2.2C程序中常见的符号2、关键字:又称保留字,它们是C语言中预先规定的具有固定含义的标识符。 int表示整数类型char表示字符类型return表示返回主调函数。

用户在自定义标识符不能与关键字相同。例如:2.2C程序中常见的符号

3、运算符:C语言的运算符有34种,如加、减、乘、除,分别表示为:+、-、*、/按运算对象分:单目运算符,如求负(-),自增(++)等双目运算符,如+、-三目运算符,唯一一个,条件运算符?:2.2C程序中常见的符号4、数据:程序的加工对象,分为常量与变量。常量是指程序运行过程中保持不变的量。如:"Pleaseinputtwointegers:"2.2C程序中常见的符号4、数据:程序的加工对象,分为常量与变量。变量是指程序运行过程中可以修改的数据,一般对应内存单元。如:intx,y,z;2.2C程序中常见的符号5、分隔符与其它符号空格、回车、逗号、分号都是有效的分隔符。{、}、/*和*/等具有特定含义的符号块注释则包含在“/*”与“*/”之间。2.2C程序中常见的符号1.下列选项中不是C语言合法的自定义标识符的是()。sum01Flagpriceofbeef_priceABCD提交单选题5分主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式数据类型2.3处理输入设备输出设备数据数据2.3数据类型(1)将牛肉切成大小适中的小块(2)将每个土豆均匀切成4小块(3)倒入50ml油,大火加热…数据处理步骤2.3数据类型2.3数据类型基本数据类型和构造数据类型整数型、浮点型、字符型、字符串型和布尔型。数据类型决定了:该变量能够存放数据的类型该变量占用内存占用的空间大小能够对该变量执行的操作为何要区分数据类型?2.3数据类型图2-5炊具和餐具的类型决定了其功能与用途2.3数据类型高级语言中的同一种数据类型又根据需要存储数据的范围区分成了不同的类别。如,在C语言中整型可分为:基本整型(int)短整型(shortint)长整型(longint)2.3数据类型2.3数据类型int整数,在目前绝大多数机器上占4个字节float单精度浮点数,4个字节double双精度浮点数,8个字节2.3数据类型char字符,1个字节,表示256个ASCII字符,或0~255的整数shortshortint,简写为short,短整数,2个字节2.3数据类型longlongint,简写为long,长整数,4个字节Longlongint,8个字节longdouble,长双精度(高精度)浮点数,10个字节unsigned用来修饰char、int、short和long无符号整数(正整数和0)2.3数据类型类型名范围存储大小char0~2551个字节shortint-215(-32768)~215-1(32767)2个字节int-231(-2147483648)~231-1(2147483647)4个字节unsignedint0~232-14个字节longlonglong-231(-2147483648)~231-1(2147483647)-263~263-14个字节8个字节float-3.4×10-38~3.4×1038精度为6位有效数字4个字节double-1.7×10-308~1.7×10308精度为15位有效数字8个字节如何知道变量占用的内存大小?2.C语言中,错误的int类型的常数是()。1E500370xafABCD提交单选题5分sizeof是C语言的运算符,并非函数,用于计算类型占用的字节数用法:sizeof(类型)结果为类型占用的字节数sizeof(变量名)结果为表达式值所属类型占用的字节数2.3数据类型#include<stdio.h>intmain(){ printf("数据类型

字节\n"); printf("char%d\n",sizeof(char)); printf("short %d\n",sizeof(short)); printf("int %d\n",sizeof(int)); printf("unsigned %d\n",sizeof(unsigned)); printf("long %d\n",sizeof(long)); printf("longlong%d\n

",sizeof(longlong)); printf("float %d\n",sizeof(float)); printf("double %d\n",sizeof(double)); return0;}【例2.2】测试各种数据类型占用的内存空间数据类型

字节char 1short 2int 4unsigned 4long 4longlong 8float 4double 82.3数据类型主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式常量2.4整型常量字符型常量实型常量字符串常量2.4常量整型常数的表示形式(1)十进制整数:

如2008、+1975、-1,18u,123L,140Lu(2)八进制整数:

例如,012表示(12)8,-020表示(-20)8。(3)十六进制整数:

例如,0x20表示十六进制的(20)16,同理0x2A3B表示十六进制数(2A3B)16整型常量默认为int型2.4.1整型常量实型常量的表示形式(1)十进制小数表示形式

如.56、3.1415926、-96.25f、20.(2)指数形式

例如,314.15926e-2、0.031415926E2。注意:e4,2E4.5,.e8都是不合法的表示形式。浮点型常量默认为double型2.4.2实型常量C语言中用单引号括起来的单个字符为字符常量。如‘A’,‘9’等。ASCII码

b7b6b5b4b3b2b1b001000001附录B是常用字符的ASCII码表2.4.3字符常量小写字母‘a’的ASCII码为97大写字母‘A’的ASCII码为65大写字母与其对应的小写字母的ASCII码相差32。将一个大写字母的ASCII码加上32可以将它转换成对应的小写字母;数字字符‘0’的ASCII码为48。

2.4.3字符常量字符含义字符含义‘\n’换行(Newline)‘\a’响铃报警提示音(AlertorBell)‘\r’回车(不换行)(CarriageReturn)‘\”’一个双引号(DoubleQuotationMark)‘\0’空字符,通常用作字符串结束标志‘\’’单引号(SingleQuotationMark)‘\t’水平制表(HorizontalTabulation)‘\\’一个反斜线(Backslash)‘\v’垂直制表(VerticalTabulation)‘\?’问号(QuestionMark)‘\b’退格(Backspace)‘\ddd’1到3位八进制ASCII码值所代表的字符‘\f’走纸换页(FormFeed)‘\xhh’1到2位十六进制ASCII码值所代表的字符转义字符‘\n’:换行‘\t’:水平制表‘\b’:退格‘\ddd’‘\xhh’3.下列转义字符中错误的是()。'\000''\r''\x111''\2'ABCD提交单选题5分例如:printf(“Hesaid\”Ilikeclanguageverymuch.\”\n”);输出结果为:Hesaid”Ilikeclanguageverymuch.”转义字符用双引号括起来的串如:"Helloworld!","a","中国","3.14159"等。

2.4.4字符串常量可用#define宏定义宏常量例如,若有定义:#definePI3.1415926则area=PI*10.2*10.2;等价于area=3.1415926*10.2*10.2;

注意:后面不需加;号2.4.5宏常量变量2.5变量的本质是内存或CPU中的寄存器,其值可以改变。使用变量前要需根据存储的数据类型与数据范围选择相应的变量类型。2.5变量例如:intlength;floatarea,volume;charanswer,selection;ANSIC变量使用基本原则变量必须先声明,后使用;所有变量必须在第一条可执行语句前声明;声明的顺序无关紧要;一条声明语句可声明若干个同类型的变量。2.5.1变量的声明每一条完整的声明语句都要以分号结尾;在同一个函数中,不能声明同名的多个变量。变量的命名规则同用户自定义标识符的命名规则,同时遵循见名知意的原则。

2.5.1变量的声明新定义的变量其值为不确定数据。inta,b;charc;floatarea;2.5.2变量初始化inta=20,b=30;charc=‘A’;floatarea;2.5.2变量初始化新定义的变量其值为不确定数据。简单赋值语句语法:

变量=

表达式;Don’tforgetthesemicolon!!Everyassignmentexpressionhasavalue2.5.3变量的访问与使用例如:a=b; 30b=0; c=c+1;0662.5.3变量的访问与使用对变量进行赋值时,赋值语句右边的表达式类型应该与赋值语句左边的变量类型相容。ValidExample: InvalidExample:

intx; charc; x=20; c=“Hello”;2.5.3变量的访问与使用多重赋值语句语法:变量1=

变量2=

表达式;Don’tforgetthesemicolon!!右结合:从右向左赋值变量1=(变量2=表达式);2.5.3变量的访问与使用Example:inta,b;intc;a=b=c=0;b??a??

c??0002.5.3变量的访问与使用多重赋值语句显示变量的值printf(“a:%d\n”,a);a:30注意:%d仅用于int型变量,如果要显示字符型,可以用%c来代替%d。如果要显示float型变量,则需要用%f。默认情况下,%f会显示出小数点后6位数字。2.5.3变量的访问与使用4.下列选项中正确的变量声明与初始化语句是()。inta=b=10;chara='我';floata=10;doublea=∞;ABCD提交单选题5分5.下列数据中,不是C语言常量的是()。'\n'"a"e-2012ABCD提交单选题5分主要内容C程序基本结构C程序中常见的符号数据类型常量与变量运算符与表达式运算符与表达式2.6算术运算符关系运算符逻辑运算符赋值运算符条件运算符逗号运算符指针运算符自增(自减)运算符求字节运算符和特殊运算符2.6运算符与表达式Example:x+y操作数(Operand)运算符(Operator)操作数(Operand)2.6运算符与表达式2.6.1算术运算符Addition(+)Subtraction(-)Multiplication(*)Division(/)Modulus(%)(x+y)/2-(a*b-(a+b))/(x-y)(x+y)/2-(a*b-a-b)/(x-y)2.6.1算术运算符除法/Division浮点数除法(FloatingDivision)xoryorbotharefloats整数除法(IntegerDivision)xandyareintegersExample:x/y除法/DivisionExample:anintegeraninteger

theresultisalsoaninteger11/2=5除法/DivisionExample:andoubleaninteger

theresultisalsoandouble11.0/2=5.5求余%(Modulus)操作数必须为整数Example:11%3=2anintegeranintegertheresultistheremainderof11/3113392remainderresult求余(Modulus)余数符号与被除数同号Example:-26%-8=-2anintegeraninteger-26-83-24-2remainderresulttheresultistheremainderof-26/-8求余(Modulus)Example:15%-4=3anintegeraninteger15-4-3123remainderresulttheresultistheremainderof15/-4余数符号与被除数同号#include<stdio.h>intmain(){inta=17,integerResult;floatb=17.0,floatResult;integerResult=a/2;printf("integerResult:%d\n",integerResult);floatResult=b/2;printf("floatResult:%f\n",floatResult);printf("Remainderof(7+79)and24is:%d",(7+79)%24);return0;}integerResult:8floatResult:8.500000Remainderof(7+79)and24is:14【例2.3】写出下面程序的输出结果。如何分离个位、十位、百位数字?个位:153%10

=3十位:153/10%10=5百位:153/100=1【例2.4】利用算术运算符求一个三位整数的百位数、十位数和个位数,并输出它们和与乘积。#include<stdio.h>intmain(){intx,b0,b1,b2,sum,product;x=153;b0=x%10;

//求个位数b1=x/10%10;

//求十位数b2=x/100;

//求百位数sum=b0+b1+b2;product=b0*b1*b2;printf("b2=%d\tb1=%d\tb0=%d\n",b2,b1,b0);printf("sum=%d\tproduct=%d\n",sum,product);return0;}b2=1b1=5b0=3sum=9product=157.设floatc,f;,将数学表达式c=(f-32)正确表示成C语言赋值表达式的是()。c=5*(f-32)/9c=5/9(f-32)c=5/9*(f-32)c=5/(9*(f-32))ABCD提交单选题5分2.6.2运算符的优先级与结合性当算术表达式包含两个或两个以上的算术运算符时

首先要确定运算顺序所有的运算符都有一个优先级

(OrderofPrecedence)

附录C——运算符的优先级与结合性不同优先级时的运算顺序:——从高到低

例如:*,/,%

优先级大于+、-相同优先级时的运算顺序:——左结合为从左到右,右结合为从右到左例如:算术运算为左结合,赋值运算为右结合2.6.2运算符的优先级与结合性除后置++、--运算符之外的一元运算符和三元运算符均为右结合;除赋值运算符之外的所有二元运算符均为左结合。自增和自减运算符(++和--)用作后缀运算符时(比如x++)具有较高的优先级。运算符的优先级不需要去死记硬背,编写程序时可以通过使用()来改变表达式的计算顺序。2.6.2运算符的优先级与结合性5+2+4*3-6=?例:算术表达式计算顺序71219-6=13=135+2+4*(3–6)=?利用()改变计算顺序:7-3=-5-12=-572.6.3关系运算符运算符意义范例结果<

小于10<90<=小于或等于8<=201>

大于10>81>=大于或等于8>=100==等于10==101!=不等于9!=90例如,表达式10+30<10+40等价于(10+30)<(10+40)。2.6.3关系运算符注意不要直接判断两个浮点数是否相等。注意区别C语言的关系表达式与数学中的关系表达式。在数学中10<x<20,表示x∈(10,20)在C语言中能用10<x<20表示x∈(10,20)吗?2.6.4复合赋值运算符Syntax:

变量x=变量x

运算符op

表达式;

变量x

运算符op=表达式;例如:

x=x+10;可写成:x+=10;2.6.4复合赋值运算符Example:num=num+2;num15

15+2

1717Example:num+=2;similarto

num=num+2shorthandassignmentoperator2.6.4复合赋值运算符运算符复合赋值运算例子计算过程+=num+=2;num=num+2;-=num-=2;num=num–2;*=num*=a+b;num=num*(a+b);/=num/=a-b;num=num/(a-b);%=num%=2;num=num%2;2.6.4复合赋值运算符例如,若有变量定义intx=10;则表达式: x*=2+3;等价于: x=x*(2+3); (x的结果为50)而不是: x=x*2+3;

(x的结果为23)例如,若有变量定义inta=10,b=20,c=30;表达式a+=b+=c;等价于a+=(b+=c); //执行完后a的值为60,b的值为50,c的值为30执行后,a,b,c的值分别是?2.6.4复合赋值运算符再如,若有变量定义inta=3;表达式 a+=a*=a-=1;的计算顺序为:a-=1; //a=2a*=a; //a=4a+=a;

//a=82.6.4复合赋值运算符8.设floatm=4.0,n=4.0;,使m为10.0的表达式是()。m-=n*2.5m/=n+9m*=n-6m+=n+2ABCD提交单选题5分2.6.5++和--运算符x++,x--,++x,--x++让参与运算的变量加1,--让参与运算的变量减1作为后缀(postfix)运算符时,先取x的值参与表达式计算,然后x自身加/减1y=x++;y=x;x=x+1;2.6.5++和--运算符x++,x--,++x,--x++让参与运算的变量加1,--让参与运算的变量减1作为前缀(prefix)运算符时,先将x的值加1,然后再取x的值参与表达式计算y=++x;x=x+1;y=x;Example:y=x++-2x10similartoy=x–2;x=x+1;后缀(Postfix)增1和减1运算符y??811Example:y=++x-2x10similartox=x+1;y=x–2;y??911前缀(Prefix)增1和减1运算符y=-x++; printf("x:%d,y:%d\n",x,y); x10similartoy=-(x++);后缀(Postfix)增1和减1运算符11y10-10x=x+1;printf(“x:%d,y:%d\n",x,y);x:11,y:-102.6.5++和--运算符良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次增1或者减1运算过多的增1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果9.若定义了inta,x,y;,则下列语句中不正确的是()。x=y=5;++x;x=y+=x*30;a=y+x=30;ABCD提交单选题5分表达式的类型转换2.72.7表达式的类型转换赋值表达式的类型转换char,shortintunsignedlongunsignedlonglonglonglongdoubledoublefloat2.7表达式的类型转换不当的赋值将导致溢出2.7表达式的类型转换例如,有变量定义:inta=2;longb=10;doublec=25;floatsum=0;sum=‘A'+2*a+b*c的计算过程:2.7表达式的类型转换强制类型转换

(类型说明符)表达式(float)(x+y) 将x+y的值转换成float类型。(int)a+b 将a的值取出转换为int型再与b相加。(double)b 取出变量b的值转换为double型#include<stdio.h>intmain(){constfloatpi=3.1415926;//定义const常量floatr=5.0;doublelength,area;length=2.0*pi*r; //计算圆的周长area=pi*r*r; //计算圆的面积printf("length=%f\n",length);//输出圆的周长printf("area=%f\n",area);//输出圆的面积return0;}length=31.415924area=78.539810【例2.6】计算并输出圆的周长和面积。(const常量示例)10.设inta=9,b=20;,则printf("%d,%d\n",a--,--b);的输出结果是()。9,199,2010,1910,20ABCD提交单选题5分11.C语言中运算对象必须是整型的运算符是()。%=/=<=ABCD提交单选题5分12.设intj=5;,则执行语句j+=j-=j*j;后,j的值是

[填空1]

。作答填空题5分13.设intx=2,y=5;,则表达式x+++y的值是

[填空1]

;printf("%d",x<y<4);语句输出的结果是

[填空2]

。作答填空题10分实验二1.改正下面程序的错误,并调试运行。#include<stdio.h>intmain(){intx=23;floaty=56.35;printf("x=%d\n",x);printf("y=%d\n",y);}实验二2.调试下面的程序,分析程序的输出结果。

#include<stdio.h>intmain(){inta=68,b=2;floatx=12.3,y=2.6;printf("%f\n",(float)(a*b)/2);printf("%d,%d\n",(int)x%(int)y,a-1);}实验二3.所谓反序数,就是将整数的数字倒过来后所形成的整数,如1234的反序数是4321。已知a为4位整数,编写程序,求其反序数存入变量b后输出。例如,a=1234,则应输出b=4321。4.编写程序,已知立方体的长、宽、高,计算立方体的体积和各侧面面积并输出。实验二5.在Code::Blocks中建立一个project,在main函数中定义一些未经初始化的变量,通过CB的单步调试功能观察变量的值。进一步熟悉Code::Blocks集成开发环境。实验二6.在CB中建立C工程文件,输入如图2-11(a)所示程序代码,在第7行x=x+1;处设置断点,单步执行程序,观察执行x=x+1;语句前后变量x的值的变化情况,分析图2-11(b)所示的数据溢出情况产生的原因。实验二(a)设置断点(b)单步执行x=x+1;语句图2-11利用单步调试观测变量溢出情况高级语言程序设计——基于计算思维能力培养第3章算法与简单C程序设计主要内容C语句C程序输入、输出操作的实现算法简单程序设计举例实验三本章思维导图C语句3.1表达式语句z=x*y+6;i++;空语句;复合语句

{ …}3.1C语句C程序输入/输出操作的实现3.23.2.1字符输入/输出通过调用标准库函数来实现#include<stdio.h>字符输出函数putchar(c)

输出一个字符c字符输入函数getchar()

无参数函数值为从输入设备接收的字符#include<stdio.h>intmain(){chara='n',b='i';intc=99;putchar(a-32);

//输出大写字母Nputchar(b);putchar(c);putchar(c+2);putchar('\n'); //输出换行符return0;}Nice

【例3.1】putchar函数应用举例。#include<stdio.h>intmain(){chara,b;a=getchar();b=getchar();putchar(a);putchar(b);return0;}AB↙ABAB↙A【例3.2】getchar函数应用举例。#include<stdio.h>intmain(){inta=65;longb=1234567;floatc=12.34567;printf("%c,%d,%6d,%-6d,%1d\n",a,a,a,a,a);printf("%ld,%8ld,%4ld\n",b,b,b,a);

//此处输出项列表比格式转换符多出一项printf("%f,%10f,%10.2f,%-10.2f\n",c,c,c,c,c);printf("%s,%8.6s,%-8.3s\n","Hello","Hello","Hello");return0;}【例3.3】格式输出程序示例。【例3.3】格式输出程序示例。printf()函数printf(“格式串”,表达式1,表达式2,…);3.2.2格式输入/输出格式转换控制字符表类型说明类型说明d以带符号的十进制形式输出整数(正数不输出符号)c以字符形式输出,只输出一个字符o以八进制无符号形式输出整数(不输出前导符0)s输出字符串x十六进制无符号整数(小写字母a~f)f以小数形式输出单、双精度数、默认输出6位小数X十六进制无符号整数(大写字母A~F)e十进制指数(小写e)u以无符号十进制形式输出整数E十进制指数(大写E)g,G选用%f或%e格式中输出宽度较短的一个格式在格式说明中,%和上述格式转换字符之间可以按以下顺序插入如下附加字符:%+、-、#m.nh、l格式字符↓↓↓↓↓↓开始符标志字符宽度

指示符精度

指示符长度

修正符格式转换字符printf函数附加字符表字符说

明标志字符-输出的数字或字符在域内向左对齐,右端补空格,缺省是左对齐+输出数据为正是冠以+号,为负时冠以-号,缺省时正数不输出+号#八进制输出时加前缀0,十六进制输出时加前缀0x宽度指示m指示输出项所占的最小宽度。当m小于数据实际宽度时,按实际宽度输出。例如,printf(“%3d”,1234);实际输出为:1234字符说

明精度指示.n对实数,表示输出n位小数;对字符串,表示截取的字符个数。例如,printf(“%6.2f”,12.3467);长度修正字母l用于长整数,可加在格式字符d,o,x,u之间字母h用于短整数,可加在格式字符d,o,x,u之间printf函数附加字符表(续)输出结果为:_12.35(_代表空格)例:printf("%6d\n",123);printf("%-6d\n",123);输出结果为:123123又如,printf(“%+d,%+d\n”,123,-123);输出结果为:+123,-123例:

若要输出八进制或十六进制,可以使用以下形式:printf(“%o,%x\n”,10,16);输出结果为:12,10例:#include<stdio.h>#include<stdio.h>intmain(){inta=97;longb=1234567;floatc=12.34567;printf("%c,%d,%6d,%-6d,%1d\n",a,a,a,a,a);printf("%ld,%8ld,%4ld\n",b,b,b,a);//此处输出项列表比格式转换符出多一项

printf("%f,%10f,%10.2f,%-10.2f\n",c,c,c,c,c);printf("%s,%8.6s,%-8.3s\n","Hello","Hello","Hello");return0;}【例3.3】格式输出程序示例。a,97,97,97,971234567,1234567,123456712.345670,12.345670,12.35,12.35Hello,Hello,Hel【例3.3】格式输出程序示例。编译程序不对输出项列表的项数与格式转换符个数进行检查,当输出项列表多于格式转换符时,多余的项将不被输出。反之,则可能出现运行时错误。此外,当格式转换符与输出项的类型不匹配时,编译程序也不做检查,但在运行时将得到不正确的运行结果。初写程序时要特别注意,不要误用%d输出float和double的表达式,同理,也不能用%f输出int型的表达式。提示

但%d可输出字符的ASCII码,反之,%c可以输出ASCII码值对应的字符。 scanf(“格式控制串”,地址列表);%*mh、l格式字符↓↓↓↓↓开始符赋值抑制符宽度指示符长度修正符格式转换字符scanf格式字符类型说明d输入有符号的十进制整数u输入无符号的十进制整数o输入无符号的八进制整数x,X输入无符号的十六进制整数(大小写作用相同)c输入单个字符s输入字符串。将字符串送到一个字符数组中,在输入时以非空格白字符开始,以第一个空白字符结束。字符串以串结束标志’\0’作为其最后一个字符scanf格式字符类型说明f输入float型实数,可以用小数形式或指数形式输入;输入double型实数,需用%lfe,E,g,G与f作用相同,e与f,g可以互相转换。注意,输入double数据需加前缀lscanf格式字符例如:inta;doubleb;scanf(“%d%lf”,&a,&b); 输入1212.34↙后变量a获得12,变量b获得12.34。scanf格式字符若将输入语句改成:scanf(“%d,%lf”,&a,&b);则输入格式应为:12,12.34↙scanf格式字符同理,scanf(“a=%d,b=%lf”,&a,&b);输入时应采用以下格式:a=12,b=12.34↙scanf格式字符#include<stdio.h>intmain(){inta;charb;

printf("PleaseinputanintegerandthenpressEnter:");scanf("%d",&a);printf("a=%d\n",a);

printf("PleaseinputancharacterandthenpressEnter:");scanf("%c",&b);printf("b=%c\n",b);return0;}PleaseinputanintegerandthenpressEnter:12↙a=12PleaseinputancharacterandthenpressEnter:b=方法1:增加getchar();方法2:改为scanf(“%c”,&b)【例3.4】scanf函数输入示例。宽度指示符用十进制整数指定输入数据的最大宽度,例如:scanf(“%3d”,&a);若输入12345,则仅把前3位数123赋值给整型变量a,其余部分驻留在键盘缓冲区。宽度指示符又如:scanf(“%3d%3d”,&a,&b);若输入数据12345,则把前3位123赋值给整型变量a,而把后两位45赋值给变量b。宽度指示符赋值抑制符“*”

赋值抵制符“*”表示输入项读入后不赋值给相应的变量,即跳过该输入值。

例如:scanf(“%d%*d%d”,&a,&b);

若输入101112↙

则把10赋值给变量a,11被读入但未被赋值给变量b,12被赋值给变量b。长度修正符

长度修正符h和l分别用于输入短整数和长整数,另外l还可加在格式转换符f前,用于输入double型变量的值。

例如:doublex;scanf(“%lf”,&x);常见错误举例inta,b;floatx;scanf(“%d”,a);scanf(“a=%d\n”,&a);scanf(“%7.2f”,&x)scanf(“%d%d”,&a,&b);12,34↙#include<stdio.h>intmain(){constfloatpi=3.1415926; //定义const常量floatr;doublelength,area;

printf("Pleaseinputradiusofacicle:");

scanf("%f",&r); //输入圆的半径【例3.5】修改例2.6,从键盘接收用户输入的圆的半径,计算并输出圆的周长和面积。

length=2.0*pi*r; //计算圆的周长

area=pi*r*r; //计算圆的面积printf("length=%f\n",length);//输出圆的周长printf("area=%f\n",area); //输出圆的面积return0;}【例3.5】修改例2.6,从键盘接收用户输入的圆的半径,计算并输出圆的周长和面积。1.设intx;,则下列选项中错误的输入语句是()。scanf("%d",x);scanf("%d",&x);scanf("%o",&x);scanf("%x",&x);ABCD提交单选题5分2.执行语句printf("|%9.4f|\n",12345.67);后的输出结果是()。|2345.6700||12345.6700||12345.670||12345.67|ABCD提交单选题5分3.若在下面程序运行时输入123456,程序的输出结果是什么?

[填空1]

[填空2]

作答#include<stdio.h>intmain(){inta,b;scanf("%2d%*2s%2d",&a,&b);printf("%d,%d\n",a,b);return0;}填空题10分算法3.3AlgorithmsDataStructuresPrograms+=N.Wirth著名论断:高德纳(DonaldE.Knuth):“计算机科学就是算法的研究”3.3算法3.3.1问题求解过程中算法的作用

利用计算机进行问题求解,根本上就是弄清楚两个基本问题,一是“做什么”,二是“怎么做”。

即What和How的问题。

算法设计回答的就是“怎么做”的问题。

对同一个问题,往往有不同的解题方法,各种方法有优劣之分。检索(查找)检索(查找)数据检索算法胡强查询结果:5条记录计算机是如何帮用户查找数据的?顺序检索序号班级名称姓名学号022级网络工程聂加望2208066047122级网络工程潘杰2208066048222级网络工程秦彪2208066049322级网络工程邱强22080660514

522级网络工程唐重喜2208066054012查询姓名为谭青的同学22级网络工程谭青2208066053

34422级网络工程谭青2208066053

序号班级名称姓名学号022级网络工程聂加望2208066047122级网络工程潘杰2208066048222级网络工程秦彪2208066049322级网络工程邱强2208066051

522级网络工程唐重喜2208066054012422级网络工程谭青2208066053

3456顺序检索查询姓名为邹婕的同学“瞎子”找真币假币假币假币假币假币假币顺序检索

超市若有10000种不同货品,每扫描一个条码时需要在10000种不商品中寻找这件商品的名称和价格。若1秒内查询1000次,查完全部货物耗时10秒。顺序检索顺序检索效率太低!无法满足应用要求!怎样提高检索效率?顺序检索猜价格二分检索123456….4096查询关键字15002048二分检索查询关键字15001024二分检索查询关键字15001536二分检索序号班级名称姓名学号022级网络工程聂加望2208066047122级网络工程潘杰2208066048222级网络工程秦彪2208066049322级网络工程邱强22080660514

522级网络工程唐重喜2208066054l=0查询学号为2208066053的同学22级网络工程谭青2208066053

422级网络工程谭青2208066053

r=5midl=3mid序号班级名称姓名学号022级网络工程聂加望2208066047122级网络工程潘杰2208066048222级网络工程秦彪2208066049322级网络工程邱强22080660514

522级网络工程唐重喜2208066054l=0查询学号为2208066052的同学422级网络工程谭青2208066053

r=5midl=3mid二分检索序号班级名称姓名学号022级网络工程聂加望2208066047122级网络工程潘杰2208066048222级网络工程秦彪2208066049322级网络工程邱强22080660514

522级网络工程唐重喜2208066054查询学号为2208066052

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论