《C语言程序设计案例教程》全套教学课件_第1页
《C语言程序设计案例教程》全套教学课件_第2页
《C语言程序设计案例教程》全套教学课件_第3页
《C语言程序设计案例教程》全套教学课件_第4页
《C语言程序设计案例教程》全套教学课件_第5页
已阅读5页,还剩615页未读 继续免费阅读

下载本文档

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

文档简介

"CaseTutorialsofCLanguageProgramming"isbasedondataprocessing《C语言程序设计案例教程》

----基于数据处理全套可编辑PPT课件

本课件是可编辑的正常PPT课件目录02第2章简单的数值运算程序设计03第3章逻辑运算与选择结构程序设计01第1章C语言概述及程序设计基础04第4章重复运算与循环结构程序设计本课件是可编辑的正常PPT课件目录06第6章指针与字符串数据处理07第7章函数与程序结构优化05第5章数组与批量数据处理08第8章结构体与复杂数据处理本课件是可编辑的正常PPT课件目录10第10章文件与大批量数据处理09第9章链表与非连续存储数据处理本课件是可编辑的正常PPT课件1.1C语言的发展及特点01021.2C语言程序的基本结构031.3编译预处理1.4程序设计基础041.5VS2019使用方法05第1章C语言概述及程序设计基础本课件是可编辑的正常PPT课件1.1.1C语言的发展本书以Visual

studio2019为开发平台进行编程练习本课件是可编辑的正常PPT课件1.1.2C语言的特点(一)0102030405C语言是一种结构化语言C语言功能强大,程序运行效率高C语言数据结构丰富C语言运算符丰富C语言简洁、紧凑,使用方便、灵活本课件是可编辑的正常PPT课件1.1.2C语言的特点(二)0607080910C语法限制不太严格、程序设计自由度大C语言程序生成代码质量高,程序执行效率高C语言可移植性强C语言允许直接访问物理地址,能进行位操作适合编写嵌入式程序与操作系统等本课件是可编辑的正常PPT课件TIOBEIndex:VeryLongTermHistory

Toseethebiggerpicture,pleasefindbelowthepositionsofthetop:10programminglanguagesofmanyyearsback.Pleasenotethattheseareaveragepositionsforaperiodof12months.本课件是可编辑的正常PPT课件1.2C语言程序的基本结构【例1.1】一个简单的C程序示例。#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>voidmain() {

printf("这是我的第一个C语言程序!\n");}1.2.1C语言程序的书写基本结构在VS中为了避免早期的C语言中的某些函数认为是不安全的,加上此声明语句可以避免出现编译错误(要求所有程序均增加此行定义,下同)//预处理,文件包含//主函数//调用库函数

本课件是可编辑的正常PPT课件【例1.2】已知圆的半径,求圆的周长和面积(ex1_2.cpp)。#include<stdio.h>//预处理,文件包含#definePI3.14159 //预处理,宏定义floatarea(intradius) //计算半径为radius的圆面积函数{ returnPI*radius*radius; //返回圆面积}voidmain(){ intradius; //声明圆半径radius为整型变量 floatcircumferencel,circle_area; //声明周长circumferencel、面积circle_area为单精度浮点型变量 scanf("%d",&radius); //从键盘输入半径 circumferencel=2*PI*radius; //计算周长circumferencel的值 circle_area=area(radius); //计算面积circle_area的值 printf("半径=%d,周长=%5.2f,面积=%5.2f\n",radius,circumferencel,circle_area); //输出圆的半径、周长和面积}1.2.1C语言程序的书写基本结构函数area函数main本课件是可编辑的正常PPT课件【例1.2】已知圆的半径,求圆的周长和面积(ex1_2.cpp)。#include<stdio.h>//预处理,文件包含#definePI3.14159 //预处理,宏定义floatarea(intradius) //计算半径为radius的圆面积函数{ returnPI*radius*radius; //返回圆面积}voidmain(){ intradius; //声明圆半径radius为整型变量 floatcircumferencel,circle_area; //声明周长circumferencel、面积circle_area为单精度浮点型变量 scanf("%d",&radius); //从键盘输入半径 circumferencel=2*PI*radius; //计算周长circumferencel的值 circle_area=area(radius); //计算面积circle_area的值 printf("半径=%d,周长=%5.2f,面积=%5.2f\n",radius,circumferencel,circle_area); //输出圆的半径、周长和面积}1.2.1C语言程序的书写基本结构函数area函数main本课件是可编辑的正常PPT课件1.编译预处理部分编译预处理部分#开头,它通常又包括文件包含、宏定义与条件编译三种情况。#inclue<文件名>#define标识符

字符串2.函数部分12C语言程序的基本结构:函数返回值类型函数名1(形式参数列表){函数体1}

函数返回值类型函数名2(形式参数列表){函数体2}

intmain(){函数体n}

本课件是可编辑的正常PPT课件函数部分2C语言程序的书写结构:函数返回值类型函数名1(形式参数列表){函数体1}

函数返回值类型函数名2(形式参数列表){函数体2}

intmain(){函数体n}

编译预处部分

1特别说明:main()可以放在函数中的任意位置,但通常放在最前或者最后面。

本课件是可编辑的正常PPT课件1.2.2C语言程序的逻辑结构本课件是可编辑的正常PPT课件1.2.3字符集C语言字符集由字母、数字、空格、标点和特殊字符组成。(1)字母:小写字母a~z,大写字母A~Z,共52个。(2)数字:0~9共10个。(3)下划线:_。(4)空格:(5)其它符号:见下表符号作用符号作用符号作用,逗号运算符()表达式+加号.结构体成员-减号;语句标记[]数组下标标记*乘号#宏定义格式符/除法\转义符{}复合语句%其余数'字符标记&按位与"字符串标记<>文件包含标记|按位或!not(逻辑非)~按位取反=赋值运算?

