第一章C语言基础知识ppt课件.ppt
第一章 C语言基础知识,第一节 C语言的基本格式,一、一个简单的C语言程序例1:计算两个整数之和第1行: include “stdio.h”第2行: main() /*主函数*/第3行:第4行: int a,b,sum; /*变量说明*/第5行: a=10; /*把整数10赋值给变量a*/第6行: b=20; /*把整数20赋值给变量b*/第7行: sum=a+b; /*把两数之和赋值给变量sum*/第8行: printf(“a=%d,b=%d,sum=%dn”,a,b,sum); /*把计算结果输出到用户屏幕上*/第9行 函数功能:求两数之和,程序说明:第1行是表示包含一个头文件。第2行:main是函数名,表示是主函数,每个C程序都必须有一个主函数,也只能有一个主函数。 主函数具体写法为: main( ) /*此处写函数的具体执行语句*/第3行和第9行:一对大括号 之间的内容是函数的具体内容。第4行:int是英语“整数(integer)”的简写。 a,b,sum是变量,第5行的意思是让变量a的值为10.第6行的意思是让变量b的值为20第7行表示把变量a加上变量b的和赋值给变量sum.第8行是将计算的结果输出到屏幕上。,其它说明:1、程序中的注释: C语言程序用/*开头,用*/结尾表示程序的注释例2: main( ) int a=0,b=0; a=10; /*给a赋值 b=20; 给b赋值*/ printf(“a+b=%dn”,a+b);输出结果:,a+b=10,2、C语言函数可以分为两大部分:定义部分和执行部分,定义部分应在执行部分的前面,当然两个部分都不是必须的。例3:main( ) int a=0,b=0; a=10; /*给a赋值 b=20; 给b赋值*/ printf(“a+b=%dn”,a+b);,定义部分,执行部分,例4: main( ) printf(“Hello,spels!”); 此例中只有执行部分,没有定义部分,执行部分,3、C程序中变量必须先定义,后使用。4、C程序中语句后必须有一个分号。5、C程序书写格式自由。 一般一条语句写一行,采用缩进格式main( ) int a=0,b=0; a=10; b=20; printf(“a+b=%dn”,a+b);6、C程序的书写是区分大小写的。 如main和Main是不一样的。,一、标识符1、命名规则 (1)标识符只能由字母、数字、下划线组成。 (2)标识符的第一个字符必须是字母或下划线。 (3)标识符是区分大小写的。如:Abc和abc是不同的 例5:判断下列标识符是否合法 a x sum 3s s3 spels yes? yes-no _to 123 _123 r,第二节 标识符、常量与变量,2、标识符的分类 (1)关键字:见书附录二。如: int ,float , char , double (2)预定义标识符 主要有各种函数名称和编译预处理命令 如:printf sin scanf define include (3)用户自定义标识符:由用户根据需要定义的标识符,主要用于变量和自定义函数的命名。要求:不能和关键字相同,也尽量不要和预定义标识符相同。,例6: 以下不能定义为用户标识符的是( ) A) scanf B) Void C) _3com_ D) int分析:int是关键字例7: 以下不合法的用户标符是( )A)j2_KEY B) Double C)4d D) _8_分析:标识符不能以数字开头,D,C,二、常量常量:是指在程序执行过程中其值保持不变的量1、普通常量整型常量如:3 23 100 实型常量如: 12.3 2.71828字符常量如: a ? (特征:单引号)字符串常量如: “abcd” (特征:双引号),2、符号常量例8:计算圆面积的C语言程序#define PI 3.14159main( ) float r,area; r=12.5; area=PI*r*r; /*等价于:area=3.14159*r*r; */ printf(“area=%fn”,area);注:习惯上符号常量一般用大写字母书写,以区别于变量名(变量名一般用小写字母书写)。,三、变量变量:就是在程序运行过程中其值可以改变的量。例9:变量的应用#include “stdio.h”main( ) int a=10,b=20,c; a=30; b=40; c=a+b; printf(“c=%dn”,c);,例10:下列定义变量的语句中错误的是_A) int _int; B) double int_;C)char FOR; D) float US$;分析:选项D中变量名不符标识符的定义要求,D,第三节 整型数据,一、数制转换数制说明十进制:数码有0,1,2,9,运算规则为加法逢十进一,减法借一当十二进制:数码有0,1,运算规则为加法逢二进一,减法借一当二八进制:数码有0,1,27,运算规则为加法逢八进一,减法借一当八十六进制:数码有0,1,29,A,B,C,D,E,F,运算规则为加法逢十六进一,减法借一当十六,例:二、八、十、十六进制数大小对照表,表示形式如 120D,10111B,347Q,AB9H或(120)10,(10111)2,(347)8,(AB9)161、将十进制数转换成二进制规则:除2取余例:(45)10=( )22、将十进制数转换成八进制、规则:除8取余例: (45)10=( )8,101101,55,3、将十进制数转换成十六进制规则:除16取余例: (45)10=( )16练习: 请计算100转换成二进制,八进制,十六进制分别是多少?(100)10=( )2(100)10=( )8(100)10=( )16,2D,1100100,144,64,4、二进制、八进制、十六进制转十进制规则:按权展开例:(1011011)2=( )10 (123)8=( )10 (12B)16=( )10练习:(11101)2=( )10 (37)8=( )10 (AF)16=( )10,91,83,299,29,31,175,5、二进制与八进制、十六进制的转换方法:二进制与八进制转换是三位对应一位 二进制与十六进制转换是四位对应一位(13)8=( )2(E3)16=( )2(1001101)2=( )8(1001101)2=( )16练习:(24)8=( )2 (8D)16=( )2(111011101)2=( )8(111011101)2=( )16,1011,11100011,115,4D,010100,10001101,735,1DD,二、整型常量1、十进制常量,如: 0,129,-232、八进制常量以数字0开头,如:0127,0343、十六进制常量以0 x或0X开头,如:0 x23,0 xAF注:C语言中不能直接表示二进制数常量例10:以下选项中可作为C语言合法整数的是_A)10110B B) 0386 C)0Xffa D)x2a2例11:不合法的十六进制整数是_A) 0 x16 B) 0Xabc C)0 x15 D)oXF123,C,D,例12:以下程序运行后的输出结果是( )main( ) int x=0210; printf(“%Xn”,x);说明:%X表示按十六进制数的形式输出结果输出结果:,88,三、整型变量整型变量分为,不同类型的整型数在内存中所占用的字节数和数值范围,四、整数在内存中的存储形式1.有符号正整数有符号正整数的存储形式称为”原码”例:正整数10,在内存中的二进制为:(短整数),符号位:0表示正,1表示负,最小正整数(十进制数是1)00000000000000000000000000000001最大正整数是:(十进制是231-1= 214783647)01111111111111111 111111111111111,2.负整数C语言中,负整数以”补码”形式存放.例:求-6的在内存中的存储形式(1)求正整数6在内存中存放的原码为”0000000000000110”(2)求原码的反码:即将原码中的”0”变”1”,”1”变”0”,由此可得反码:1111111111111001(3)将反码加1,就可得-6的补码为:1111111111111010练习:求-10的补码 -10的补码是1111111111110110,例:已知补码求真值 已知补码1111111111111101,求真值方法:(1).将补码各位取反(2)将得到的结果加1(3)将得到的二进制数转换成十进制数(4).根据补码的最高位判断整数的正负.结果为:-3,注:四个字节(32位)存放的最小整数为10000000000000000000000000000000(十进制为-214783648),3.无符号整数,数值位,最大 的无符号整数是1111111111111111 1111111111111111(十进制数是232-1=4292967295)和-1的补码在内存中的存放形式一致,例:有以下程序main( ) unsigned int a; int b=-1; a=b; printf(“%u”,a); /* %u表示按无符号数格式输出*/程序运行结果是_A) -1 B) 4292967295 C)32767 D) -32768,B,第四节 实型数据,一、实型常量在C语言中,实型常量有两种表示形式:小数形式和指数形式。(1)小数形式 如:3.14159 0.158 12. 0.0 .36 -18.0(2)指数形式 1e5 (表示数值1105) 1.25E4 (表示数值1.25104) 2.0E-3 (表示数值2.010-3)注意:指数形式实型常量要求E的前面要有数,E的后面是整数如:e5 1.25E 2.0E1.3 都是不正确的。,例:以下选项中合法的实型常数是_A)5E2.0 B) E-3 C) .2E0 D) 1.3E例:以下选项中,不能作为合法常量的是_A)1.234e04 B)1.234e0.4 C)1.234e+4 D) 1.234e0,C,B,二、实型变量C语言中,实型变量分为单精度(float)和双精度(double)两种。定义形式如下: float x,y,z; double a,b,c;,第五节 算术运算符及表达式,一、算术运算符和算术表达式1、算术运算符与优先级次序,说明:(1)算术运算符两边的运算对象类型必须一致才能运算,运算结果的类型与运算对象类型一致。 如:5/2, 1/2 , 2*4 (2)如果算术运算符两边的运算对象类型不一致,则低类型向高类型转换。类型从高到低(double,float ,long,int ,short,char) 如:5.0/2, 2.5*2 (3)%两边的运算对象必须是整数 如:5%2, 100%3, 3%6 , 而 5.4%2 是错误的。 如果运算对象为负时,运算结果的符号与被除数相同 如:-5%2, 5%-2,2、算术表达式就是用算术运算符和圆括号连接起来的式子例:表达式3.6-5/2+1.2+5%2的值是_ A) 4.3 B)4.8 C) 3.3 D)3.8二、强制类型转换格式:(类型名)表达式如: (int)2.36 结果为2 (float)5/2 结果为2.5,D,练习:请计算下列表达式的值已知:int a=5,b=25,x=5;(1). a+b%4*(int)(2.5/0.7)(2).(float)(a+2)/2+a%b(3).(b-a)%6+a/b,8,8.5,2,第六节 赋值表达式,一、赋值运算符和赋值表达式赋值运算符:使用格式:变量名表达式常见情况说明:x+1=3 x=yx=y=25i=i+1int x; x=1.2;6. float y; y=3;, 注:=的左边只能是变量,例:有以下定义语句:double a,b;int w ;long c;若各变量已正确赋值,则下列选项中正确的表达式是_A) a=a+b=b+ B) w%(int)a+b)C) (c+w)%(int)a D)w=a%b,C,二、复合赋值运算复合赋值运算符:+=,-=, *= ,/= ,%=含义:变量+=表达式 等价于:变量=变量+(表达式)n+=1 等价于表达式:n=n+(1)n-=2+y等价于表达式:n=n-(2+y)n*=m+1等价于表达式:n=n*(m+1)n/=10-m*2等价于表达式:n=n/(10-m*2),例:已知变量n的初始值为8,计算表达式n+=n*=n-2注:计算方向从右向左(右结合性)练习:已知int a=3,b=4;请计算:a+=a-=ba*=b+1a*=a/=b-2,三、自加与自减运算符运算符:+,-如:i+,+i,x-,-yi+,+i相当于i=i+1i- ,-i相当于i=i-1说明:1.增量运算的运算对象只能为变量,不能是常量或是表达式2.自加、自减运算符的结合方向是“从右到左”,如-i+.3.前缀算运符(如+i,-x),先进行自增或自减,再参与其它运算,后缀算运符(i+,x- )先参与其它运算再自增或自减,如:设 int i=3,j;试计算i,j的值:1、j=i+;结果:i的值是4,j的值是3分析:相当于:j=i,i=i+12、j=+i;结果:i的值是4,j的值是4分析:相当于:i=i+1,j=i,例:有以下程序 main( ) int m=12,n=34; printf(“%d%d”,m+,+n); printf(“%d%dn”,n+,+m);程序的运行结果是_A)12353514 B)12343513 C)12343514 D)12343513,A,四、逗号运算符和逗号表达式运算符:,(逗号)如:x=5,y=6,z=7运算规则: (1)从左向右依次运算(2)最后一个表达式的值是整个逗号表达式的值例:x=(y=1,+y,y+),例:有以下程序 main( ) int a1=3,a2=9; printf(“%dn”,(a1,a2);以下叙述中正确的是_A)程序输出3 B)程序输出9 C)格式说明符不足,编译出错 D)程序运行时产生出错信息,B,例:有以下程序 main( ) int x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%d”,x,y,z);程序运行后的输出结果是_A)2,3,3 B)2,3,2 C)2,3,1 D)2,2,1,C,/*比较z=(x+,y+,+y);*/,课后练习:完成第四分册笔试练习题 第一章的习题,