C语言最新教案.docx
- 文档编号:29433454
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:64
- 大小:76.55KB
C语言最新教案.docx
《C语言最新教案.docx》由会员分享,可在线阅读,更多相关《C语言最新教案.docx(64页珍藏版)》请在冰豆网上搜索。
C语言最新教案
1.main是主函数名,C语言规定必须用main作为主函数名。
其后的“()”中间可以是空的,但“()”不能省略。
一个C程序可以包含任意多个不同名的函数,但必须有且只有一个主函数,程序总是从主函数开始执行。
2.在函数的起始行后面是函数体,由一对大括号“{}”括起来的语句集合。
函数体中一般包含变量定义语句和执行语句。
且执行语句必须放在定义语句之后。
3.每个语句和变量定义的最后必须要有一个分号(即使是程序的最后一个语句也应包含分号)。
分号是C语句的必要组成部分。
4.C语言用“/*……*/对程序进行注释。
注意“/”和“*”之间不能有空格。
注释可以出现在程序中任意合适的地方,必须成对出现,它对程序的运行不起作用,但在注释中可以说明变量的含义、程度段的功能等。
一个好的C程序应有必要的注释,以便阅读。
5.“#include“stdio.h””通常称为命令行,必须用“#”号开头,最后不能加“;”,因为它不是C程序中的语句。
“stdio”是系统提供的文件名,该文件中包含着有关输入输出函数的信息,调用不同的库函数,应当包含不同的头文件。
※重点提示:
main是主函数名,C语言规定必须用main作为主函数名。
每个语句和变量定义的最后必须要有一个分号,分号是C语句的必要组成部分。
“#include“stdio.h””是命令行,必须用“#”号开头,最后不能加“;”,因为它不是C程序中的语句。
标识符的命名规则:
(1)C语言规定标识符只能由字母(大小写均可,但区分大小写)、数字和下划线3种字符组成
(2)第1个字符必须为字母或下划线(3)已被C语言本身使用,不能用作变量名、常量名、函数名等。
常量:
在程序运行过程中,其值不能被改变的量称为常量。
C语言中有4中基本常量:
整型常量、实型常量、字符常量和字符串常量。
此外,C语言中还经常使用两种表现形式不同的常量:
转义字符常量和符号常量。
整型常量:
整型常量也称整数,包括正整数、负整数和零。
实型常量:
实型常量即实数,又称为浮点数。
字符常量:
字符常量使用一对单引号括起来的一个字符。
如‘a’、‘B’、‘?
’等。
以下是关于字符常量的几点说明。
1)单引号只作为定界符使用,不是字符常量的组成部分。
2)单引号内字符不允许是单引号或反斜杠。
3)字符常量具有数值,该值就是该字符在规定字符集中的ASCII码值。
4)字符常量在机器内以整型常量形式存放,故字符常量与整型常量等价。
字符串常量:
字符串常量是由一对双引号括起来的字符序列,如“hello”、“howareyou”等。
C中没有专门存放字符串的字符串变量,因此存放时需放在一个字符型数组中。
转义字符常量:
转义字符常量是以一个“\”开头的字符序列。
每个转义字符都有其特定含义和功能。
具体含义在后面章节中介绍。
符号常量:
C中,允许用一标识符来代表一常量,即常量可以用“符号”来代替,代替常量的符号就称为符号常量。
以下几点说明:
1)符号常量在使用之前必须先定义,定义方法为用宏替换“#define”使一个标识符与某个常量相对应,其一般形式为:
#define标识符常量表达式<或字符串>。
2)一个#define只能定义一个符号常量。
3)符号常量定义式的行尾没有分号。
变量:
变量是指在程序运行期间其值可以发生变化的量。
一个变量在内存中占据一定的存储单元,在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。
变量如常量一样,也分为整型变量,实型变量,字符型变量等。
在定义变量的同时要说明该变量的类型,系统编译时根据变量及其类型为它分配相应数量的存储空间。
※重点提示:
C语言中的基本数据类型有:
整型、实型和字符型。
整型常量的表示形式
C语言中整型常量有如下三种表示形式:
1)十进制。
用一串连续的数字来表示,如32768,-768,0等。
2)八进制。
用数字0开头,各位用0~7这8个数之一表示,如010,011等。
在程序中不能在一个十进制整数前面加前导零。
3)十六进制。
用0x或0X开头,各位用0~9以及A~F(或a~f)这16个数之一表示,如0x24B,0X34a等。
整型常量又有短整型(shortint)、基本类型(longint)和无符号型(unsigned)的区分。
整型变量是指值为整数的变量。
其命名与标识符的规则相同。
变量一经说明,在编译时就能为其分配相应的存储单元。
整型变量可分为基本型、短整型、长整型和无符号型四种。
基本型的整型变量用类型名关键字int进行定义,如inta;或inta,b,c;
基本型整型变量在一般微机中占用2个字节的存储单元,该变量中允许存放的数值范围是:
-32768~32767。
在程序中定义变量时,编译程序会为相应的变量开辟内存单元,但并没有在该单元中存放任何初值,这时变量中的值是无意义的,即称为变量值“无定义”。
C语言规定,可以在定义变量的同时给变量赋初值,即变量的初始化。
如:
main(){inta=1,b=4,i=8;……}
整型数据的分类
整型常量与变量有短整型(shortint)、基本整型(int)、长整型(longint)和无符号型(unsigned),以及有符号型的区分。
不同的计算机系统对这几类整型数所占用的字节数和数值范围有不同规定,表2.1列出了微型机中这些类型的整型数所占用的字节数和数值范围。
在表示一个长整型常量时,应该在其后面加一字母后缀L(或l),如123L,345l等。
基本型:
以int表示
短整型:
以shortint或short表示
长整型:
以longint或long表示(123l、123L)
无符号基本型(unsignedint)
无符号短整型(unsignedshort)
无符号长整型(unsignedlong)
一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数范围扩大一倍。
inti;/*变量i数值范围:
-32768~32768*/
unsignedintj;/*变量j数值范围:
0~65535*/
整数在内存中的存储形式
计算机中最小的存储单位是“位(bite)”,8个二进制位组成一个“字节(byte)”,若干个字节组成一个“字(word)”。
C语言中,一个int整数通常用两个字节存放,其中最高位存放整数的符号,正整数最高位为0,负整数最高位为1。
正整数:
C中,正整数以原码形式存放。
C中,负整数在内存中是以整数的“补码”形式存放。
求某个二进制码的补码,步骤如下:
1)求原码的反码,即将0→1,1→02)将所得的反码加1,即得原码的补码。
无符号整数:
无符号整数的最高位不再用来存放整型符号,故无符号数不可能是负数。
对于无符号整数,最高位不再用来存储整数的符号,全部用来存放整数。
※重点提示:
在C语言中,对于有符号整数,用最高位(最左边一位)用来存储整数的符号,若是正整数,最高位为0,若是负数,最高位放置1。
对于正整数用“原码”形式存放,对于负整数用“补码”形式存放。
实型常量
实型常量的表示形式
实型常量又称实数。
在C语言中可以有两种表示形式:
1)小数形式。
由整数部分、小数点和小数部分组成。
格式如下:
±整数部分.小数部分,小数点不能省略。
如0.78,﹣.897,0.0都是合法实数表示。
2)指数形式。
由尾数部分、字母E或e和指数部分组成,其格式如下:
±尾数部分E(或e)±指数部分,指数部分只能是整数,且三个组成部分均不能省略。
如12.34E+9,﹣5.453e﹣10是合法的实数表示,如果写成e2、.6E3.5、.e2、e、E等都是不合法的指数形式。
注意,在字母E(或e)的前后以及数字之间不得插入空格。
※重点提示:
±尾数部分E(或e)±指数部分,指数部分只能是整数,且三个组成部分均不能省略。
实型变量
1.实型变量是指值为实数的变量。
其命名与标识符的规则相同。
2.实型变量分为两种类型:
1)单精度型(float),分配4个字节的存储单元,数值范围约为﹣1038~1038,并提供7位有效位;小于1038的数被处理成零值。
2)双精度型(double),分配8个字节的存储单元,数值范围约为﹣10308~10308,并提供15~16位的有效位;小于10308的数被处理成零值。
在计算机内存中,实数一律是以指数形式存放的,而不是小数的形式。
例如:
floata;doubleb;a=123456.789e5;b=123456.789;
基本的算术运算符
+、-、*、/、%。
这些运算符需要两个运算对象,称为双目运算符。
除求余运算符外,运算对象可以是整型也可以是实型。
说明:
1)乘号“*”不能省略,也不能写成代数式中的“×”或“.”2)若双目运算符两边的类型不一致,则系统将自动按照类型转换规则使两边类型一致后再进行运算。
如一边是实型数,一边是整型数时,系统将自动把整型转换为实型数再进行运算。
3)求余运算符“%”要求参与运算的量必须为整数,且求余的结果符号与被除数相同。
如14%-3的结果为2,-21%4的结果为-1。
4)在C语言中,所有实型数的运算均以双精度方式进行。
若是单精度数,则在尾数部分补0,使之转化为双精度数。
运算符的优先级、综合性和算术表达式
在C语言中,常量、变量、函数调用以及按C语言语法规则用运算符把运算数连起来的式子都是合法的表达式。
表达式都有一个值,即运算结果。
1.算术运算符和圆括号的优先级次序如下:
(由高→低)
()、﹢、﹣、*、/、%、+、-
2.算术运算符和圆括号的结合性
以上所列的运算符,只有单目运算符“+”和“-”的结合性是从右到左,其余运算符的结合性都是从左到右。
如,表达式(4+3)*5/2的运算结果是17,圆括号的优先级要高于乘号和除号;而表达式4+3*5/2的运算结果是11,乘号和除号优先级要高于加号;表达式3*-4与3*(-4)是等价的,因为单目运算符”-“优先级高于乘号。
3.算术表达式
用算术运算符和括号将运算对象连接起来符合C语法规则的式子,称C算术表达式。
运算对象可以是常量、变量、函数等。
关于算术表达式的几点说明:
(1)在表达式中可以使用多层圆括号,但左右括号必须配对。
运算时从内层开始,由内向外依次计算表达式的值。
(2)在求解表达式的值时,若包含不同优先级的运算符,则按运算符的优先级别由高到低运行,若表达式中运算符的级别相同,则按运算符的结合方向进行。
如表达式a+b-c,因为加号和减号的优先级相同,它们的结合性为从左到右,因此先计算a+b,然后把所得的结果减去c。
强制类型转换表达式
形式:
(类型名)(表达式)
其中(类型名)称为强制类型转换运算符,例如:
(float)(x)将x转换成浮点型
(double)(8%3)将8%3转换成双精度型
※重点提示:
在求解表达式的值时,若包含不同优先级的运算符,则按运算符的优先级别由高到低运行,若表达式中运算符的级别相同,则按运算符的结合方向进行。
赋值运算符和赋值表达式
赋值运算符:
赋值符号“=”称为简单运算符,其作用是将一数据或运算表达式的值赋给另一变量。
例如:
a=5是把5赋给变量a,即把5存入变量a对应的存储单元。
关于简单的赋值运算,要注意以下2点:
(1)赋值符“=”左边必须是变量,右边既可以是常量,变量,也可以是函数调用或表达式。
如z=sqrt(3)+2*c。
(2)赋值符“=”与数学中的等号“=”外观相同,但含义、作用不同,如i=i+1,在数学中是不成立的,但在C语言中是正确的。
它的含义是将i当前值加1再赋给变量i。
赋值表达式
用一个赋值运算符“=”将一个变量和一个表达式连接起来的式子称为赋值表达式。
其一般形式为:
变量=表达式
赋值号的左边必须是一个代表某一存储单元的变量名,或代表某存储单元的表达式,赋值运算的功能是先求出右边表达式的值,然后把该值赋给等号左边的变量,即是把数据放入以该变量为标识的存储单元中去。
如a=1b=a/*是将常量1赋给变量a,再把a中值赋给变量b,但a中值不变*/
程序中可以多次给一个变量赋值,相应的存储单元当前的数据就是最后一次所赋的那个数据。
以下是几点说明:
(1)赋值表达式右边的“表达式”,也可以是一个赋值表达式,即出现多个赋值符号的情况。
例如:
a=(b=3),它相当于b=3。
2)赋值表达式中还可以包含复合的赋值运算符,例如:
x+=y*=3也是一个赋值表达式,假设x的初值是5,y的初值是2,则该赋值表达式运算顺序为:
先进行y*=3的运算,再进行x+=6的运算,相当于x=x+6=5+6,因此最后结果是11。
3)如果在赋值表达式最后加一个分号就构成了语句。
4)在C语言中规定最左边变量所得到的新值就是赋值表达式的值,如a=18,则表明该表达式的值为18。
5)赋值运算符的左边只能是变量,不能是常量或表达式。
如a+b=c是不合法的赋值表达式。
复合的赋值表达式
复合的赋值运算符
在赋值符“=”之前加上其他运算符,可以构成复合的赋值运算符。
例如在“=”前加上“+”运算符,就成了复合运算符“+=”。
例如有:
x+=4它相当于表达式:
x=x+4即先使x加4,再赋给x。
采用这种复合运算符,一是为了简化程序,二是为了提高编译效率,C语言规定可以使用以下10种复合赋值运算符,如下:
+=、﹣=、*=、%=、<<=、>>=、&=、^=、\=、|=
其中后五种是有关位运算方面的,将在后续章节中介绍。
注意:
复合赋值运算符的优先级与赋值运算符的优先级相同。
复合的赋值表达式
如已有变量a,值为3,计算表达式a+=a-=a+a的值。
因为赋值运算符与复合的赋值运算符的优先级相同,且运算方向自右向左,所以计算步骤为:
1)先计算a+a,该表达式值为6。
2)再计算a-=6,即a=a-6,此时a的值仍为3,所以表达式值为-3。
3)最后计算a+=-3,即a=a+(-3),此时a的值已经改变为-3,所以表达式的值为-6。
即表达式a+=a-=a+a最终的值为-6,而a最终的值也是-6。
将字符型赋给整型时,由于字符型为1个字节,而整型是2个字节,故将字符的ASCII码值放到整型量的低8位中,高8位为0。
将整型赋给字符型时,只把低8位赋给字符量。
※重点提示:
赋值运算符的左边只能是变量,不能是常量或表达式。
计算表达式的值时,参加运算的各个数据类型都转换成数据长度最长的数据类型,然后再计算,计算的结果是数据长度最长的数据类型。
自加运算符和自减运算符
自增运算符(++)是使运算量增加1,自减运算符(--)是使运算量减1,它们有以下几种形式:
++aa值先增加1后再参与其他运算;a++先参与其他运算再使a值增加1;--aa值先减少1后再参与其他运算;a--先参与其他运算再使a值减少1
关于自增和自减运算,要注意以下几点:
(1)++a和a++的区别。
(2)自增和自减运算符只能用于变量,不能用于常量或表达式,如2++是不合法的。
(3)但自增、自减运算符和其他运算符混合使用时,应注意其结合性为“自右向左”,如-a++,即相当于-(a++)。
逗号运算符和逗号表达式
“,”是C语言提供的一种特殊运算符,用逗号将表达式连接起来的式子称为逗号表达式。
其一般形式为:
表达式1,表达式2,……,表达式n
说明:
1.逗号运算符的结合性为从左到右,先计算表达式1,最后计算表达式n,最后一个表达式的值就是该逗号表达式的值。
2.逗号运算符再所有运算符中优先级最低。
3.表达式可以嵌套,即表达式1和表达式2本身也可以是逗号表达式,如(x=2*5,x-3),x*4,整个表达式的值应为40。
4.并非所有出现逗号的地方就可以作为逗号表达式,如printf(“%d,%d”,a,b)。
※重点提示:
自增和自减运算符只能用于变量,不能用于常量或表达式。
逗号运算符的结合性为从左到右,最后一个表达式的值就是该逗号表达式的值。
第三章顺序结构
在赋值表达式的尾部加上一个“;”号,就构成了赋值语句也称表达式语句。
以下是几点说明:
1.赋值语句必须在最后出现分号,分号是语句中必不可少的部分,如“x+=10”是表达式,“x+=10;”是赋值语句。
2.任何赋值表达式都可以加上分号而称为赋值语句。
3.赋值语句是一种可执行语句,应当出现在函数的可执行部分。
※重点提示:
分号是赋值语句中必不可少的部分,若没有分号,则只是一个赋值表达式而已。
3.2数据输出
3.2.1printf函数的一般调用形式
printf函数是标准输出函数,功能是在终端设备上按指定格式进行输出。
printf()函数的一般形式为:
printf(“格式控制”,输出项序列)
例如:
printf(”a=%d,b=%c”,a,b)中,”a=%d,b=%c”称为格式控制字符串,a,b是输出项序列中的输出项,都是printf函数的参数。
格式控制符的作用有:
1.为各输出项提供格式转换说明。
它总是由“%”符号开始,紧跟其后的是格式描述符。
2.提供需要原样输出的文字或字符。
输出项表中的各输出项要用逗号隔开,输出项可以是合法的常量、变量或表达式。
格式转换说明的个数要与输出项的个数相同,使用格式描述符也要与它们一一对应且类型匹配。
“格式控制”部分是用双引号括起来的字符串,也称“转换控制字符串”,它包括三种信息:
格式说明符、转义字符和普通字符。
1.格式字符
格式说明符由%和格式字符组成,如%d、%f等。
作用是转换输出数据的格式。
对于不同类型的数据用不同的格式字符。
下面详细介绍几种常用的格式字符。
①d格式字符。
用来输出十进制整数。
其用法如下:
(a)%d,按型数据的实际长度输出。
例如:
printf("%d,\n",x);
如果x=789,则输出结果为:
789
(b)%1d,输出长整型数据。
例如:
printf("%1d,\n",a); 如果a被定义为:
longinta=56789; 则输出结果为:
56789
如果用%d格式输出,就会出错,因为整型数据的范围是-32768~32767。
对超出此范围的long型数据应当用%1d格式输出。
(c)%-md,m是指定的输出字符宽度。
如果数据的位数小于m,则输出共占m位,数据左靠齐,右边补空格,若省略“-”号,则右靠齐,左边补空格;如果数据的位数大于m,则按实际位数输出。
例如:
printf("%5d,%5d\n",a,b);
如果a=7788,b=56789,则输出结果为:
7788,56789
②f格式字符。
用来输出实数(包括单精度、双精度),以小数形式输出。
其用法如下:
a)%f,实数的整数部分全部输出,小数部分保留六位。
需要指出的是,并非全部数字都是有效数字。
单精度实数有效位数一般是7位,双精度实数有效位数一般是16位。
b)%mf,输出实数占m位,小数保留六位。
c)%.nf,输出的实数,总宽度按实际宽度,小数部分占n位。
(d)%-m.nf,输出的实数包括小数点在内共占m位,其中小数部分占n位。
如果数据的实际宽度小于m,则左靠齐,右边补空格,省略“-”时,右靠齐,左边补空格。
如:
main(){ floata=123.45;
printf(“%f,%11f,%.2f,%-10.3f\n”,a,a,a,a); }
程序运行结果为:
123.449997,123.449997,123.45,123.450
说明:
a的值应该是123.45,但输出的结果却是123.449997,这是由于实数在内存中的存储误差引起的。
③c格式字符。
用来输出一个字符。
例如:
charch='a';printf("%c",ch);
则输出一个字符‘a’。
也可以指定输出字符的宽度,如:
printf("%2c",ch);
则输出‘a’,即ch变量输出占2列,第一列补空格。
④s格式字符。
用来输出一个字符串。
其用法如下:
(a)%s,按原样输出一个字符串。
例如:
printf("%s","HappyNewYear!
");
则输出字符串:
HappyNewYear!
(b)%-ms,与整数输出格式“%-md”类似。
c)%m.ns,输出占m列,但只取字符串中左边n个字符。
这n个字符输出在m列的右边,左边补空格。
(d)%-m.ns,n个字符输出在m列范围的左边,右边补空格。
若n>m,则m自动取n值,即保证n个字符正常输出。
如:
字符串输出示例
main()
{ printf(“%3s,%6.3s,%.2s,%-5.4s\n”,“Hello”,“Hello”,“Hello”,“Hello”);}
程序运行结果为:
格式字符
说明
c
输出一个字符
d或i
输出带符号的十进制整数
o
以八进制无符号形式输出整形数
(不带前导0)
x或X
以十六进制无符号形式输出整形数(不带前导),
x输出小写字母,X输出大写字母
u
按无符号的十进制形式输出整型数
f
以带小数点的形式输出单精度和双精度数
E或e
以[-]m.dde(或E)±xx的指数形式输出浮点数。
d的
个数由精度指定,精度为0时小数部分不输出
G或g
由系统决定采用%f格式还是采用%e格式,以使输
出宽度最小
s
输出字符串中的字符,直到遇到“\0”。
或者输出由
精度指定的字符数
p
输出变量的内存地址
%
打印一个%
Hello,Hel,He,Hell
2.附加格式字符
在%和上述格式字符之间可以插入以下几种附加符号,如下所示。
附加字符
功能说明
m(m为一正整数)
规定输出数据的最小宽度为m位
.n(n为一正整数)
对实数,表示输出的实数保留n位小数,对字符串,表示截取字符串的前n个字符
-
使输出数据在域内向左靠齐,省“-”,向右靠齐
表3.2输出常用附加格式字符
3.长度修饰符
长度修饰符加在%和格式字符之间,对于长整型一定要加l(long),h可用于短整型(short)或无符号短整形数的输出。
如printf(“%ld,\n”,a);
4.转义字符
可以在printf函数中的“格式控制”部分使用“转义字符”,如“\n”、“\b”、“\f”、“\t”、“\r”、“\344”等。
※重点提示:
如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示。
调用printf函数时的注意事项
1.在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。
例如:
printf("x=%f,c=%d",x,c);
中的x与%f对应,c与%d对应。
2.在格式控制串中,格式说明与输出项的个数应相同,若格式说明少于输出项,则多余的输出项不输出,相反,对于多余的格式将输出不定值。
3.在格式控制串中,可以包含任意的合法字符(包括转义字符)。
4.输出项序列中可以是变量、常量或表达式。
如果输出项是表达式时,则printf函数将先对其进行运算,然后输出它的运算结果。
如:
main()
{
printf("x=%f",3*4.8+9/4-sqrt(2.0));
}
输出结果为:
x=32784.400000
5.printf函数允许没有输出项序列部分。
它表示输出一个字符串。
此时printf函数成为如下格式:
printf("输出字符串");
例如:
printf("Pleaseinputanumber:
");
则输出:
Pleaseinputanumber:
6.printf函数的返回值通常是本次调用中输出字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 最新 教案
![提示](https://static.bdocx.com/images/bang_tan.gif)