:条件运算符^按位异或`未给出@未给出$未给出本课件是可编辑的正常PPT课件1.2.4标识符在程序中使用的语句功能名、变量名、函数名、数组名、指针名、标号等统称为标识符。1.标识符概述0103正确的:x1a__yabc_defmax_of_groupxyzAx3WhileiF3.示例02标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。2.标识符的书写规定:错误的:5x1a

y$1abc%defwhile

case

本课件是可编辑的正常PPT课件1.2.4标识符在程序中使用的语句功能名、变量名、函数名、数组名、指针名、标号等统称为标识符。1.标识符的分类0403正确的:x1a__yabc_defmax_of_groupxyzAx3WhileiF3.示例02标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。2.标识符的书写规定:错误的:5x1a

y$1abc%defwhile

case

本课件是可编辑的正常PPT课件

关键字4.标识符的分类

预定义标识符0102

用户标识符03关键字也称保留字,不得作为它用。如语句命令if、for等系统预先定义的标识符,同样不得作为它用。如库函数名printf等0102一般用来给变量、数组、结构体、函数、或文件等命名。“见名识义”很重要,如area03本课件是可编辑的正常PPT课件数据类型关键字(12个)char:字符型double:双精度enum:枚举型。float:浮点型int:整型long:长整型short:短整型signed:有符号struct:结构体union:联合体

unsigned:无符号void:空类型。关键字(keyword)分类介绍:控制语句(12个)for:循环语句。do:循环语句。while:循环语句。break:结束本层循环。continue:结束本次循环。if/else条件语句。goto:无条件跳转switch/case/default:多分支语句。return:返回函数计算结果。0102存储类型(4个)auto:VC6.0中自动变量extern:外部变量register:寄存器变量static:静态变量const:只读变量。其它(4个)

sizeof:计算数据类型长度。typedef:定义一个数据类型名。volatile:说明变量在程序执行中可被隐含地改变03本课件是可编辑的正常PPT课件1.2.5C语言语句C语言规定:在每一条语句末尾用分号“;”结束。本课件是可编辑的正常PPT课件3.语句的表示与功能介绍格式:函数返回值类型函数名(形式参数列表);

用函数定义的第一行后面加;表示,其作用为声明一个函数,以便实现函数的任意位置摆放而不出现函数未定义的编译错误。(1)函数说明0103格式:对已经定义了的变量用关键字extern进行外部变量声明,起到扩展外部变量作用域的作用。如:externintx;(3)变量说明02格式:数据类型关键字变量名标识符;作用:定义一个或多个变量。例如:intx,y;

floatradius,area;(2)变量定义1)说明语句本课件是可编辑的正常PPT课件3.语句的表示与功能介绍其一般形式为:

表达式;执行表达式语句就是计算表达式的值。如z=x+y;i++;x+y;(1)表达式语句0103

控制语句用于控制程序的流程,以实现程序的分支、循环和跳转等功能。(3)控制语句02其一般形式为:

函数名(实际参数表);执行一个函数调用功能。(2)函数调用语句2)执行语句①分支结构语句:if/else、switch/case;②循环控制语句:dowhile、while、for;③跳转语句:break、continue、return、goto。本课件是可编辑的正常PPT课件3.语句的表示与功能介绍把多个语句用“{}”括起来组成的一个语句块称为复合语句。例如:{

x=y+z;a=b+c;printf(“%d%d”,x,a);}(4)复合语句0405

只有分号“;”组成的语句称为空语句。执行时无功能实现。(5)空语句2)执行语句例如,用空语句作循环体:while(getchar()!='\n');

本课件是可编辑的正常PPT课件4.语句的分析模型【例1.3】系统登录:密码输入正确则提示“恭喜!登录成功!”,如果出错只允许两次密码输入出错,第三次密码还是错误便强制退出登录。输入一个字符串,计算其长度lenlen!=6密码正确?出错次数+1设密码长度为6位符号,出错次数置0出错次数<3输出提示,结束出错次数+1出错次数<3输出提示,结束输出提示,结束yesnonoyesnoyes本课件是可编辑的正常PPT课件4.语句的分析模型intmain(){

charpassword[20]={0};

inti,j,count=0;i=j=0;

for(i=1;i<=5;i++)

{

printf("请输入6位密码:");scanf("%s",password);j=strlen(password);

if(j!=6)

{count++;printf("密码长度不对,第%d次输入错误!\n",count);

if(count==3)

{

printf("连续3次输入的密码不正确,登录失败!\n");

break;

}

}

else

{

……

}

}

return0;}复合语句for语句if-else语句if语句复合语句程序本课件是可编辑的正常PPT课件1.2.6C语言程序的书写约定“见名识义”4.关于标识符号{和}均单独占一行,一行一般只写一个语句2.不要吝啬程序的长度要么放在最前面,要么放在最后面3.主函数main()的位置VisualStudio20101.选用更好的开发环境①/*……*/②//用于注释一行5.适当添加必要的注释保留像VS

2020版本的自动嵌套式的缩进格式,不要随意更改本课件是可编辑的正常PPT课件010203040506编译预处理对其中的预处理指令进行处理,并对源代码进行转换汇编程序将高级语言程序转换成汇编语言代码优化程序对程序的代码进行优化处理链接程序将编译后的目标代码与其他目标代码或库文件合并成一个可执行文件编译进行程序的语法分析,生成分析表可执行文件生成可在操作系统(如windows)环境下运行的程序1.3编译预处理C语言由源代码生成可执行程序的过程如下:本课件是可编辑的正常PPT课件1.3.1预处理命令分类:(1)文件包含:将源文件中以#include格式包含的文件复制到编译的源文件中,可以是头文件,也可以是其他的程序文件。(2)宏定义指令:#define指令定义一个宏,#undef指令删除一个宏定义。(3)条件编译:根据#ifdef和#ifndef后面的条件决定需要编译的代码。预处理指令:在程序的一行中以符号#开头的指令。本课件是可编辑的正常PPT课件1.3.2文件包含1.文件包含的格式#include<文件名>或#include"文件名"例如:#include"stdio.h"//头文件#include<math.h>作用:直接使用已经存在的库函数或用户自己定义的函数,以丰富程序功能,减轻程序员的编程负担,提高编程效率。一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。本课件是可编辑的正常PPT课件1.3.3宏定义1.无参宏定义其定义的一般形式为:#define标识符字符串作用:可以用一个“宏名”来代替程序中出现的任何符号串。#include

<stdio.h>#define

PI

3.1415926#define

AREA

PI*r*r#define

M

(x*x+2*x+1)void

main(){

int

r,x; r=3; x=5; printf("%f\n",AREA); printf("%d\n",M*2);}printf("%f\n",3.1415926*r*r);printf("%d\n",(x*x+2*x+1)*2);宏替换本课件是可编辑的正常PPT课件1.3.3宏定义#include

<stdio.h>#define

P

printf#define

D

"%d

"

//%d输出整型变量的格式符#define

F

"%f\n"

//&f输出浮点数型变量的格式符void

main(){

int

a=5,c=8,e=11;

float

b=3.8,d=9.7,f=21.08;

P(D

F,a,b);

P(D

F,c,d);

P(D

F,e,f);}宏定义也可以用来定义程序中多次使用的符号串或格式符,以减少敲代码的数量printf(“%d”%f\n”,a,b);printf(“%d”%f\n”,c,d);printf(“%d”%f\n”,e,f);宏替换本课件是可编辑的正常PPT课件1.3.3宏定义2.带参宏定义C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为:

#define宏名(形参表)字符串带参宏调用的一般形式为:

宏名(实参表);如:

#defineM(y)y*y+2*y//宏定义宏定义也可以用来定义程序中多次使用的符号串或格式符,以减少敲代码的数量k=5*5+2*5;s=a+b*a+b+2*a+b;宏替换宏调用:

k=M(5);

s=M(a+b);

带参数的宏使用不当具有一定的隐患!!!本课件是可编辑的正常PPT课件1.3.3宏定义使用不当的宏:2+3*3+4宏替换解决办法:

#define

SQUARE(a,b)

a*b带参数的宏使用不当具有一定的隐患!建议:慎用!!!#include

<stdio.h>#define

SQUARE(a,b)

a*bvoid

main(){ printf("正方形1的面积:%d\n",SQUARE(2,3)); printf("正方形2的面积:%d\n",SQUARE(2+3,3+4));}本课件是可编辑的正常PPT课件1.3.4条件编译作用:可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的:1.格式1#ifdef标识符程序段1#else程序段2#endif功能:根据标识符已定义的情况进行编译2.格式2#ifndef标识符程序段1#else程序段2#endif功能:根据标识符未定义的情况进行编译3.格式3#if常量表达式程序段1#else程序段2#endif功能:根据常量表达式的值进行编译本课件是可编辑的正常PPT课件1.3.4条件编译#include

<stdio.h>#define

PI

3.14159#define

R

1

//常量定义,用于条件编译void

main(){

float

c,area,square;

//定义输入变量c,圆的面积area,矩形面积square printf("inputanumber:

"); scanf("%f",&c);#if

R

//根据R的值决定对if后面的程序段进行编译

area=PI

*c*c;

printf("圆面积是:%f\n",area);#else

square=c*c;

printf("矩形面积是:%f\n",square);#endif}#define

R

0本课件是可编辑的正常PPT课件1.4程序设计基础

尼克劳斯-埃米尔-沃思(NiklausEmilWirth),Pascal的创造者,图灵奖获得者,计算机历史博物馆研究员,于2024年1月1日去世,享年89岁。他1975年出版的书名为《算法+数据结构=程序》,(Algorithm+DataStructures=Programs),凭借他提出的著名公式:"算法+数据结构=程序,于1984年获得了图灵奖"。本课件是可编辑的正常PPT课件1.4.1算法基本概念

1.算法的定义

算法(algorithm)是对特定问题求解的步骤的一种具体描述,算法是指令的有限序列,其中每一条指令表示一个或是多个操作,用于解决某个实际问题;所以算法也是指解决问题的方法和步骤。

2.程序

算法(algorithm)+数据结构=程序。本课件是可编辑的正常PPT课件2.算法的特征一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。输入算法中每一条指令必须有确切的含义,使用者理解时不存在二义性。确定性描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。可行性就是用有限个步骤在有限的时间内解决某个特定的问题有穷性一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。输出本课件是可编辑的正常PPT课件3.算法的设计要点效率指的是算法执行的时间,对于一个问题,执行时间短算法效率高。高效率算法主要是为了让人阅读和交流,其次才是机器执行可读性当输入非法时,算法也能适当地做出反应或进行处理,而不会出错健壮性算法应该能够正确地解决求解问题正确性存储量需求指算法执行过程中所需要的最大存储空间。低存储本课件是可编辑的正常PPT课件4.算法效率的度量在设计之初先分析算法所需要的时间与空间事前分析程序运行后统计其所消耗的时间与空间事后统计一个用高级程序语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:l依据的算法选用何种策略;l问题的规模;l书写程序的语言,对于同一个算法,实现语言的级别越高,执行效率就越低;l编译程序所产生的机器代码的质量;l机器执行指令的速度。一般较少使用,原因是这种方法有两个缺陷:一个是必须先运行依据算法编制的程序;另一个是所得时间的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优劣。本课件是可编辑的正常PPT课件4.算法效率的度量度量算法所需要的空间S(n)=O(f(n))(1)空间复杂度度量算法所需要的时间T(n)=O(f(n))(1)时间复杂度O(1)<O(log₂n)<O(n)<O(nlog₂n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)<O(nⁿ)空间复杂度一般为O(1)、O(n)、O(n2)和O(n3)本课件是可编辑的正常PPT课件1.4.2算法的表示•优点:简单,便于阅读。•缺点:无统一的标准,文字冗长,容易出现歧义。1.用自然语言表示【例1.13】用自然语言描述计算并输出x、y、z三个数中最大者的算法。算法如下:S1.输入变量x,y,z;S2.比较x与y,将其较大的数存放到t中;S3.比较t与z,将其较大的数存放到max中;S4.输出max;本课件是可编辑的正常PPT课件1.4.2算法的表示•伪代码是用介于自然语言与计算机语言之间的文字和符号来描述算法。它无固定的、严格的语法规则,书写格式自由,且易于修改,要求表达清楚。2.用伪代码表示例1.14】用伪代码表示计算t=5!的算法。begin(算法开始)t⇐1i⇐2whilei≤5{

t⇐t*ii⇐i+1}printftend(算法结束)本课件是可编辑的正常PPT课件1.4.2算法的表示•图形表示算法,直观形象,易于理解美国国家标准化协会ANSI规定了一些常用的流程图符号。3.用流程图表示处理框虚线起止框

判断框流程线连接符输入/输出框注解用上面的基本图形符号可以构造任意复杂的算法结构本课件是可编辑的正常PPT课件三种基本结构:顺序结构、分支结构、循环结构的流程图表示:顺序结构分支结构多分支结构死循环结构当型循环结构直到型循环结构本课件是可编辑的正常PPT课件【例1.15】画出求1+2+3+…+100的流程图。本课件是可编辑的正常PPT课件1.4.2算法的表示•算法的每一步都用一个矩形框描述,按执行次序连接起来就是一个完整的算法描述,这种描述方法被称为N-S图。4.N-S图表示N-S流程图用以下流程图符号

(A)顺序结构

(B)选择结构

(C)当型循环

(D)

直到型循环本课件是可编辑的正常PPT课件【例1.15】用N-S图画出求1+2+3+…+100的算法图。s←0,i←1

当i≤100成立s←s+ii←i+1输出s的值s←0,i←1【例1.15-1】用N-S图画出求1…100中的素数和的算法图。s←0,i←1

当i≤100成立i是素数s←s+i输出s的值s←0,i←1i←i+1空yesno本课件是可编辑的正常PPT课件1.4.2算法的表示•用程序设计语言表示算法时,必须遵循该程序设计语言的语法规则,要求比较严格,一般不常用其表示算法。5.用程序设计语言表示本课件是可编辑的正常PPT课件1.4.3程序的三种基本结构1.顺序结构

顺序结构是最简单的基本结构,要求按从上到下的先后顺序执行程序中的每一条语句(或结构单元)。2.选择结构选择结构又称作分支结构。在选择结构中,要根据逻辑条件的成立与否,分别选择执行不同的语句或结构单元。3.循环结构循环结构的执行方式是根据某项条件重复地执行一些语句若干次,直到某条件成立或不成立为止。本课件是可编辑的正常PPT课件1.4.3程序的三种基本结构的特点1.共同特点

在用流程图表示的结构中,在其外面加上一个大的虚线框,就可以发现三种基本结构的共同特点:即它们均只有“一个入口”和“一个出口”。2.可嵌套3种结构之间可相互嵌套,如条件中嵌套循环,循环中嵌套循环等;优点:解决任何复杂问题!3.好程序的标准每个程序模块只有一个入口和一个出口;没有死语句(永远执行不到的语句);没有死循环(永远执行不完的循环);程序的书写格式规范、可读性强。

程序算法结构清晰、执行效率高。本课件是可编辑的正常PPT课件1.5VS2019的特点VisualStudio2019(简称VS2019)是微软推出的一个集成开发环境(IDE),它支持多种编程语言和框架,适用于开发各种类型的应用程序。其主要特点如下:模块化安装:VS2019采用了模块化安装方法,可以根据需要选择安装组件。性能改进:VS2019在性能方面进行了优化。实时协作:VS2019支持实时协作开发,允许多个开发者同时编辑和共享代码。改进的测试工具:包括对单元测试、性能测试和负载测试的支持。支持.NETCore3.0:允许开发者构建跨平台的应用程序。AI辅助编码:集成了AI辅助编码功能,如IntelliCode,可以提供更智能的代码。支持容器开发:支持Docker和Kubernetes,方便进行容器化应用程序的开发。跨平台开发:VS2019支持跨平台开发,包括对iOS、Android、Linux等平台的支持。改进的UI/UX:VS2019对用户界面进行了改进,提供了更现代化和用户友好的体验。支持Python、JavaScript、TypeScriptt等语言的开发,提供相应的工具和模板。VisualStudioToolsforAI,支持机器学习和人工智能项目的开发。本课件是可编辑的正常PPT课件第一章小结C语言又称之为函数型语言。标识符分为关键字、预定义名称与用户自定义标识符三类。语句包含说明语句和执行语句两大类。预处理通常包括宏定义、文件包含、条件编译三种类型,根据实际需求合理使用。算法是程序设计的精华和核心;算法描述有自然语言、流程图、N-S图、伪代码和程序语言等。C语言程序是依据结构化程序设计思想而设计的,它具有顺序、分支、循环三种基本结构。本课件是可编辑的正常PPT课件"CaseTutorialsofCLanguageProgramming"isbasedondataprocessing《C语言程序设计案例教程》

----基于数据处理本课件是可编辑的正常PPT课件目录02第2章简单的数值运算程序设计03第3章逻辑运算与选择结构程序设计01第1章C语言概述及程序设计基础04第4章重复运算与循环结构程序设计本课件是可编辑的正常PPT课件目录06第6章指针与字符串数据处理07第7章函数与程序结构优化05第5章数组与批量数据处理08第8章结构体与复杂数据处理本课件是可编辑的正常PPT课件目录10第10章文件与大批量数据处理09第9章链表与非连续存储数据处理本课件是可编辑的正常PPT课件第2章简单的数值运算程序设计表达式与语句格式化输入/输出2.12.22.33.4252.42.62.6简单的数值运算程序设计示例C语言变量C语言数据类型C语言常量本课件是可编辑的正常PPT课件2.1C语言数据类型数据结构程序算法3.4数据之间关系数据类型数据是信息的表现形式和载体,可以是符号、文字、数字、语音、图像、视频等数据之间存在先后(前后)、层次或网状之间等关系本课件是可编辑的正常PPT课件2.1.1数据类型的分类01020304主要的特点是:其值不可以再分解为其他类型。基本数据类型一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。构造数据类型其值用来表示某个变量在内存储器中的地址。指针类型用于不需要有返回值的函数值的函数类型定义空类型数据类型定义了一个变量可以存储的数据大小,并定义了该数据可以表示的操作。数据类型是程序设计中的重要概念,它也是编程和数据结构的核心要素。本课件是可编辑的正常PPT课件2.1.1数据类型的分类本课件是可编辑的正常PPT课件2.1.1数据类型的作用2.表示数据的存储方式1.决定数据的取值范围1000000000000001unsignedintint32769-32767数据类型定义二进制值十进制值如:数据的存储位数(16位、32位,8位等

)、构造类型

存储格式等。注意:教师在讲解时要求能分析上面结果的计算过程3.合适的运算如:+、-、*、/、%等,并不是所有的数据类型均能进行上面的操作。本课件是可编辑的正常PPT课件2.1.1数据类型的分类【例2.1】数据类型的作用示例。#include<stdio.h>int

main(void){

unsigned

short

i=0xC965;

short

t=0xC965;

printf("i=%d\n",i);

printf("t=%d\n",t);

return

0;}注意:教师在讲解时要求能分析上面结果的计算过程运行结果:本课件是可编辑的正常PPT课件2.2C语言常量

常量是指在程序设计过程中一直保持不变的量,它是计算机运算时数据处理的基础数据。

C语言中的常量与数据类型相关,每种数据类型均有相应的常量表示方法。2.2.1整型常量十进制整数八进制整数十六进制整数规则:除单独的数字0以外,第一位和由1~9组成,后面各位均由0-9组成如:right:0、5、1237、-5668、-21627error:0123(有前导0)、23D、2_3规则:必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。如:right:015)、-0101、0177777;error:1345、067599、0A123规则:前缀为0X或0x。其数码取值为0~9,A~F或a~f。如:ritht:0X2A)、-0X11、0XFFFF、0x11error:0457A、ABCDEX、0x284P共同点:1.数的表示前面允许加上+、-号分别表示正数与负数。2.数的后面可加L或U,表示长整数或无符号整数本课件是可编辑的正常PPT课件2.2.2实型常量

实型常量:带小数点的数,称为实数,在计算机中又称为浮点型。

实数只采用十进制表示:带小数点表示和指数表示。1.

十进制数小数点表示

由数码0~9和小数点组成,前面可以带+或-号,表示正数与负数。如:0.0、25.0、5.789、0.13、5.、300.、-267.8230、.35、43.02.

指数形式aEn(a为十进制数,n为十进制整数)

其值为a*10n。

right:0.5E7(等于0.5×107)-2.8E-2(等于-2.8×10-2)

error:-5E(无阶码数值)53.234-E3(负号位置不对)“f”或“F”表示单精度float类型:如12.45f“l”或“L”表示双精度double类:123.45L省略后缀为双精度double类型:如123.45后缀本课件是可编辑的正常PPT课件2.2.3字符常量

在C语言中用单撇号(')括起来的一个字符,称为字符常量。

如:right:'a'、'b'、'='、'+'、'?'、'0'、'3'、'9'、'A'

error:

'1d'、'123'、'ab'、'''、'\'转义字符转义字符的意义ASCII代码\n换行,跳到下一行行首10\t横向跳到下一制表位置(Tab)9\b退格8\r回车,跳到当前行行首13\f走纸换页,跳到下一页开头12\\反斜线"\"92\'单引号39\"双引号34\a鸣铃7\ddd1~3位八进制数所代表的字符

\xhhhh为1~2位十六进制数所代表的字符转义字符字符常量的值:ASCII值(0-127的数值,见表)本课件是可编辑的正常PPT课件示例:#include

<stdio.h>int

main(){ printf("

ab

c\tde\rf\n"); printf("hijk\tL\bM\n");

return

0;}运行结果:why:分析此结果的形成原因本课件是可编辑的正常PPT课件2.2.4枚举常量

作用:用于那些取值范围较少(少到可以数出来的情形)。如:星期、月份、七彩色等。通过用具体的符号名称为表示一组数的类型即为枚举数据类型,对应的符号名称就是枚举常量,其数值对应整数0--n.枚举类型定义的一般形式为:

enum枚举类型名{标识符1,标识符2,...,标识符n};(1)星期的枚举定义:

enum

week1{sun,

mou,

tue,

wed,

thu,

fri,

sat};enum

week2{sunday,monday,tuesday,wednesday,thursday,friday,saturday};enum

week3{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY};(2)七彩色颜色的枚举定义:enumcolor{red,orange,yellow,green,cyan,blue,purple};(3)十二个月的枚举定义:enummonth{January,February,March,April,May,June,July,August,September,October,November,December};本课件是可编辑的正常PPT课件2.2.4枚举常量枚举成员定义以后变量的取值只能是这些枚举成员。每个enum类型的枚举成员都有一个整数值,如果不指定,则从0开始递增。如果指定

第1个的值,则后面的依次增加1.如:enumweek3{SUNDAY=1,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY};则SUNDAY的整数值为1,MONDAY的整数值为2,以此类推。如:enum

week2{sunday,monday,tuesday,wednesday,thursday,friday,saturday};

enum

week2a,b,c;则:a=monday;

//正确

a=2;

//错误本课件是可编辑的正常PPT课件2.3.2变量的定义

变量是指在程序运行过程中可以随时改变的量,理解:任何一个时刻均具有唯一值,但它又是随时可以改变的。变量的

定义定义时不赋值定义时赋值定义后约定形式1:只定义变量。类型关键字标识符1,标识符2,…;形式2:在定义变量时同时给变量赋初值。类型关键字标识符1=值1,标识符2=值2,…;(1)变量的存储(2)变量的取值与范围(3)变量可参与的运算charch1,ch2;//定义ch1,ch2为字符变量,无初值charch3=’a’,ch4=’\\’,ch5=’\108’;//定义ch3,ch4,ch5为字符变量,有初值inta,b,c;//定义a,b,c为整型变量,无初值longx=1,y=23,z;//定义x,y,z为长整型变量,其中x,y有初值floatf1,f2,f3;//定义f1,f2,f3为单精度浮点变量,无初值doubled1=12.4,d2,d3=3.4e5;//定义d1,d2,d3为双精度浮点变量,其中d1,d3有初值本课件是可编辑的正常PPT课件2.3.3变量的存储1.变量占用的存储空间大小#include<stdio.h>int

main(void){

printf("字符型数据char占%d个字节\n",sizeof(char));

printf("短整型数据short占%d个字节\n",sizeof(short));

printf("整型数据int占%d个字节\n",sizeof(int));

printf("长整型数据long占%d个字节\n",sizeof(long));

printf("无符号短整型数据unsignedshort占%d个字节\n",sizeof(unsigned

short));

printf("无符号整型数据unsignedint占%d个字节\n",sizeof(unsigned

int));

printf("无符号长整型数据unsignedlong占%d个字节\n",sizeof(unsigned

long));

printf("单精度浮点型数据float占%d个字节\n",sizeof(float));

printf("双精度浮点型数据double占%d个字节\n",sizeof(double));

return

0;}本课件是可编辑的正常PPT课件2.3.3变量的存储#include<stdio.h>int

main(void){

char

ch;

short

int

i1;

int

i2;

long

i3;

unsigned

short

i4;

unsigned

int

i5;

unsigned

long

i6;

float

f1;

double

f2;

printf("字符型变量ch占%d个字节\n",sizeof(ch));

printf("短整型变量i1占%d个字节\n",sizeof(i1));

printf("整型变量i2占%d个字节\n",sizeof(i2));

printf("长整型变量i3占%d个字节\n",sizeof(i3));

printf("无符号短整型变量i4占%d个字节\n",sizeof(i4));

printf("无符号整型变量i5占%d个字节\n",sizeof(i5));

printf("无符号长整型变量i6占%d个字节\n",sizeof(i6));

printf("单精度浮点型变量f1占%d个字节\n",sizeof(f1));

printf("双精度浮点型变量f2占%d个字节\n",sizeof(f2));

return

0;}结论:变量所占的存储空间等于其定义的数据类型所占的存储空间。本课件是可编辑的正常PPT课件2.整型变量的存储1)整数的补码表示补码表示的优点:(1)0的表示唯一,(2)减法可通过加法来实现其运算补码的计算过程:原码反码补码最高位0表示正数,1表示负数正数:

原码=反码=补码除符号位外各位求反反码的基础上+1,不得影响符号位例子:

-374的表示十进制值补码值反向转换过程本课件是可编辑的正常PPT课件2.3.3变量的存储整型变量所占存储空间及其取值范围整型组合数据类型说明符存储字节取值范围shortintshort2-32768~32767-215~(215-1)intlongintlong4-2147483648~2147483647-231~(231-1)unsignedshortintunsignedshort20~655350~(216-1)unsignedintunsignedlongintunsignedlong40~42949672950~(232-1)注意:整型变量的局限性本课件是可编辑的正常PPT课件2.3.3变量的存储注意:分析上述结果形成的原因#include<stdio.h>int

main(){

short

x,y,z; x=32767; y=1; z=x+y; printf("x=%d,y=%d,z=%d\n",x,y,z);}程序的运行结果:本课件是可编辑的正常PPT课件3.实型变量的存储实数以指数存储,其长度为4个字(float)或8个字节(double),分3部分:类型说明符存储字节有效数字取值的范围float46~7(位)正浮点数:1.1755×10-38~3.4×1038负浮点数:-3.4×1038~-1.1755×10-38double815~16(位)正浮点数:2.2251×10-308~1.7977×10308负浮点数:-1.7977×10308~-2.2251×10-308

本课件是可编辑的正常PPT课件3.实型变量的存储注意:分析上述结果形成的原因,并解释实数运算所产生的误差与精度分析。程序的运行结果:#include

<stdio.h>int

main(){

float

a,b; a=123456.789e5; b=a+20; printf("a=%f\n",a); printf("a+20=%f\n",b); printf("1000.0/3=%.18lf\n",1000.0f/3);

return

0;}本课件是可编辑的正常PPT课件4.字符变量的存储字符变量的存储空间其长度为1个字(8位二进制),最高位通常为0,可以存储0-127共128个ASCII字符。如:chara='A',b='a';字母A的ASCII值65,字母a的ASCII值97;对应的两个变量a,b的存储单元中的8位二进制数值如下:0100000101100001变量a变量b

从存储结构上看,字符变量的存储单元为一个字节,很显然可以将其当成是一个字节的整数来使用。本课件是可编辑的正常PPT课件#include

<stdio.h>int

main(){

char

a,b,c;

int

x; a='a'; b=0xA81;

//将1个整数赋值给字符变量b c=a-32; x=a+b+c;

//将字符变量通过数值运算赋值给变量x

printf("a=%c,b=%c,c=%c,x=%c\n",a,b,c,x);//以字符方式输出各变量

printf("a=%d,b=%d,c=%d,x=%d\n",a,b,c,x);

//以整数方式输出各变量

return

0;}4.实型变量的存储程序的运行结果:注意:分析上述结果形成的原因本课件是可编辑的正常PPT课件5.枚举变量的存储enum

weekday

{sun=3,mou=1,tue,wed,thu,fri,sat

};//定义枚举类型enum

weekday

a,b,c;

//定义枚举变量printf("%d",sizeof(a));

//输出枚举变量a占用存储单元的字节数,结果为4.从VS程序的输出结果得知:枚举变量占用的存储单元数为4个字节。本课件是可编辑的正常PPT课件2.3.3变量的作用变量遵循“先定义、后引用”的原则先定义每个变量均有唯一

的名字,命名符合标识符的定义要求变量名字用数据类型定义变量,则同时规定了其占用存储空间与参与的运算变量类型任何一个时刻均有唯一确定的值,但它是不断变化的存储数值每个

变量存在一定的作用范围,超范围使用会出借作用域本课件是可编辑的正常PPT课件2.4表达式与语句2.4.1运算符优先级结合律见附录本课件是可编辑的正常PPT课件2.4表达式与语句2.4.2

与数值运算相关的运算符x+y

x-y

x*y

x/y

x%y典型形式:#include

<stdio.h>int

main(){ printf("%d,%d\n",20/7,6.6f); printf("求余数:%d

%d%d%d\n",100%3,100%-3,-100%3,-100%-3); printf("%f,%f\n",20.0/7,-20.0/7);}注意1、%运算的结果符号位同x2、实数当成整数输出时需特别引起注意3、实数是有精度或有误差1.基本算术运算符本课件是可编辑的正常PPT课件2.赋值运算符变量=表达式典型形式:其后面不加;为表达式,加;为语句运算逻辑:变量计算表达式的值赋给例如:x=1

//表达式的值为1a=b=c=3

//等价于a=(b=(c=3)),表达式的值为3,变量a、b、c的值均为3y=(a+2*b)*c-x

//继上,表达式的值为26,变量y的值为26w=sin(a)+sin(b)

//sin()为函数x=(a=5)+(b=8)//赋值式的结果也可参与运算是错误的赋值表达式:3x=52a+b=64(a+2*3)=x-y本课件是可编辑的正常PPT课件2)组合赋值运算符在赋值符“=”之前加上其他双目运算符可构成复合赋值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。复合赋值表达式的一般形式为:变量

双目运算符=表达式它等价于:变量=变量双目运算符(表达式)例如:a+=5

等价于a=a+5b-=x-y

等价于b=b-(x-y)x*=y+7

等价于x=x*(y+7)r%=p

等价于r=r%p本课件是可编辑的正常PPT课件3.自增、自减运算符++:其功能是使变量的值自增1。--:其功能是使变量值自减1。++,--运算符均为单目运算,只能用于单个变量的前面或后面以变量i为例:++i:先将i自增1,然后再参与其他的运算,简称“先增后用”。i--:i先参与其他的运算,再将i自减1,简称“先用后减”。本课件是可编辑的正常PPT课件++\--运算会应用示例#include<stdio.h>int

main(void){

int

i,j;

i=10;j=++i;

printf("i=%d,j=%d\n",i,j);

i=10;j=--i;

printf("i=%d,j=%d\n",i,j);

i=10;j=i++;

printf("i=%d,j=%d\n",i,j);

i=10;j=i--;

printf("i=%d,j=%d\n",i,j);

return

0;}运行结果:本课件是可编辑的正常PPT课件4.逗号运算符其一般形式为:表达式1,表达式2,表达式3其求值过程是从左到右依次计算每个表达式的值,并将最后表达式3的值作为整个逗号表达式的值。#include

<stdio.h>int

main(){

int

a=1,b=2,c=3,x,y; y=(x=a+b,x+c); printf("x=%d,y=%d\n",x,y);}程序运行结果为x=3,y=6。本课件是可编辑的正常PPT课件2.4.3表达式1.表达式的定义表达式是由常量、变量、函数、表达式值等数据对象、运算符和(

)组合而成的式子。(1)运算顺序保持不变,必要时通过加()来实现(2)运算符必须符合C语言规定,且不得省略。如乘法*(3)数学式子

的各种括号均只能用()表示(4)可以使用库函数来表示(5)表达式可以嵌套使用1/xy对应的表达式为:1.0/(x*y)。x2+2x+1对应的表达式为:x*x+2*x+1。3[(a+b)c-2d]/3a的C语言表达式为3*((a+b)*c-2*d)/(3*a)的C语言表达式为(-b+sqrt(b*b-4*a*c))/(2*a)如:x=(y=a+b,z=a-b,j=++i)*2数学式子表达式转换方法本课件是可编辑的正常PPT课件2.4.3表达式2.表达式的运算严格按附录C中的运算符优先级标准的顺序进行运算1、优先级原则3、类型转换原则2、结合律原则同一级别中严格按录C中的运算符的结合律标准的顺序进行运算(1)当一个表达式中出现多种不同数据类型时,系统按约定的类型转换规则执行。(2)强制类型转换自动类型转换本课件是可编辑的正常PPT课件2.4.3表达式(2)强制类型转换其一般形式为:(类型说明符)表达式(float)a;

//将变量a转换为float类型(int)(x+y);

//把表达式x+y的结果转换为int整型intx,y;(float)x/y;

//将x转换为

float类型,/运算可以得到小数值,否则为整数除法示例:作用:使运算结果更加符合实际需要,减少误差或产生错误的结果。本课件是可编辑的正常PPT课件2.4.3表达式(3)类型转换例程#include<stdio.h>int

main(){

float

PI=3.14159;

int

s1,r=5;

double

s2;

s1=r*r*PI;

s2=r*r*PI;

printf("s1=%d,s2=%f\n",s1,s2);

return

0;}程序运行结果为s1=78,s2=78.539749。#include

<stdio.h>int

main(){

long

total=418;

//总价

int

count=5;

//数目

double

unitprice1,unitprice2,price;

unitprice1=(float)total/count;

//强制转换

unitprice2=(double)total/count;

//强制转换

price=total/count;

//整数除法,结果自动类型转换为double

printf("unitprice1=%lf,unitprice2=%lf,

price=%lf\n",unitprice1,unitprice2,price);

return

0;}本课件是可编辑的正常PPT课件2.4.4表达式语句任何一个表达均可以构成一个表达式语句,只需要在表达式后面中上“;”。构成方式:

表达式;作用:执行一定的计算功能

a+b;

//一个表达式语句,在程序中不起任何作用

x=1;

//赋值语句,其作用将1赋给变量x,即x的值为1a=b=c=3;

//赋值语句,其作用将3赋给变量a,b,cx=1,y=2,z=3;

//逗号语句,其作用将1赋给变量x,2赋给变量y,3赋给zdelta=(-b+sqrt(b*b-4*a*c))/(2*a);

//赋值语句,计算判别式deltaj=i++;

//赋值语句,先使用i,将i的值赋给j,i再自增1j=++i;

//赋值语句,先i再自增1,再将i的值赋给jp=sin(x*PI/180);

//赋值语句,计算x度的sin函数值本课件是可编辑的正常PPT课件2.5格式化输入/输出C语言本身没有I/O语句,所有I/O都由函数来实现,C语言提供了stdio.h库文件,其中包含了大量的输入输出函数,本节重点介绍printf()和scanf()函数的应用。2.5.1格式化输出函数C库函数stdio.h提供了5个格式化输出函数,其函数定义如下所示。#include<stdio.h>//包含库文件intprintf(constchar*format,...);intfprintf(FILE*stream,constchar*format,...);intdprintf(intfd,constchar*format,...);intsprintf(char*buf,constchar*format,...);intsnprintf(char*buf,size_tsize,constchar*format,...);返回类型函数名函数参数(又称形式参数)语句标识符(此语句为说明语句)本课件是可编辑的正常PPT课件2.5格式化输入/输出1.printf()函数实际应用:先想好输出结果的表达方式,再确定格式式控制字符串怎么与!!!如:要输出2+3=5这样的结果方式,则用“%d+%d=%d”,x,y,x+y

要输出root1=2.1,root2=3.23,则用“root1=%lf,root2=%lf”,x1,x2说明语句:intprintf(constchar*format,...);调用方式:printf(“格式控制字符串”,输出列表);格式字符串非格式字符串%[标志][输出最小宽度][.精度][长度]格式字符想输出(表达)什么就写什么一个%格式字符按顺序对应后面输出列出中的一个表达式的值本课件是可编辑的正常PPT课件2.5.1格式化输出1.printf()函数格式字符含

义d以十进制形式输出带符号整数(正数不输出符号)u以十进制形式输出无符号整数o以八进制形式输出无符号整数(不输出前缀0)x或X以十六进制形式输出无符号整数(不输出前缀0x)f以小数形式输出单、双精度实数e或E以指数形式输出单、双精度实数g或G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串标

志含

义-结果左对齐,右边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号#对格式字符c,s,d,u无影响;对格式字符o类,在输出时加前缀0;对格式字符x类,在输出时加前缀0x;对格式字符e,g,f类当结果有小数时才给出小数点用于%后面,如%d用于%后格式符前,如%+d格式含

义%ld用于长整型数据的输出%hd用于短整型数据的输出%lf用于双精度型数据输出本课件是可编辑的正常PPT课件2.5.1格式化输出

温馨提示

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

评论

0/150

提交评论