C语言程序设计(第3版)400_第1页
C语言程序设计(第3版)400_第2页
C语言程序设计(第3版)400_第3页
C语言程序设计(第3版)400_第4页
C语言程序设计(第3版)400_第5页
已阅读5页,还剩395页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计第1章C语言概述第1讲:C语言初步介绍

328677005C语言课程交流群1.C语言的发展史及特点提纲2.简单的C语言程序1.C语言的发展史及特点发展史特点新信息化时代:专业知识C语言程序设计专业技术程序设计1.C语言的发展史及特点发展史特点C语言程序设计1、1963年,剑桥大学将ALGOL60语言发展成为CPL语言。发展史:2、1967年,剑桥大学的MartinRichards对CPL语言进行了简化,产生了BCPL语言。3、1970年,美国贝尔实验室的KenThompson将BCPL中的精华提炼出来,并为它起了一个有趣的名字“B语言”。4、1973年,美国贝尔实验室的DennisM.Ritchie在B语言的基础上最终设计出了一种新的语言,即C语言。5、1977年,DennisM.Ritchie发表了不依赖于机器系统的《可移植的C语言编译程序》。6、1978年,BrianW.Kernighian和DennisM.Ritchie出版TheCProgrammingLanguage。7、1989年,

ANSIC标准被采用。

1.C语言的发展史及特点发展史特点C语言程序设计1、C语言具有结构语言的特点,程序之间很容易实现段的共享。C语言的特点:2、C语言的主要结构成分是函数。3、运算符丰富。4、数据类型丰富。5、比较接近硬件。

6、语法限制少和程序设计自由度大。7、生成目标代码质量高、程序执行效率高。

8、可移植性好。基本上不做修改就能用于各种型号的计算机和各种操作系统。2.简单的C语言程序简单实例

复杂实例

基本结构C语言程序设计输出某位同学的学号、姓名、性别、联系方式。运行结果语句编写main(){}printf("学号:35013101\n");printf("姓名:王迪\n");printf("性别:女\n");printf("联系方式n");学号:35013101姓名:王迪性别:女联系方式意说明:(1)每一个C源程序都必须有,且只能有一个主函数(main函数)。(2)一个函数由两部分组成:函数的首部和函数体。

(3)函数体由大括号“{}”括起来。(4)函数调用语句,printf函数的功能是将要输出的内容送到显示器去显示。

(5)双引号内的字符串按原样输出,但“\n”是转义字符,代表换行。

2.简单的C语言程序简单实例复杂实例基本结构C语言程序设计已知两个整数,求它们的和,并输出。运行结果语句编写main(){}intx,y,sum;//定义三个变量x=2;y=3;//变量赋值sum=x+y;//计算和printf("sum=%d\n",sum);

sum=5注意说明:(1)#include称为文件包含命令,扩展名为.h的文件称为头文件。

(2)//表明注释部分,也可以写成/*……*/。(3)每一个说明、每一条语句都必须以分号结尾。(4)一行内可以书写一条或多条语句,一条语句也可以分多行书写。

#include"stdio.h"2.简单的C语言程序简单实例

复杂实例基本结构C语言程序设计5个部分组合而成:1、预处理部分2、变量说明部分3、函数原型声明部分4、主函数部分5、自定义函数部分注意说明:(1)并非所有的C语言源程序都必须包含上述的5个部分。(2)每个C语言源程序都必须有且只能有一个主函数。(3)每个C语言源程序可以有零个或多个自定义的非主函数,只是它的名称不能是main。(4)每个C语言源程序的语句必须用分号“;”结束。(5)当C语言源程序由多个函数组成时,主函数可以定义在任何位置,但程序总是从主函数开始执行,且在主函数中结束执行。谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第1章C语言概述第2讲:C程序的开发328677005C语言课程交流群1.C程序的开发过程提纲2.

VisualC++6.0开发环境

1.C程序的开发过程C语言程序设计基本步骤:编辑.c文件编译.obj文件连接.exe文件运行程序结果1、编辑源程序:C语言源程序的录入和修改,文件扩展名必须为“.c”

。2、编译源程序:像翻译一样,将已编辑好的源程序翻译成二进制的目标代码,并产生以“.obj”为扩展名的目标程序。3、连接目标程序:编译后产生的目标程序和库函数进行连接才能运行,连接后,产生以“.exe”为扩展名的可执行程序。4、运行:可执行程序生成后,就可以在操作系统的支持下运行,输出结果。

选择“开始”菜单“程序”项或者桌面上快捷方式中的

2.VC++6.0开发环境C语言程序设计开发平台介绍:1、启动VisualC++6.0选择“File”菜单中的“New”项,在出现的窗口中选择“Projects”选项卡中Win32ConsoleApplication。2.VC++6.0开发环境C语言程序设计开发平台介绍:2、新建项目

输入工程名,设定保存位置,单击确定后弹出新窗口,选择默认选项,单击“Finish”按钮。

选择“File”菜单中的“New”项,在出现的窗口中选择“Files”选项卡中的C++SourceFile,在“File”下面的文本框中输入文件名test.c,单击“ok”按钮。2.VC++6.0开发环境C语言程序设计开发平台介绍:3、新建文件在编辑窗口中输入C语言源程序。2.VC++6.0开发环境C语言程序设计开发平台介绍:4、编辑源程序选择“Build”菜单中的“Compiletest.c”项或单击工具栏上的按钮进行编译。2.VC++6.0开发环境C语言程序设计开发平台介绍:5、编译源程序选择“Build”菜单中的“Buildtest.exe”项或单击连接按钮

