1、第一章 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,s
2、um=%dn”,a,b,sum);/*把计算结果输出到用户屏幕上把计算结果输出到用户屏幕上*/第第9行行 函数功能函数功能:求两数之和求两数之和程序说明:程序说明:第第1行是表示包含一个头文件。行是表示包含一个头文件。第第2行:行:main是函数名,表示是主函数,每个是函数名,表示是主函数,每个C程程序都必须有一个主函数,也只能有一个主函数。序都必须有一个主函数,也只能有一个主函数。主函数具体写法为:主函数具体写法为:main()/*此处写函数的具体执行语句此处写函数的具体执行语句*/第第3行和第行和第9行:一对大括号行:一对大括号 之间的内容是函数的之间的内容是函数的具体内容。具体内容。第第
3、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赋值赋值
4、*/printf(“a+b=%dn”,a+b);输出结果输出结果:a+b=302、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程序中变量
5、必须先定义,后使用。程序中变量必须先定义,后使用。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)标识符的第一个字符必须是字母或下划线。)标识符
6、的第一个字符必须是字母或下划线。(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 in
7、clude (3)用户自定义标识符:由用户根据需要定义)用户自定义标识符:由用户根据需要定义的标识符的标识符,主要用于变量和自定义函数的命名。主要用于变量和自定义函数的命名。要求:不能和关键字相同,也尽量不要和预要求:不能和关键字相同,也尽量不要和预定义标识符相同。定义标识符相同。例例6:以下不能定义为用户标识符的是以下不能定义为用户标识符的是()A)scanf B)Void C)_3com_ D)int分析:分析:int是关键字是关键字,scanf是系统关键字是系统关键字例例7:以下不合法的用户标符是(以下不合法的用户标符是()A)j2_KEY B)Double C)4d D)_8_分析:标
8、识符不能以数字开头分析:标识符不能以数字开头A,DC二、常量二、常量常量:常量:是指在程序执行过程中其值保持不变的量是指在程序执行过程中其值保持不变的量1、普通常量、普通常量整型常量整型常量如:如:3 23 100 实型常量实型常量如:如:12.3 2.71828字符常量字符常量如:如:a?(特征:单引号)(特征:单引号)字符串常量字符串常量如:如:“abcd”(特征:双引号)(特征:双引号)2、符号常量、符号常量例例8:计算圆面积的:计算圆面积的C语言程序语言程序#include#define PI 3.14159main()float r,area;r=12.5;area=PI*r*r;/
9、*等价于:等价于: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:下列定义变量的语句中错误的是:下列定义变量
10、的语句中错误的是_A)int _int;B)double int_;C)char FOR;D)float US$;分析:选项分析:选项D中变量名不符标识符的定义要求中变量名不符标识符的定义要求D第三节第三节 整型数据整型数据一、数制转换一、数制转换数制说明数制说明十进制:数码有十进制:数码有0,1,2,9,运算规则为加法,运算规则为加法逢十进一,减法借一当十逢十进一,减法借一当十二进制:数码有二进制:数码有0,1,运算规则为加法逢二进一,运算规则为加法逢二进一,减法借一当二减法借一当二八进制:数码有八进制:数码有0,1,27,运算规则为加法逢,运算规则为加法逢八进一,减法借一当八八进一,减法借
11、一当八十六进制:数码有十六进制:数码有0,1,29,A,B,C,D,E,F,运算规则为加法逢十六进一,减法借一当十六运算规则为加法逢十六进一,减法借一当十六例:二、八、十、十六进制数大小对照表例:二、八、十、十六进制数大小对照表十进制十进制01234567二进制二进制011011100101110111八进制八进制01234567十六进制十六进制01234567十进制十进制89101112131415二进制二进制10001001 1010 1011 1100 1101 1110 1111八进制八进制1011121314151617十六进制十六进制89ABCDEF二、整型常量二、整型常量1、十进
12、制常量,如:、十进制常量,如: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)oXF123CD例例12:以下程序运行后的输出结果是(:以下程序运
13、行后的输出结果是()main()int x=0210;printf(“%Xn”,x);说明:说明:%X表示按十六进制数的形式输出结果表示按十六进制数的形式输出结果输出结果:输出结果:88三、整型变量三、整型变量整型变量分为整型变量分为)(int)(int)(int)(unsignedlongshort无符号整型长整型基本整型短整型数据类型数据类型关键字关键字占用的字占用的字节数节数数值范围数值范围基本整型基本整型signed int4-214783648 214783647短整型短整型signed short int2-3276832767长整型长整型signed long int 4-214
14、783648 214783647无符号整型无符号整型unsigned int404292967295无符号短整无符号短整型型unsigned short int2065535无符号长整无符号长整型型unsigned long int404292967295不同类型的整型数在内存中所占用的字节数和数值范围四、整数在内存中的存储形式四、整数在内存中的存储形式1.有符号正整数有符号正整数有符号正整数的存储形式称为有符号正整数的存储形式称为”原码原码”例例:正整数正整数10,在内存中的二进制为在内存中的二进制为:(短整数短整数)1514 1312 11 10 98765432100 00 0 0 0
15、0 0 0 0 0 0 1 0 1 0符号位:0表示正,1表示负最小正整数(十进制数是1)00000000000000000000000000000001最大正整数是:(十进制是231-1=214783647)01111111111111111 111111111111111 2.负整数负整数C语言中语言中,负整数以负整数以”补码补码”形式存放形式存放.例例:求求-6的在内存中的存储形式的在内存中的存储形式(1)求正整数求正整数6在内存中存放的原码在内存中存放的原码为为”0000000000000110”(2)求原码的反码求原码的反码:即将原码中的即将原码中的”0”变变”1”,”1”变变”0”
16、,由此可得反码由此可得反码:1111111111111001(3)将反码加将反码加1,就可得就可得-6的补码为的补码为:1111111111111010练习练习:求求-10的补码的补码 -10的补码是的补码是11111111111101103.无符号整数无符号整数3130 210 数值位最大 的无符号整数是1111111111111111 1111111111111111(十进制数是232-1=4292967295)和-1的补码在内存中的存放形式一致例例:有以下程序有以下程序main()unsigned int a;int b=-1;a=b;printf(“%u”,a);/*%u表示按无符号数
17、格式输出表示按无符号数格式输出*/程序运行结果是程序运行结果是_A)-1 B)4292967295 C)32767 D)-32768B第四节第四节 实型数据实型数据一、实型常量一、实型常量在在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)注意:指数形式实型常量要求注意:指数形式实型常
18、量要求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.234e0CB二、实型变量二、实型变量C语言中,实型变量分为单精度(语言中,实型变量分为单精度(float)和双精度和双精度(double)两种。两种。定义形式如下:定义形式如下:float x,y,z
19、;double a,b,c;数据类型数据类型 关键字关键字 占用的占用的字节数字节数取值范围取值范围有效数有效数字字单精度单精度float4-103810387双精度双精度double8-10308103081516第五节第五节 算术运算符及表达式算术运算符及表达式一、算术运算符和算术表达式一、算术运算符和算术表达式1、算术运算符与优先级次序、算术运算符与优先级次序 高高 低低()()-(正负号)(正负号)*/%+-(加、减号加、减号)同级同级同级同级同级同级单目运算单目运算双目运算符双目运算符说明:说明:(1)算术运算符两边的运算对象类型必须一致才能)算术运算符两边的运算对象类型必须一致才能
20、运算,运算结果的类型与运算对象类型一致。运算,运算结果的类型与运算对象类型一致。如:如: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 是错误的。是错误的。如果运算对象为负时,运算结果的符号与被除数相如果运算对象为负时,运算结果的符号与被除数相同同 如:如:
21、-5%2,5%-22、算术表达式就是用算术运算符和圆括号连接起来、算术表达式就是用算术运算符和圆括号连接起来的式子的式子例:表达式例:表达式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.5D练习:请计算下列表达式的值练习:请计算下列表达式的值已知:已知: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)
22、%6+a/b88.52第六节第六节 赋值表达式赋值表达式一、赋值运算符和赋值表达式一、赋值运算符和赋值表达式赋值运算符:赋值运算符:使用格式:变量名表达式使用格式:变量名表达式常见情况说明:常见情况说明:1.x+1=3 2.x=y3.x=y=254.i=i+15.int x;6.x=1.2;7.6.float y;8.y=3;注:=的左边只能是变量例:有以下定义语句:例:有以下定义语句:double a,b;int w;long c;若各变量已正确赋值,若各变量已正确赋值,则下列选项中正确的表达式是则下列选项中正确的表达式是_A)a=a+b=b+B)w%(int)a+b)C)(c+w)%(in
23、t)a D)w=a%bC二、复合赋值运算二、复合赋值运算复合赋值运算符:复合赋值运算符:+=,-=,*=,/=,%=含义:含义:变量变量+=表达式表达式 等价于:等价于:变量变量=变量变量+(表达式表达式)1.n+=1 等价于表达式:等价于表达式:n=n+(1)2.n-=2+y等价于表达式:等价于表达式:n=n-(2+y)3.n*=m+1等价于表达式:等价于表达式:n=n*(m+1)4.n/=10-m*2等价于表达式:等价于表达式:n=n/(10-m*2)例:已知变量例:已知变量n的初始值为的初始值为8,计算表达式计算表达式n+=n*=n-2注:计算方向从右向左注:计算方向从右向左(右结合性)
24、右结合性)练习:练习:已知已知int a=3,b=4;请计算:请计算:1.a+=a-=b2.a*=b+13.a*=a/=b-2三、自加与自减运算符三、自加与自减运算符运算符:运算符:+,-如:如:i+,+i,x-,-yi+,+i相当于相当于i=i+1i-,-i相当于相当于i=i-1说明:说明:1.增量运算的运算对象只能为变量,不能是常量或是增量运算的运算对象只能为变量,不能是常量或是表达式表达式2.自加、自减运算符的结合方向是自加、自减运算符的结合方向是“从右到左从右到左”,如,如-i+.3.前缀算运符(如前缀算运符(如+i,-x),先进行自增或自减,再参与先进行自增或自减,再参与其它运算,后
25、缀算运符(其它运算,后缀算运符(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)123435
26、13 C)12343514 D)12343513A四、逗号运算符和逗号表达式四、逗号运算符和逗号表达式运算符:,(逗号)运算符:,(逗号)如:如: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,1C/*比较z=(x+,y+,+y);*/课后练习课后练习:第二章的习题第二章的习题