第一章 C语言的基础知识
更新时间:2023-07-18 21:19:01 阅读量: 实用文档 文档下载
- 第一章夺子推荐度:
- 相关推荐
第一章 C语言的基础知识
教学课时:
本章考点:
教学内容
一、 对C语言的初步认识
通过讲解以下这个简单的C程序例子,让学生对C程序有个大致了解。 1.计算两数之和
#include<stdio.h> main() {
int a, b , c ; a=10; b=20; c=a+b;
printf("%d" , c);
}
2.输出一句话 I Love You!
#include<stdio.h>
main() {
printf(“I Love You !\n”);
}
3.计算两数之积
#include<stdio.h> main() {
int a, b , c ; a=10; b=20;
c=a*b; /* 计算a*b的值并赋给c*/ printf("%d" , c); } 注: (1)
(2)C程序中有且仅有一个main函数,程序从main函数开始执行,并且在main函数中结束。
(3)用“{ }”括起来的部分称为“函数体”,“{”和“}”必须成对出现,表示开始和结束。
(4)main()函数的格式: main() {
函数体 }
(5)变量先定义,后使用。
(6)printf为C语言的屏幕输出函数,注意写法。
(7)每个语句必须有一个分号,表示语句结束,是语句的一部分。书写程序时应遵循的规则:语句中的不同单词至少且必须加一个空格以示间隔,若已有明显的间隔符,也可不再加空格来间隔;最好一个语句占一行。
(8)书写程序时应遵循的规则:语句中的不同单词至少且必须加一个空格以示间隔,若已有明显的间隔符,也可不再加空格来间隔;最好一个语句占一行。 (9)注释格式:/* */必须配对,且不能嵌套,/ 和*之间不能有空格 练习:试写求园的面积 试写求矩形的面积 历年真题讲解:
1. 以下叙述中正确的是()A
A.c程序中注释部分可以出现在程序中任意合适的地方 B.花括号只能作为函数体的定界符
C.构成c程序的基本单位是函数,所有函数都可以由用户命名 D.分号是c语句之间的分隔符,不是语句的一部分 2. 以下叙述中正确的是()C A.c程序的基本组成单位是语句
B.c程序中的每一行只能写一条语句 C.简单c语句必须以分号结束 D.C语句必须在一行内写完 3. 以下叙述中正确的是()C
A.c程序中的注释只能出现在程序的开始位置和语句的后面 B.c程序书写格式严格,要求一行内只能写一个语句
C.c程序格式自由,一个语句可以写在多行上 D.用c语言编写的程序只能放在一个程序文件中 4. 改错
二、标识符
1、标识符命名规则
(1)只能包含字母、数字和下划线 (2)第一个字符必须是字母或下划线
(3)C语言是大小写敏感的,如grade和Grade是两个不同的标识符。 例:
练习:p10习题 2、标识符分类
(1)关键字:已经事先定义好了,程序远不能再将它们另做它用。参看教材附录二,记住常用的关键字(如int、if、do、break、case、char等)。
(2)预定义标识符:在C语言系统中已经使用了的标识符(如printf、scanf、define、include等)。预定义标识符可用作用户标识符。
(3)用户标识符:根据用户需要定义的标识符。用户标识符不能是关键字。 历年真题讲解
1:
C
A.void B.8_8 C._0_ D.unsigned A.1-1 B.1—1 C._11 D.1—— 2:以下选项中不合法的标识符是:
C
练习:p11习题
三、常量与变量
1、常量
在程序的运行过程中,其值不发生改变的量。 2、常量分类 (1)直接常量
整型常量(如12、-3、0)、
整型常量的几个表示方法: 十进制数:0到9的数字组成 八进制数:以0开头的数字
十六进制:以0x或0X开头,由0-9和A-F组成。如:0xff 例:下列合法的八进制是:
C
注:整型常量没有二进制的
实型常量,有小数点的常量(如4.6、-1.23、1.2E+3) (1)小数形式
小数点前或后可以没有数字,但不能同时没有数字。 (2)指数形式 可以参考口诀:“E前E后必有数,E后必须为整数”, 例:p18习题
字符常量,由单个字符组成的量,用单引号引起(如'A'、'6')。
字符串常量,至少由一个字符组成的量,用双引号引起在内存中自动加/0做结束,开辟两个内存单元(如:“abc” “beijing”)
(2)符号常量
符号常量在使用之前必须先定义,其一般形式为: #define 符号常量标识符 常量值
通过以下两个实现功能相同(求圆面积)的程序,给学生解释使用与不使用符号常量两者的区别。
程序1: 程序2: #define R 5 main() #define PI 3.14159 { main() float area; { int r; float area; r=5; area=PI*R*R; area=3.14159*r*r; printf("%f", area); printf("%f", area); } } 注:习惯上符号常量的标识符用大写字母。符号常量的值在其作用域内不能被改变。
历年真题讲解:
例1:以下选项中,能用作数据常量的是:
D
例2.以下选项中不能作为c语言合法常量的是:
A
例3:以下选项中不属于字符常量的是:
B
3、变量
在程序的运行过程中,其值可以改变的量。 4、变量的定义
(1)变量定义的一般形式为: 类型说明符 变量名; 注:变量名是合法的标识符,但不可以是关键字;允许在一个类型说明符后,定义多个相同类型的变量,各变量名之间用逗号间隔,最后一个变量名之后必须以“;”号结尾;一般变量的定义放在函数体的开头部分。
变量必须先定义后使用。 (2)变量的分类: 整型变量分类 (1)短整型变量 类型说明符为:[signed] short [int],占用2个字节,取值范围为-32768~32767。 (2)基本整型变量
类型说明符为:[signed] int,占用4个字节,取值范围为-2147483648~2147483647。
(3)长整型变量
类型说明符为:[signed] long [int],占用4个字节,取值范围与基本整型变量相同。
(4)无符号短整型变量
类型说明符为:unsigned short [int],占用2个字节,取值范围为0~65535。 (5)无符号基本整型变量
类型说明符为:unsigned [int],占用4个字节,取值范围为0~4294967295。 (6)无符号长整型变量
类型说明符为:unsigned long [int],占用4个字节,取值范围同无符号基本整型变量相同。
注:整型变量的各种类型,在编程中一定要注意,不要让一个整型变量超出该类型的取值范围,以免发生溢出错误。可引导学生自己推出每种变量的表示范围。
实型变量分为:单精度实型(float)和双精度实型(double)。float占用4个字节,double占用8个字节。
四、数制转换
1
二、八、十六进制
转换方法:将十进制数除以基数(二进制基数为2、八进制基数为8、十六进制基数为16),并记录余数,若商不为0,则继续用商除以基数,并记录余数,直到商为0,余数倒排列写下来,即为转换后的二进制或八进制或十六进制。
注意:在转换过程中,余数为0也要记录下来,很多学生在做题时,忽略了余数0。
通过以下3个例子的讲解,使得学生对十进制转换成二、八、十六进制的方法进一步掌握。
(36)10=( 100100 )2 (39)10=( 47 )8 (27)10=( 1B )16 36 0 8 39 7 16 27 B 0 8 4 4 16 1 1 1 0 0
2 4 0 2 2 0 2 1 1
2 十进制
转换方法:按位展开,对应位乘以权值(权值即为基数的n次幂,n从0开始),最后将所有乘积相加,所得结果即为十进制数。
(10101)2=( )10 (67)8=( )10 (1A2)16=( )10 2= 1×24+0×23+1×22+0×21+1×20 =( 21 )10 4
2 2 1 20
8=6×81+7×80=( 55 )10
1 80
16=1×162+A×161+2×160=( 418 )10
2 161 160
3 二进制
转换方法:八进制(或十六进制)数的每一位数字用三位(或四位)二进制数表示,最后将对应的二进制数依次写下来,即为二进制数。
注:八进制数7、6、5、4、3、2、1、0对应的三位二进制数分别为111、110、101、100、011、010、001和000。十六进制数F、E、D、C、B、A、9、8、7、6、5、4、3、2、1、0对应的四位二进制数分别为1111、1110、1101、1100、1011、1010、1001、1000、0111、0110、0101、0100、0011、0010、0001和0000。
(642)8=( )2 (3B5C)16=( )2 8=(110100010)2 16=( 0011101101011100 )2
010 1100
给学生思考时间,如何将二进制转换成八进制、十六进制? 4.二进制与八进制、十六进制之间的转换
(1)八进制→二进制:把每个八进制数的单个数字用三位二进制数字来表示
(2)十六进制→二进制:把每个十六进制数的单个数字用四位二进制数来表示
(3)二进制→八、十六进制:从右向左每三位或四位二进制数为一组,不够往前面补0
五、整数和实数
前面介绍常量与变量时已介绍过,这里不再详细介绍。直接讲解p16页习题p17页习题
六、整数在内存中的存储形式
对于整型数据,在内存中都是以补码形式存储的。用补码存储一个有符号整数,最高位(最左边的一位)存放符号,正数最高位为0,负数最高位为1。计算规则如下:
正整数:原码=反码=补码。 负整数:
反码=原码除符号位(符号位为1)以外,数值部分按位取反 补码=反码的末位加1
注:无符号整数表示的都是正数,所以其中最高位不再存放符号。在二级C考试中,只需要记住无符号整数65535表示成有符号整数-1,无符号整数65534表示成有符号整数-2,其他依次类推。
例:求下列数的原码反码及补码 23 -12
历年真题讲解: main() {
unsigned int a; int b=-1; a=b;
printf("%u" , a); }
七、算术运算和赋值运算
注:这五种算术运算符以/和%为主,进行除运算时,注意两边都为整数的情况;“%”运算符左右两边必须为整数,余数的符号同被除数的符号相同
注:在二级C考试中,经常考强制类型的转换格式,尤其是一对小括号的位置。
历年真题讲解:
1. 若有定义语句: int x=10;则表达式x-=x+x的值为:B A.-20 B.-10 C.0 D.10 2.设有定义:int x=2;,以下表达式中,值不为6的是:D A.x*=x+1 B.x++,2*x C.x*=(1+x) D.2*x,x+=2
3.若变量均已正确定义并赋值,以下合法的c语言赋值语句是:A
历年真题讲解: main()
{ int m=011,n=11;
printf("%d,%d\n",++m,n++); printf("%d,%d\n",--m,n--); }
/*输出结果为:10,11*/ /*输出结果为:9,12*/
十、逗号运算符及逗号表达式
1、逗号运算符(,) 在逗号表达式中,逗号运算符具有从左向右的结合性,最后一个表达式的值是整个逗号表达式的值。
2、要和变量多余的情况区别开(参考P24、例2) /*【程序讲解】逗号表达式*/ #include "stdio.h" main()
{ int a1=3,a2=9;
printf("%d,",(a1,a2)); }
注:为学生讲解,将P24、例2中的最后一条语句改为“printf("%d\n",a1,a2);”的情况输出结果为3,使得学生注意逗号运算与变量多余的区别,这是二级C考试中,经常会出错的。
3、优先级别(重点讲解P24、例3)
在所有运算符中,逗号运算符优先级最低。 4.逗号表达式:用逗号将表达式连接起来的式子 格式:表达式1,表达式2, 例:
/*【程序讲解】逗号表达式*/ #include "stdio.h" main()
{ int x,y,z; x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d",x,y,z); }
例题:int i=5;
int a,b,c;
十一、C语言中的语句
1、表达式语句
表达式; 算术表达式、赋值表达式、复合赋值表达式、增量表
达式、逗号表达式
2、空语句:一条语句没有任何内容,仅一个分号“;” ;
3、复合语句
用花括号括起来的多条语句组成一个复合语句。
复合语句在语法上等同于一个语句。
{语句1; 语句2; 语句n;} 4. C
语言的三大基本结构
顺序结构:程序中的语句按照顺序逐条执行 选择结构:根据条件判断结果,有选择性执行 循环结构:根据一定条件,某一段程序会反复执行
十二、注释
C语句中有两种注释方法: (1)//:只能注释一行
(2)/* */:可注释多行,在“/*”和“*/”之间的都属于注释部分。 注:注释在程序运行时,不执行,第二种注释需要注意,在二级C考试中出现过,参考教材P26,第4题。
十三、字符数据
1、字符常量分类 (1)一般字符常量
用一对单引号括起来的单个字符,如'A'、'b'、'5'。 (2)转义字符常量
在一对单引号内,以“\”开头,后跟一个字符,或1~3位八进制数。另外也可以是1~2位的十六进制数,但必须以“\x”开头(在这里,一定注意x不能是大写的X)。
注:在二级C考试中,转义字符是必考的,可以参考P28,例1。更要注意“\”后跟的1~3位八进制数不能以数字0开头。
2、字符变量
定义字符变量的格式为:char 变量名; 注:字符型数据在内存中占1个字节。 3、字符型数据参与运算 采用其ASCII码进行运算。
注:字符型数据可以按“%d”和“%c”输出,注意这两者区别。参考P29,第3题。
十四、位运算
1、位运算符(~、<<、>>、&、^、|) 2、位运算注意事项
(1)对象只能是整数或字符型数据。
(2)进行位运算前,一定要先将数据转换成二进制数。 (3)各个位运算符的优先级
注:字符型数据参与位运算时,采用其ASCII码进行运算。 3、位运算的规则
(1)~:0变1,1变0。
(2)<<:a<< i表示a向左移动i位,右补0。
(3)>>:a>> i表示a向右移动i位,左补符号位。
(4)&:a&b a、b对应的二进制位,同时为1,则结果即为1,否则为0。 (5)|:a|b a、b对应的二进制位,只要有一个为1,则结果即为1,否则为0。
(6)^:a^b a、b对应的二进制位,相同为0,不同为1。
注:在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。两个相同的数进行按位异或(^),结果为0。在历年考试中出现过类似的题,参考P31、例2,学生只要记住该规则,就可节省过多的做题时间。其次要掌握“&”和“|”,可以参考P31,例1进行讲解。
第一章课后习题
正在阅读:
第一章 C语言的基础知识07-18
广州市五年级下册数学期末考试试卷05-06
教育书籍摘抄感言03-09
初中自我介绍范文大全优秀3篇03-28
传说中文字是谁发明02-13
对录制语音信号的采样和滤波处理11-13
借贷记账法练习题及答案05-14
肠瘘的发病机制、诊断及治疗10-11
采区轨道上山作业规程1- 新101-31
小兔过河看图写话300字06-19
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 基础知识
- 语言