2.VC++6.0开发环境C语言程序设计开发平台介绍:6、连接目标程序选择“Build”菜单中的“Executetest.exe”项或单击运行按钮2.VC++6.0开发环境C语言程序设计开发平台介绍:7、运行可执行文件谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第1章C语言概述第3讲:常见编译错误与调试328677005C语言课程交流群1.头文件问题提纲2.主函数问题3.语句格式问题1.头文件问题解决办法:C语言程序设计问题描述:没有加入头文件stdio.h。在主函数的上面加上代码#include"stdio.h"。运行结果语句编写main(){}printf("welcometoc_program!\n");编译警告#include"stdio.h"变化welcometoc_program!2.主函数问题解决办法:C语言程序设计问题描述:主函数第一个字母大写了。将Main修改为main。运行结果语句编写Main(){}printf("welcometoc_program!\n");编译错误#include"stdio.h"变化welcometoc_program!main(){}3.语句格式问题解决办法:C语言程序设计问题描述1:语句结束后忘记加分号“;”。在语句printf("welcometoc_program!\n")后面加上分号“;”。运行结果语句编写main(){}printf("welcometoc_program!\n")编译错误#include"stdio.h"变化welcometoc_program!printf("welcometoc_program!\n");3.语句格式问题解决办法:C语言程序设计问题描述2:将英文状态下的双引号""写成中文状态下的双引号“”

将中文状态下的双引号“”修改为英文状态下的双引号""。运行结果语句编写main(){}printf(“welcometoc_program!\n”);编译错误#include"stdio.h"变化welcometoc_program!printf("welcometoc_program!\n");谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第2章C语言数据与运算第1讲:数据类型及常量变量328677005C语言课程交流群1.基本数据类型提纲2.常量与变量3.数据类型转换1.基本数据类型C语言程序设计数据类型构造类型指针类型空类型void枚举类型enum数组类型结构类型struct联合类型union基本类型整型int字符型char实型(浮点型)单精度实型float双精度实型double2.常量与变量标识符关键字常量变量C语言程序设计标识符是对变量名、函数名、标号和其他各种用户定义的对象命名。注意:(1)标识符区分大小写;(2)标识符的有效长度取决于具体的C编译系统;(3)标识符的书写一般采用具有一定实际含义的单词,这样可提高程序的可读性;(4)标识符不能与C语言的关键字同名,也不能与自定义函数或C语言库函数同名;命名规则:标识符由字母、数字或者下划线组成,且第一个字符必须是字母或下划线。2.常量与变量标识符关键字常量变量C语言程序设计关键字是具有固定名字和特定含义的特殊标识符,也称保留字,不允许将它们另作别用。

32个关键字:(1)数据类型定义:typedef(2)数据类型:char,double,enum,float,int,long,short,struct,union,unsigned,void,signed,volatile,auto,extern,register,static,const(3)运算符:sizeof(4)语句:break,case,continue,default,do,else,for,goto,if,return,switch,

while2.常量与变量标识符

关键字常量变量C语言程序设计直接常量1、整型常量:(2)八进制整数:最高位为0,如十进制的128,用八进制表示为0200,每个数字位是0~7,属于合法的;如256(无前缀0)、02A6(包含了非八进制数码A)、-0256(出现了负号),属于不合法的。(1)十进制整数:如250、-12,每个数字位是0~9,属于合法的;如058、35D,含有非十进制数码,属于不合法的。(3)十六进制整数:以0x或0X开头,如十进制的128,用十六进制表示为0x80或0X80,每个数字位可以是0~9,A~F,其中A代表10,B代表11…,属于合法的;如3A(无前缀0x)、0x8H(包含了数码H),属于不合法的。

2.常量与变量标识符

关键字常量变量C语言程序设计直接常量2、实型常量:(2)指数形式:(e或E之前必须有数字,指数必须为整数),如12.3e3、123E2、1.23e4属于合法的;而e-5、1.2E-3.5属于不合法的。(1)十进制数形式:(必须有小数点),如0.123、.123、123.0、0.0都属于合法的。实型也叫浮点型,实型常量也叫实数或浮点数,在C语言中,实数只用十进制表示。2.常量与变量标识符

关键字常量变量C语言程序设计直接常量3、字符常量:(2)字符常量只能是单个字符,不能是字符串。(1)字符常量只能用单引号括起来,不能用双引号或其它括号。如‘a’、‘b’、‘=’、‘+’、‘?’都属于合法的。

字符常量是用单引号括起来的一个字符。(3)字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5是不同的。

2.常量与变量标识符

关键字常量变量C语言程序设计直接常量4、转义字符:转义字符以反斜线"\"开头,后跟一个或几个字符。字符形式功能\n换行\t横向跳格(即跳到下一个输出区)\b退格\r回车\f走纸换页\\反斜杠字符'\'\'单撇号字符\"双撇号字符\a报警,相当于’\007’\ddd1~3位8进制数所代表的字符\xhh1~2位16进制数所代表的字符运行结果语句编写main(){}printf("Ilovemusic!\n");printf("themusicis\"D:\\music\\love.mp3\".\n");themusicis"D:\music\love.mp3".Ilovemusic!2.常量与变量标识符

关键字常量变量C语言程序设计符号常量一般形式:#define标识符常量已知圆的半径为1.5,求圆的面积。运行结果语句编写#include"stdio.h"#definePI3.14//符号常量

main(){}floatr,area;//定义变量

r=1.5;//赋值area=PI*r*r;//计算语句printf("area=%f\n",area);//输出结果area=7.065注意说明:(1)宏定义必须以#define开头,标识符和常量之间不加等于号,行末不加分号。(2)宏定义#define应该放在函数外部,这样可以控制到程序结束。(3)符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。2.常量与变量标识符

关键字常量变量C语言程序设计变量描述变量是其值可以变化的量,在使用之前必须先定义,变量在内存中占据一定的存储单元。r1.5变量名变量值存储单元定义一个变量r,那么内存中就应该开辟一个空间,可以存储数据。例题:2.常量与变量标识符

关键字常量变量C语言程序设计变量分类1、整型变量

(1)整型变量的分类

基本型:类型说明符为int,在内存中占2个字节。短整型:类型说明符为shortint或者short,所占字节和取值范围均与基本型相同。长整型:类型说明符为longint或者long,在内存中占4个字节。无符号型:类型说明符为unsigned。注:无符号型也可以和上述三种类型匹配使用。2.常量与变量标识符

关键字常量变量C语言程序设计变量分类1、整型变量

(2)整型变量的定义

整型变量的定义一般形式为:类型说明符变量1[=值1],变量2[=值2],…;例题:inta,b;//a,b为整型变量longx,y;//x,y为长整型变量运行结果语句编写main(){}intx,y,z;x=2;y=3;z=x+y;x+y=5printf("x+y=%d\n",z);注意说明:类型说明符与变量名之间至少要有一个空格间隔。在一个类型说明符后,可定义多个相同类型的变量,但变量间要用逗号间隔。最后一个变量名后必须用分号“;”结束。[]内的为可选项,即为变量的初始化。

2.常量与变量标识符

关键字常量变量C语言程序设计变量分类2、实型变量

(1)实型变量的分类

单精度:类型说明符为float,在内存中占4个字节。双精度:类型说明符为double,在内存中占8个字节。(2)实型变量的定义

实型变量的定义一般形式为:类型说明符变量1[=值1],变量2[=值2],…;例题:floata,b,c;//a,b,c为单精度实型变量doublex,y,z;//x,y,z为双精度实型变量2.常量与变量标识符

关键字常量变量C语言程序设计已知圆的半径,求圆的面积。运行结果语句编写main(){}floatr=1.5,pi,area;pi=3.14;area=pi*r*r;area=7.065000printf("area=%f\n",area);注意说明:(1)实型变量由有限的存储单元组成,能提供的有效数字有限,这样就存在舍入误差。(2)一个单精度实型变量只能保证7位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数。2.常量与变量标识符

关键字常量变量C语言程序设计变量分类3、字符变量

(1)字符变量的定义

字符变量的定义一般形式为:类型说明符变量1[=值1],变量2[=值2],…;例题:chara,b;//a,b为字符变量运行结果语句编写main(){}intm;charc;m='A'; //字符赋值给整型变量A,65c=66; //整数赋值给字符变量printf("%c,%d\n",m,m);printf("%c,%d\n",c,c);B,66注意说明:字符变量用来存放字符常量,只能放一个字符。C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。允许把字符变量按整型量输出,也允许把整型量按字符量输出。

3.数据类型转换自动类型转换强制类型转换C语言程序设计转换规则(1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

(2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。(3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。(4)char型和short型参与运算时,必须先转换成int型。(5)在赋值运算中,两边的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。char,shortintunsignedlongdoublefloat低高3.数据类型转换自动类型转换强制类型转换C语言程序设计假设已指定i为整型变量,f为float型变量,d为double型变量,e为long型变量,表达式为:10+'a'+i*f-d/e,则表达式的运行次序?运行次序:

第一步运行:i*f第二步运行:d/e第三步运行:10+'a'第四步运行:10+'a'+i*f

第五步运行:10+'a'+i*f-d/e运行结果语句编写main(){}inti=2;floatf=1.5;doubled=4.0;longe=2;printf(“i*f=%f,i转化为float类型参与运算",i*f);printf(“d/e=%lf,e转化为double类型参与运算",d/e);i*f=3.000000,i转化为float类型参与运算printf("10+'a'=%d,'a'转化为int类型参与运算",10+'a');printf("10+'a'+i*f=%f,int转化为float类型",10+'a'+i*f);printf("10+'a'+i*f-d/e=%lf,float转化为double类型",10+'a'+i*f-d/e);d/e=2.000000,e转化为double类型参与运算10+'a'=107,'a'转化为int类型参与运算10+'a'+i*f=110.000000,int转化为float类型10+'a'+i*f-d/e=108.000000,float转化为double类型3.数据类型转换自动类型转换强制类型转换C语言程序设计一般形式(类型说明符)(表达式)

例题:(double)a将变量a强制转换为double类型(int)(x+y)将x+y的值强制转换为int类型(float)(5%3)将5%3的值强制转换为float类型(float)x/y将x强制转换成float类型后,再参与运算运行结果语句编写main(){}floatf;f=9.8;(int)f=9,f=9.8printf("(int)f=%d,f=%f\n",(int)f,f);注意说明:表达式应该用括号括起来。进行强制类型转换时,得到的是一个所需类型的中间变量,原来变量的类型并未发生改变。谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第2章C语言数据与运算第2讲:运算符与表达式328677005C语言课程交流群1.算术运算符与算术表达式提纲2.赋值运算符与赋值表达式3.逗号运算符与逗号表达式1.算术运算符与表达式运算符表达式C语言程序设计基本算术运算符(1)加法“+”,或正值运算符,如2+9=11,+6。(2)减法“–”,或负值运算符,如9-5=4,-5。

(3)乘法“

”,如4*8=32。(4)除法“/”,如7/2=3,整除结果为整数,舍去小数,只取商。(5)求模“%”,或称求余运算符,要求两侧均为整数,如9%2=1。

2、优先级:1、分类:()>

、/、%>+,–运行结果语句编写main(){}printf("%d,%d\n",3+2,3-2);printf("%d,%d,%f\n",3*2,3/2,3.0/2);printf("%d\n",3%2);5,16,1,1.50000011.算术运算符与表达式运算符表达式C语言程序设计自加自减运算符

1、作用:自增运算使单个变量的值增1,自减运算使单个变量的值减1。2、运算规则:(1)前置运算:运算符放在变量之前:++a、--a,先使变量的值增(或减)1,然后再以变化后的值参与其它运算,即先增减、后运算。(2)后置运算:运算符放在变量之后:a++、a--,变量先参与其它运算,然后再使变量的值增(或减)1,即先运算、后增减。main(){}j=--i;1.算术运算符与表达式运算符表达式C语言程序设计算术运算符应用举例。运行结果语句编写inti=3,j;j=i++;printf("i=%d,j=%d\n",i++,j);j=++i;i=4,j=3printf("i=%d,j=%d\n",++i,j);printf("i=%d,j=%d\n",i--,j);j=i--;printf("i=%d,j=%d\n",--i,j);注意说明:(1)++和--只能用于变量,而不能用于常量或表达式。如:(i+j)++或5--是不合法的。(2)++和--的结合方向是“自右至左”。如:i=4,则-i--相当于-(i--)结果为-4,而i的值为3。(3)运算符的组合原则是自左而右。如:a+++b等价于(a++)+b,而不是a+(++b)。i=7,j=6i=6,j=6i=3,j=5(4)++和--常用于循环语句中,使循环控制变量加(或减)1,指针变量中,使指针上移(或下移)一个位置。1.算术运算符与表达式运算符表达式C语言程序设计定义:

算术表达式是用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,其中运算对象可以是常量、变量、函数等。例如:a*b/c-1.5+’a’是一个合法的算术表达式。注意说明:(1)与数学表达式的书写形式的区别:C语言算术表达式的乘号(*)不能省略。例如:b2-4ac,应该写成b*b-4*a*c。C语言表达式中只能出现字符集允许的字符。例如:πr2应该写成PI*r*r。C语言算术表达式不允许有分子分母的形式。例如:(a+b)/(c+d)不等于a+b/c+d。C语言算术表达式只使用圆括号改变运算的优先顺序(不能用{}[])。1.算术运算符与表达式运算符表达式C语言程序设计定义:

算术表达式是用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,其中运算对象可以是常量、变量、函数等。例如:a*b/c-1.5+’a’是一个合法的算术表达式。注意说明:(2)各运算符的“优先级”和“结合性”:在表达式求值时,按运算符的优先级高低次序执行,如:a-b*c等价于a-(b*c)。如果优先级别相同,则按规定的“结合方向”,如表达式:a-b+c结合性为“自左向右”,所以等价于(a-b)+c。C对于复杂表达式为了清晰起见可以加圆括号“()”强制规定计算顺序。2.赋值运算符与表达式运算符表达式C语言程序设计赋值运算符x=12;作用是执行一次赋值操作,将12赋给变量x。a=5+x;作用是将表达式5+x的值赋给变量a。例如:符号“=”为赋值运算符,作用是将赋值运算符右边的表达式的值赋给其左边的变量。

注意说明:在赋值号“=”的左边只能是变量,而不能是常量或表达式,如不能写成:2=x;或x+y=a+b;2.赋值运算符与表达式运算符表达式C语言程序设计复合赋值运算符+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=例如:在赋值符“=”之前加上其它二目运算符可构成复合赋值符。一般形式:变量复合赋值符=表达式

变量=变量运算符表达式a+=5等价于a=a+5x*=y+7等价于x=x*(y+7)r%=p等价于r=r%p例如:2.赋值运算符与表达式运算符表达式C语言程序设计定义:

由赋值运算符组成的表达式称为赋值表达式。例如:x=5赋值表达式x=5的值为5,x的值也为5。x=7%2+(y=5)赋值表达式的值为6,x的值也为6,y的值为5。a=(b=6)或a=b=6赋值表达式的值为6,a、b的值均为6。a+=a*(a=5) 相当于a=5+5*5,赋值表达式的值为30,a的值最终也是30。一般形式:变量=表达式

功能:赋值表达式的功能是计算表达式的值再赋予左边的变量。2.赋值运算符与表达式运算符表达式C语言程序设计赋值语句应用举例。运行结果语句编写main(){}inta;

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

a=34.567;a=34注意说明:(1)赋值表达式加上一个分号则可构成赋值语句,即:变量=表达式;(2)赋值语句不是表达式,表达式可以用在其它语句或表达式中,而语句只能作为一个单独的语句使用。(3)

C语言规定:可以在定义变量的同时给变量赋值,也叫给变量初始化。例如:intx=5;(4)赋值运算时,当赋值运算符两边数据类型不同时,系统自动进行类型转换,转换原则是:先将赋值号右边表达式类型转换为左边变量的类型,然后赋值。3.逗号运算符与表达式C语言程序设计逗号运算符C语言提供一种用逗号“,”运算符,逗号运算符又称顺序求值运算符。

表达式一般形式:表达式1,表达式2,……,表达式n

运行结果语句编写main(){}inta=1,b=2,c=3,x,y;printf("x=%d,y=%d\n",x,y);

y=(x=a+b,b+c,x+c);x=3,y=6注意说明:(1)逗号表达式的求解过程为:先求解表达式1,再求解表达式2,依次类推。结合性自左向右。(2)表达式n的值就是整个逗号表达式的值。(3)逗号运算符的优先级是所有运算符中最低的。谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第3讲:常见编译错误与调试328677005C语言课程交流群第2章C语言数据与运算1.赋值问题提纲2.求余运算问题3.乘法运算问题1.赋值问题解决办法:C语言程序设计问题描述1:将默认为双精度的实型常量赋值给单精度变量。如果将float修改为double,将%f修改为%lf后,就没有警告了。运行结果语句编写#definePI3.14main(){}r=1.5;floatr,area;area=PI*r*r;编译警告doubler,area;area=7.065000printf("area=%f\n",area);printf("area=%lf\n",area);1.赋值问题解决办法:C语言程序设计问题描述2:两个变量定义的时候,同时赋初值。变量x和y单独定义单独赋初值,将intx=y=2,z;修改为intx=2,y=2,z;运行结果语句编写main(){}z=x+y;

intx=y=2,z;printf("x+y=%d\n",z);编译错误intx=2,y=2,z;x+y=4变化1.赋值问题解决办法:C语言程序设计问题描述3:将带双引号的字符串赋值给了字符变量。将字符串"A"修改为字符'A'。

运行结果语句编写main(){}charch;ch="A";printf("%c的ASCII值为:%d\n",ch,ch);编译警告ch='A';A的ASCII值为:65变化2.求余运算问题解决办法:C语言程序设计问题描述:实型数据参与了%(求余)运算。只有整数才能参加%(求余)运算,将2.0修改为2。

运行结果语句编写main(){}printf("%d\n",3%2.0);编译错误printf("%d\n",3%2);1变化3.乘法运算问题解决办法:C语言程序设计问题描述:两个变量进行乘法运算时,忘记书写乘号“*”。乘法的符号不能省略,将s=lw;修改为s=l*w;运行结果语句编写main(){}doublel=2,w=3,s;s=lw;printf("s=%lf\n",s);s=l*w;s=6.000000变化编译错误谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第3章算法与流程图328677005C语言课程交流群1.算法定义及特征提纲2.流程图表示法3.程序设计结构

1.算法算法定义算法特征C语言程序设计现实生活中解决问题时,一般都要制订一个针对具体问题的步骤和方法,以此为据去实现目标。将为了解决问题所制订的步骤、方法称为算法(Algorithm)。定义:计算下面的分段函数。

算法描述:(2)判断x是否大于0,若大于0,则y为2x-1,然后转第5步;否则进行第3步;(1)输入x的值;

(3)判断x是否等于0,若等于0,则y为0,然后转第5步;否则进行第4步;(4)y为3x+1;(5)输出y的值后结束。

1.算法算法定义算法特征C语言程序设计特征:(1)有穷性:算法中所包含的步骤必须是有限的,不能无穷无止,应该在一个人所能接受的合理时间段内产生结果;(2)确定性:算法中的每一步所要实现的目标必须是明确无误的,不能有二义性;(3)有效性:算法中的每一步如果被执行了,就必须被有效地执行。例如,有一步是计算X除以Y的结果,如果Y为非0值,可有效执行,但如果Y为0值,则无法得到有效执行;(4)有零或多个输入:根据算法的不同,有的在实现过程中需要输入一些原始数据,而有些算法可能不需要输入原始数据;(5)有一个或多个输出:设计算法的最终目的是为了解决问题,为此,每个算法至少应有一个输出结果,来反应问题的最终结果。2.流程图符号表示简单实例C语言程序设计流程图常用的符号:起止框输入/输出框处理框判断框流程线连接符流程图表示法一般包括三部分:(1)表示相应操作的框;(2)带箭头的流程线;

(3)框内外必要的文字说明。2.流程图符号表示简单实例C语言程序设计用流程图表示下面的分段函数。

3.程序设计结构顺序结构选择结构循环结构C语言程序设计顺序结构流程图:BA

执行过程:先执行A,再执行B。

求x的绝对值,请画出该算法的流程图

。y=|x|输入x输出y3.程序设计结构顺序结构选择结构循环结构C语言程序设计选择结构流程图:

执行过程:先判断条件,如果条件成立,执行A,否则,执行B。条件?B不成立成立A3.程序设计结构顺序结构选择结构循环结构C语言程序设计循环结构流程图:

执行过程:先判断条件,如果条件成立,执行A,再循环判断条件,否则,跳出循环。某学生在操场上跑步,一共要跑四圈,每一圈都要跨过障碍,请画出该算法的流程图。成立不成立条件?A成立不成立圈数≤4?跨障碍谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第4章顺序结构程序设计第1讲:简单语句分析

328677005C语言课程交流群1.算法设计实例介绍提纲2.算法设计实现过程3.C语句的编写方法简单语句分析实例介绍算法设计语句编写假设有一杯红酒和一杯啤酒,如何将两杯酒进行交换?操作步骤如下:1、取一个空杯;2、将红酒杯中的红酒倒入空杯;3、将啤酒杯中的啤酒倒入红酒杯;4、将空杯中的红酒倒入啤酒杯;红酒杯啤酒杯空杯C语言程序设计简单语句分析实例介绍算法设计语句编写假设变量a的值为2,b的值为3,如何将a和b的值进行交换?

算法设计如下:1、定义三个变量a、b和t;2、2存储到a中,3存储到b中;3、将a的值存储到t中;

4、将b的值存储到a中;5、将t的值存储到b中;6、输出a和b的值;abt23C语言程序设计简单语句分析实例介绍算法设计语句编写将具体的算法转化为C语言的标准语句,采用逐条语句编写方法,称为顺序结构程序设计。

算法设计如下:1、定义三个变量a、b和t;2、2存储到a中,3存储到b中;3、将a的值存储到t中;

4、将b的值存储到a中;5、将t的值存储到b中;6、输出a和b的值;运行结果语句编写main(){}inta,b,t;

a=2;b=3;

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

a=3,b=2C语言程序设计谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第4章顺序结构程序设计第2讲:格式化输入与输出函数328677005C语言课程交流群1.scanf函数提纲2.printf函数1.scanf函数格式功能格式控制注意说明函数功能:C语言程序设计函数格式:scanf(格式控制字符串,变量地址列表)通过标准输入设备(键盘、写字板等),按照格式控制字符串中的格式要求为变量地址列表中的变量输入数据。运行结果语句编写main(){}inta,b,t;

a=2;b=3;

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

a=5,b=4假设变量a和b的值任意输入,如何将a和b的值进行交换后输出?

scanf(“%d%d”,&a,&b);变化45↙1.scanf函数格式功能格式控制注意说明C语言程序设计格式控制字符串:格式转换说明符功能描述%d输入一个十进制整数%f输入一个单精度实数%lf输入一个双精度实数%c输入一个字符%s输入一个字符串%o输入一个八进制整数%x输入一个十六进制整数%*表示本输入项只是读入,但不赋给相应变量1.scanf函数格式功能格式控制注意说明C语言程序设计变量地址列表串:变量地址列表由输入项组成,两个输入项之间用逗号分隔,输入项一般由地址符&和变量名组成,即:&变量名。scanf(“%d%d”,&a,&b);//两个变量scanf(“%d”,&a);//一个变量例题:scanf(“%d%d%d”,&a,&b,&c);//三个变量1.scanf函数格式功能格式控制注意说明C语言程序设计注意说明:(1)格式控制字符串中多个格式转换说明符之间没有逗号,输入数据时,通常使用空格键或者回车键来分隔数据;格式转换说明符之间有逗号,输入数据时,一定要用逗号来分隔数据。运行结果语句编写main(){}inta,b;

printf("a=%d,b=%d\n",a,b);(2)格式转换说明符个数和类型必须与变量地址列表一一对应。scanf(“%d%d”,&a,&b);

scanf(“%d,%d”,&a,&b);

a=4,b=545↙变化4,5↙

a=4,b=51.scanf函数格式功能格式控制注意说明C语言程序设计注意说明:(3)*(抑制字符):表示本输入项只是读入,但不赋给相应变量。运行结果语句编写main(){}inta,b;

printf("a=%d,b=%d\n",a,b);scanf("%d%*d%d",&a,&b);

a=123,b=67812345678↙2.printf函数格式功能格式控制注意说明函数功能:C语言程序设计函数格式:printf(格式控制字符串,输出列表)将输出列表中的各个表达式的值按照格式控制字符串中对应的格式输出到标准输出设备(显示屏)。2.printf函数格式功能格式控制注意说明C语言程序设计格式控制字符串:格式转换说明符功能描述%d输出一个十进制整数%f输出一个单精度实数%lf输出一个双精度实数%e或%E按指数格式输出一个实数%c输出一个字符%s输出一个字符串%o输出一个八进制整数%x输出一个十六进制整数2.printf函数格式功能格式控制注意说明C语言程序设计输出列表:输出列表由输出项组成,两个输出项之间用逗号分隔,输出项可以是一般的表达式,也可以是简单变量,即:变量名或者表达式。例题:printf(“%d“,a+b);printf(“%d“,a);2.printf函数格式功能格式控制注意说明C语言程序设计注意说明:(1)格式转换说明符个数和类型必须与输出列表一一对应。运行结果语句编写main(){}inta,b;printf("a=%d\tb=%d\n",a,b);(2)格式控制字符串中可以有转义字符和普通字符。转义字符根据具体作用实现操作,普通字符原样输出。scanf(“%d%d”,&a,&b);

a=2b=323↙2.printf函数格式功能格式控制注意说明C语言程序设计注意说明:(3)修饰符m(正整数):指定输出项所占的宽度,当指定宽度小于实际宽度时按实际宽度输出,当指定宽度大于实际宽度时在前面用空格补足。运行结果语句编写main(){}inta,b;printf("%4d,%4d\n",a,b);(4)修饰符.n(正整数):指定输出的实型数据的小数位数(四舍五入),系统默认小数位数为6。a=123,b=12345;

123,12345

printf("%.1f,%.2f,%.6f\n",x,x,x);

floatx=123.44;123.4,123.44,123.4400022.printf函数格式功能格式控制注意说明C语言程序设计注意说明:(5)修饰符0(数字):指定数字前的空格用0填补。运行结果语句编写main(){}inta=123;printf("%04d\n",a);(6)修饰符-:指定输出项的对齐方式,表示左对齐。0123123

printf("%-4d\n",a);谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第4章顺序结构程序设计第3讲:字符输入与输出函数328677005C语言课程交流群1.getchar函数提纲2.putchar函数1.getchar函数格式功能注意说明函数功能:C语言程序设计函数格式:getchar();从标准输入设备输入一个字符。1.getchar函数格式功能注意说明C语言程序设计注意说明:(1)该函数没有参数,函数的返回值是从输入设备得到的字符。运行结果语句编写main(){}(2)从键盘上输入数据通过回车键结束,送入缓冲区,该函数从缓冲区中读入一个字符赋给字符变量。

ch=YY↙(3)该函数也可以接收回车符。ch=getchar();charch;

printf("ch=%c\n",ch);ch1=getchar();charch1,ch2;

printf("ch1=%c,ch2=%c\n",ch1,ch2);ch2=getchar();ch1=X,ch2=↙X↙getchar();ch1=X,ch2=YX↙Y↙2.putchar函数格式功能注意说明函数功能:C语言程序设计函数格式:putchar(ch);ch可以是一个字符型常量、变量或者是一个不大于255的整型常量或者变量,也可以是一个转义字符。向标准输出设备输出一个字符。2.putchar函数格式功能注意说明C语言程序设计注意说明:(1)输出字符型变量。运行结果语句编写main(){}(2)输出字符型或者整型常量。

ch=YY(3)输出转义字符。putchar(ch);

charch='Y';

putchar(‘I');

putchar(70);IF

putchar('\n');putchar('\007');换行响铃

谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第4章顺序结构程序设计第4讲:常见编译错误与调试328677005C语言课程交流群1.地址问题提纲2.参数问题3.书写问题1.地址问题解决办法:C语言程序设计问题描述:scanf语句输入数据时,变量前没有加‘&’在变量x前加上地址符‘&’。

运行结果语句编写main(){}intx;scanf("%d",x);

printf("%d\n",x);

2编译警告scanf("%d",&x);

变化2↙2.参数问题解决办法:C语言程序设计问题描述1:putchar函数没有字符变量或者字符常量参数在putchar函数形参中加入要输出的字符变量或者字符常量。运行结果语句编写main(){}charch;ch=getchar();putchar();

X编译警告putchar(ch);变化X↙2.参数问题解决办法:C语言程序设计问题描述2:getchar函数中加入了参数。去除getchar函数形参中字符变量或者字符常量。运行结果语句编写main(){}charch;putchar(ch);getchar(ch);

X编译警告ch=getchar();变化X↙3.书写问题解决办法:C语言程序设计问题描述:printf函数少写一个字母f在print后面加上字母f,修改为printf。运行结果语句编写main(){}intx;scanf("%d",&x);print("%d\n",x);

2编译警告printf("%d\n",x);变化2↙谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第5章选择结构程序设计第1讲:条件判断表达式328677005C语言课程交流群1.关系表达式设计提纲2.逻辑表达式设计1.关系表达式设计关系运算符关系表达式C语言程序设计C语言中提供了6种关系运算符:<(小于)<=(小于或等于)>(大于)>=(大于或等于)优先级高==(等于)!=(不等于)优先级低1.关系表达式设计关系运算符关系表达式C语言程序设计注意说明:(2)关系运算符的优先级低于算术运算符。

(3)关系运算符的优先级高于赋值运算符。(1)前4种关系运算符的优先级别相同,后两种也相同,但前4种高于后2种。例如:“>”优先于“==”,“<=”与“>=”优先级相同。

表达式c>a+b,应该先算a+b,然后再和c进行比较。

表达式a=b>c,应该先b和c进行比较,然后再将结果赋值给a。

1.关系表达式设计关系运算符关系表达式C语言程序设计定义:用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式等)连接起来的式子,称为关系表达式。结果描述:关系表达式的值有两个1和0,当关系表达式成立时,其值为1,当关系表达式不成立时,其值为0,C语言中以1代表“真”,以0代表“假”。例如:已知a=1,b=2,c=3,则关系表达式a>b的结果为假,值为0。关系表达式a+b==c的结果为真,值为1。1.关系表达式设计关系运算符关系表达式C语言程序设计判断整型变量n为偶数,怎么书写关系表达式?何如编写关系表达式?结果:能被2整除的数据称为偶数,那么可以写成n%2==0。判断成绩变量score为及格,怎么书写关系表达式?结果:成绩大于等于60分称为考试及格,那么可以写成score>=60。2.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计C语言中提供了3种逻辑运算符:&&(逻辑与)||(逻辑或)!(逻辑非)注意说明:(1)“&&”和“||”是双目运算符,它要求有两个运算量,且结合方向为左结合,如:a>b&&a<c。(2)“!”是单目运算符,它只要求有一个运算量,且结合方向为右结合,如!a。2.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计注意说明:(3)!的优先级高于算术运算符,“&&”和“||”的优先级都低于算术运算符和关系运算符,高于赋值运算符,同时“&&”优先级又高于“||”。!(非)算术运算符关系运算符&&和||赋值运算符高低例如:a+b>c&&x+y<b

等价于

((a+b)>c)&&((x+y)<b)a>b&&c>d

等价于

(a>b)&&(c>d)!b==c||d<a

等价于

((!b)==c)||(d<a)2.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计当两个表达式a和b的值为不同组合时,各逻辑运算会得到相对应的值:

ABA&&BA||B!A000010非0011非00010非0非01102.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计定义:用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。注意说明:(1)C语言编译系统在给出逻辑运算结果时,以数字1表示“真”,以数字0表示“假”。(2)在判断一个量是否为“真”时,以0表示“假”,以非0表示“真”。2.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计(1)逻辑与表达式定义:设A,B是两个表达式,如果一个表达式通过运算符的优先级别和结合方向最终可归结为A&&B的形式,则称这个表达式为逻辑与表达式,简称与表达式。例如:计算过程:对于与表达式A&&B,先计算A的值,当A的值为0时,不再计算B(此时说明与表达式的值一定为0);当A为非0时,再计算B。表达式5>0&&4>2,由于5>0为真,4>2也为真,表达式的结果也为真。2.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计(2)逻辑或表达式定义:设A,B是两个表达式,如果一个表达式通过运算符的优先级别和结合方向最终可归结为A||B的形式,则称这个表达式为逻辑或表达式,简称或表达式。例如:计算过程:对于或表达式A||B,先计算A,当A值为非0时,不再计算B(此时说明或表达式的值一定为1);当A的值为0时,再计算B。

表达式5>0||5>8,由于5>0为真,不用再计算5>8的结果,表达式的结果也就为真。2.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计(3)逻辑非表达式定义:设A是一个表达式,如果某个表达式通过运算符的优先级别和结合方向最终可归结为!A的形式,则称这个表达式为逻辑非表达式,简称非表达式。例如:计算过程:对于或表达式!A,先计算A,然后取反。

表达式!(5>0),由于5>0为真,然后取反变为假,表达式的结果也就为假。2.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计特殊情况:在逻辑表达式的求解过程中,并不是所有的逻辑运算符都被执行.(1)表达式a&&b&&c求解过程中,只有a为真时,才需要求b的值,只有a和b都为真时,才需要求c的值。只要a为假,就不需要求b和c的值,整个表达式的值一定为假。如果a为真,b为假,就不需要求c的值,整个表达式的值也一定为假。(2)表达式a||b||c求解过程中,只有a为真时,就不需要求b和c的值,整个表达式的值一定为真。如果a为假,b为真,就不需要求c的值,整个表达式的值也一定为真。例题:设a=10,b=11,c=12,求下列表达式的值:

a%2==0&&c%2==0

结果:1

a+b<c&&b+c>a结果:0

a&&b||c结果:1b+c||b-c||a结果:1

!(a>b)&&!c||a>c结果:02.逻辑表达式设计逻辑运算符逻辑表达式C语言程序设计已知三条边分别为a,b,c,满足构成一个三角形,怎么书写关系表达式?结果:三角形任意两条边之和大于第三条边,那么可以写成

a+b>c&&a+c>b&&b+c>a。判断某一年变量year为闰年,怎么书写关系表达式?结果:能被4整除,但不能被100整除称为闰年,或者能被400整除也称为闰年,那么可以写成year%4==0&&year%100!=0||year%400==0。谢谢328677005C语言课程交流群191290281主讲教师专属QQ号C语言程序设计第2讲:选择结构的基本形式328677005C语言课程交流群第5章选择结构程序设计1.单分支结构提纲2.双分支结构3.多分支结构1.单分支结构格式流程知识应用C语言程序设计if语句格式:if(表达式)语句

执行描述:其中表达式可以是任意表达式,语句可以是一条语句,也可以是复合语句。执行过程:先判断表达式是否为真,如果为真,那么执行语句,如果为假,那么跳过语句执行后面的程序。真假表达式语句流程图:1.单分支结构格式流程知识应用C语言程序设计编程实现,输入C语言课程的成绩,如果大于等于60分,则输出“成绩及格”。算法设计:1、定义一个成绩变量;2、输入成绩;3、如果成绩大于等于60分,则输出“成绩及格”;流程图:真假score≥60输出“及格”输入score1.单分支结构格式流程知识应用C语言程序设计编程实现,输入C语言课程的成绩,如果大于等于60分,则输出“成绩及格”。算法设计:1、定义一个成绩变量;2、输入成绩;3、如果成绩大于等于60分,则输出“成绩及格”;运行结果语句编写main(){}intscore;scanf("%d",&score);if(score>=60)printf("C语言成绩及格!\n");90↙C语言成绩及格!1.单分支结构格式流程知识应用C语言程序设计编程实现,输入两个整数,将这两个数按照从小到大的顺序输出。算法设计:1、定义三个变量,其中一个用于交换;2、输入两个整数;3、如果第一个数大于第二个数,则交换;4、输出两个整数;流程图:真假a>b交换a和b输入a,b,t输出a和b编程实现,输入两个整数,将这两个数按照从小到大的顺序输出。1.单分支结构格式流程知识应用C语言程序设计算法设计:1、定义三个变量,其中一个用于交换;2、输入两个整数;3、如果第一个数大于第二个数,则交换;4、输出两个整数;运行结果语句编写main(){}inta,b,t;

scanf("%d%d",&a,&b);if(a>b){t=a;a=b;b=t;

}32↙printf("a=%d,b=%d\n",a,b);a=2,b=32.双分支结构格式流程知识应用C语言程序设计if…else…语句格式

:if(表达式)语句1else语句2执行描述:其中表达式可以是任意表达式,语句1和语句2可以是一条语句,也可以是复合语句。执行过程:先判断表达式是否为真,如果为真,那么执行语句1,如果为假,那么执行语句2,语句1和语句2只能执行其中一个。流程图:真假表达式语句2语句12.双分支结构格式流程知识应用C语言程序设计编程实现,输入一个整数,判断是奇数还是偶数。算法设计:1、定义一个整型变量;2、输入一个整数;3、如果该整数除2取余等于0,则输出该数是偶数,否则输出该数是奇数;流程图:真假n%2==0输出奇数输入n输出偶数2.双分支结构格式流程知识应用C语言程序设计编程实现,输入一个整数,判断是奇数还是偶数。算法设计:1、定义一个整型变量;2、输入一个整数;3、如果该整数除2取余等于0,则输出该数是偶数,否则输出该数是奇数;运行结果语句编写main(){}intn;

scanf("%d",&n);

if(n%2==0)printf("该数是偶数!\n");elseprintf("该数是奇数!\n");315↙

温馨提示

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

评论

0/150

提交评论