内容正文:
专题1:C语言基础及其基本数据类型
《编程语言基础—C语言》课程
专题复习讲练测
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
考纲要求
一
了解C语言的基础知识
掌握宏定义和文件包含的使用
掌握C语言的基本数据类型
掌握C语言中常量和变量的表现形式
知识点梳理
二
知识点梳理
二
1、C语言中的32个关键字
void:声明函数无返回值或无参数 unsigned:无符号数据类型,修饰整型
char:字符型类型数据 struct:结构体声明
float:单精度浮点型数据 union:共用体声明
int:整型数据 enum:枚举声明
double:双精度浮点型数据 typedef:声明类型别名
short:短整型数据,修饰int,可省int sizeof:得到特定的类型或特定类型变量的大小
long:长整型数据,修饰int,可省int auto:指定为自动变量
signed:有符号数据类型,修饰整型 static:指定为静态变量
知识点梳理
二
1、C语言中的32个关键字
register:指定为寄存器变量 if:条件语句
extern:指定为外部变量 else:条件语句否认分支(与if连用)
const:常量 switch:开关语句(多重分支语句)
volatile:将变量声明为可变的 case:开关语句中的分配标记
return:用在函数体中,返回特定值(若为void,则不返回值) default:开关语句中的其他分支
continue:完毕当前循环,开始下一循环 for:for循环结构
break:跳出当前循环或switch语句 do:do……while循环结构
goto:无条件跳转语句 while:while循环结构
知识点梳理
二
2、C程序的特点
#include <stdio.h>/*“#”开头为预处理命令,“.h”为头文件,“stdio”为输入输出库函数*/
#include <conio.h>
int sum(int x,int y)//子函数
{int z;
z=x+y;
return z;//返回变量z的值给主函数
}
main()//主函数
{int a,b,c;
scanf(“%d,%d”,&a,&b);/*输入两个整数*/
c=sum(a,b);//计算两个整数之和
printf(“sum=%d
”,c);//输出结果
getch();}
知识点梳理
二
(1)一个C程序是由若干个函数构成的。任何一个C源程序必须有且只有一个main()函数,但可以包含0~若干个的其他函数。
(2)无论main()函数处于程序中的什么位置,一个C程序总是从main()函数开始执行的。
(3)函数体内({})可以包含若干变量定义和函数说明以及若干语句,每条语句均以分号结束。
(4)注释行从“//”开始到本行结束;连续若干注释行可以以“/*”开始,并以“*/”结束。所有注释部分都不被执行。
(5)C程序书写格式自由,每行可以有多条语句,一条语句也可以分写在多行上;但并不表示可以在语句的任何位置进行换行。
2、C程序的特点
知识点梳理
二
3、编译预处理命令
(1)不带参数的宏定义
①命令的一般形式:#define 标识符 字符串
②定义中的“标识符”为用户所定义的标识符,称为“宏名”,宏名一般使用大写字母,但并非规定。
③在进行预编译时,将程序中出现的宏名均替换成“字符串”内容,这一过程称为“宏展开”。
如:#define PI 3.1415926
“2*PI*r”宏展开为“2*3.1415926*r”。
知识点梳理
二
3、编译预处理命令
(2)带参数的宏定义
①命令的一般形式:#define 宏名(形式参数表) 字符串
②定义中的“字符串”应包含括号中所指定的形式参数。注意:宏名与括号之间不能加空格,否则将成为不带参数的宏定义。
③带参数的宏展开:预编译时,遇到带实参的宏名,则按命令行中指定的字符串从左到右进行转换。
原则:凡遇形参则以实参代替,非形参字符则原样保留。
例:#define AREA(r) 3.14*(r)*(r)
“AREA(3+2)”宏展开为:3.14*(3+2)*(3+2)
知识点梳理
二
3、编译预处理命令
(3)文件包含
①作用:将一个源程序文件包含到另一个源程序文件中,它以“#include”开头。
②格式:
#include <文件名> /*C编译系统将在系统指定的路径下搜索尖括号中的文件,一般适用于包含库函数的头文件*/
#include “文件名” /*系统首先会在用户当前的目录中搜索双引号中的文件,如果找不到,再按照系统指定的路径下搜索,一般适用于包含用户文件的头文件*/
知识点梳理
二
4、C语言的基本数据类型
类型标识符 名 称 字节数 范 围
char 字符型 1 (0 ~255)
short 短整型 2 -215 ~ +215-1 (-32768~32767)
int 或long 长整型 4 -231 ~~+231-1
(-2147483648~2147483647)
float 浮点型(实型) 4 10-37 ~10+38 (绝对值)
double 双精度浮点型 8 10-307 ~10+308(绝对值)
unsigned short 无符号短整型 0~65535
unsigned long int 无符号长整型 0~4294967295
在C语言中(B)指的是字节(Byte),1B=8bit(位)。1KB=1024B.
知识点梳理
二
5、常量和变量
(1)常量和符号常量
在程序的运行过程中,其值保持不变的量成为常量。常量可以用一个标识符来表示,称为符号常量,可以在程序开头用#define命令来定义。
例如:#define PI 3.1415926
此后,只要是在文件中出现的PI均可用3.1415926来代替。
知识点梳理
二
5、常量和变量
(2)整型常量
例 子 说 明
-1234 十进制整型常量 (包含数字0~9)
01234 八进制整型常量(以0开头,包含数字0~7)
0x1234 十六进制整型常量
(以0x或0X开头,包含数字0~9、字母A~F或a~f)
0L long型十进制整型常量(以l或L结尾)
知识点梳理
二
5、常量和变量
(2)整型常量
①二、八、十六进制转十进制
方法:按权展开相加
例:
(1010)2=1*+0*+1* +0* =(10)10
(1A)16=1*+10*=(26)10
(12)8=1*+2*=(10)10
②十进制转其他进制
方法:整数部分反复除,取余数,逆序排。(如右图所示)。
知识点梳理
二
5、常量和变量
(2)整型常量
③二进制转换成八、十六进制
方法:以小数点为中心,向两边按3位(或四位)分组,最后一组不足时用0补足,然后把3位(或4位)二进制转换为1位八进制数(或十六进制数)。
知识点梳理
二
5、常量和变量
(2)整型常量
④八、十六进制转换为二进制
方法:把一位八进制(或十六进制)转换为3位(或4位)二进制数,不够3位(或4位)用0补足。
例:(1357)8=( )2 (147)16=( )2
知识点梳理
二
5、常量和变量
(2)整型常量
⑤二进制补码的计算
任何类型的数据在计算机中都是以二进制补码形式存储的。short型数据在内存中占16位,int型数据在内存中占32位,其中最高位为符号位(无符号型除外),1表示负数,0表示正数。
正数的补码等于其原码,而负数的补码等于其原码的反码加1。
例:0000 0000 0101 0011 表示83(除R取余法)
1111 1111 1010 1100 “83的反码”
1111 1111 1010 1101 表示-83(83的反码加1)
知识点梳理
二
5、常量和变量
(2)整型常量
⑤二进制补码的计算
例:求-10的补码
取-10的绝对值得到“10”
求10的二进制形式得到原码
0000 0000 0000 1010(一个short int整数占16位)
1111 1111 1111 0101(一个整数占16位)//对“1010”取反得到反码
1111 1111 1111 0110 //再加“1”得到补码
知识点梳理
二
5、常量和变量
(3)浮点型常量
①C语言中的浮点类型主要分为单精度(float型)和双精度(double型)两种。
②在C语言数据中,1和1.0是两种不同类型的数,1是整数,而1.0则是双精度浮点数。
③浮点型数据的表现形式
十进制浮点数/小数形式。(由数字和小数点组成,且必须有小数点)
例如:0.123 123. 123.0 0.0 (均为十进制浮点数/小数形式)
知识点梳理
二
5、常量和变量
(3)浮点型常量
④指数形式
例如:123e3或123E3都代表123×
注意:字母E或者e之前必须有数字,且字母E或者e后面的指数必须为整数。
试一试:
e3 2.1e3.5 .e3
e 1.23e2 0.34E-3
-76e12 -.5E-8 6.e-7
1.0e10 E4.5 e.2
一个浮点数在用指数形式输出时,是按照规范化的指数形式输出的。即保留一位整数的形式。
知识点梳理
二
5、常量和变量
(4)字符型常量
①C语言的字符常量是用单引号(即撇号)括起来的一个字符,如‘*’‘A’ ‘a’‘&’‘!’等都是字符常量。注意‘A’和‘a’是不同的字符常量。
②字符数据存放在内存中的,并不是字符的本身,而是字符的代码,即ASCII码(美国标准信息交换码)。ASCII标准字符集定义了128个字符,每个字符都对应于一个ASCII码,编码值为0~127。
知识点梳理
二
5、常量和变量
(4)字符型常量
知识点梳理
二
5、常量和变量
(4)字符型常量
③除了ASCII上的字符常量外,一些不可显示的控制字符(比如回车符、制表符、退格键等)在程序中无法用一个一般形式的字符表示,C语言允许使用一种特殊形式的字符常量来表示这些字符:一个以反斜杠“\”开头的字符,称为转义字符。
注意:转义字符看起来是两个字符,实际上只能算一个字符。
知识点梳理
二
5、常量和变量
(4)字符型常量
‘
’ 换行符 (将当前位置移到下一行开头)
‘\t’ 水平制表符 (跳到下一个<tab>位置)
‘\b’ 退格
‘\r’ 回车 (将当前位置移到本行开头)
‘\f’ 走纸
‘\\’ 反斜杠’\’
‘\’’ 单引号’
‘\”’ 双引号
可使用“\”加上一个1~3位八进制数或者“\x”加上一个1~2位十六进制数来作为转义字符
知识点梳理
二
5、常量和变量
(5)变量
①在程序的运行过程中,其值可以改变的量称为“变量”。每个变量都有一个名字,称为变量名。每个变量都必须进行变量说明,指明变量的类型,相当于给变量进行注册。编译时,系统会根据变量的类型,在内存中分配合适大小的存储空间,这样就可以将该变量名与其对应的存储空间联系起来。
②命名规则:由字母、数字、下划线组成,第1个字符必须为字母或下划线,不允许使用数字,且不能以32个关键字进行命名。
③变量命名时区分大小写,建议命名时做到“见名知义”。
知识点梳理
二
5、常量和变量
(5)变量
④整型变量:整型数据在内存中的存放形式(数据在内存中是以二进制形式存放的)。
⑤浮点型变量:C语言中float的有效位数是7位,即精确到有效数字的第7位;double的有效位数是17位,即精确的有效数字的第17位。(通俗来讲,即可保留7(float)或者17(double)位数字,超出部分丢弃,但会进行四舍五入。)
⑥字符型变量:字符型变量用来存放字符常量,只能存放一个字符,不能存放字符串或多个字符。
int k = 50 ;
真题练讲
三
【答案】 9.1
1.(2008年湖南高考真题)程序分析题。
#include <stdio.h>
#define test(x,y) x+y
main()
{float c;
c=2*test(3.2,5.4)/2;
printf("%6.1f",c); }
真题练讲
三
【答案】n1=100,n2=4
2.(2009年湖南高考真题)运行下列程序,则下面程序的运行结果是:__________。
#include<conio.h>
#include "stdio.h"
#define M 5
#define f(x) x*x;
#define ff(x) (x*x)
main()
{ int n1,n2;
n1=100/f(M);
n2=100/ff(M);
printf("n1=%d,n2=%d",n1,n2);
getch();
}
真题练讲
三
【答案】C
3.(2012年湖南高考真题)单项选择题。以下正确的C语言自定义标识符是__________。
A.int
B.a.3
C._7c
D.5d_
真题练讲
三
【答案】B
4.(2013年湖南高考真题)单项选择题。下列选项中正确的C语言变量定义是( )
A.char a1='A', a2=A;
B.unsigned long a=1000;
C.float a1=a2=10.0;
D.double a=0.618,a=3.14;
真题练讲
三
【答案】①strlen() ②strcmp() ③#idefine ④#include
5.(2013年高考真题)
在C语言中,可以使用函数______①______来获取字符串的长度,使用函数______②_______来对两个字符串进行比较,使用宏定义命令______③______来定义宏,使用文件包含命令______④______实现“文件包含”操作。
真题练讲
三
【答案】D
6.(2014年高考真题)单项选择题。算法的复杂度主要包括算法的时间复杂度和空间复杂度,算法的时间复杂度是指( )
A.算法程序中的指令条数
B.算法程序的长度
C.算法程序所占的存储空间
D.算法执行过程中所需要的基本运算次数
真题练讲
三
【答案】B
7.(2014年高考真题)单项选择题。C语言程序的基本单位是( )
A.字节
B.函数
C.语句
D.字符
真题练讲
三
【答案】C
8.(2015年高考真题)单项选择题。在C语言中,下列叙述正确的是( )
A.空字符串不占用内存,其内存空间大小是0
B.可以用关系运算符比较字符串的大小
C.连续两个双引号是合法的字符串常量
D.连续两个单引号是合法的字符常量
限时练习
四
1.(2023年湖南高考真题)单项选择题。下列关于算法的描述中,错误的是( )
A.算法可以用伪代码、流程图等多种形式描述
B.一个正确的算法必须有输入
C.一个正确的算法必须有输出
D.能用流程图描述的算法,也可用计算机高级语言描述
【答案】B
限时练习
四
【答案】1
2.(2023年湖南高考真题)阅读程序,写出运行结果:_____________
#include <conio.h>
#include <stdio.h>
#define S(X) X*X
int main( )
{
int a=10,k=2,m=1;
a/=S(k+m)/S(k+m);
printf("%d
",a);
getch();
}
限时练习
四
3.(2022年湖南高考真题)单项选择题。对C语言程序,以下说法正确的是( )
A.main 函数是主函数,一定要写在最前面
B.程序总是从main函数开始执行的
C.程序中只能调用库函数,不能自己定义函数
D.函数参数只能是整型
【答案】B
限时练习
四
4.(2021年湖南高考真题)单项选择题。C语言程序从程序中的( )开始执行。
A.第一条语句
B.第一条可执行语句
C.main函数
D.第一个函数
【答案】C
限时练习
四
5.(2024年湖南高考真题)单项选择题。下列关于算法的描述中,错误的是( )
A.算法可以用程序语句来描述
B.算法可以用流程图来描述
C.算法可以用语言文字来描述
D.一个正确的算法可以没有输出
【答案】D
限时练习
四
6.(2025年湖南高考真题)单项选择题。下列说法中,不正确的是( )
A.C程序标识符可全部由数字构成
B.C程序有且只能有一个main()函数
C.C程序可自定义函数实现特定功能
D.字符型是C语言的基本数据类型
【答案】A
限时练习
四
7.(2017年湖南高考真题)单项选择题。下列C语言标识符错误的是( )
A. Abc
B. abc
C. A_be
D. Ab.c
【答案】D
限时练习
四
8.(2017年湖南一轮联考题)C语言程序的基本单位是( )
A.字节
B.函数
C.语句
D.字符
【答案】B
限时练习
四
9.(2017年湖南一轮联考题)算法的复杂度主要包括算法的时间复杂度和空间复杂度,算法的时间复杂度是指( )
A.算法程序中的指令条数
B.算法程序的长度
C.算法程序所占的存储空间
D.算法执行过程中所需要的基本运算次数
【答案】D
限时练习
四
10.(2025年湖南一轮联考题)下列关于算法的描述方法中,错误的是( )
A.算法可以用自然语言来描述
B.算法可以用伪代码来描述
C.算法必须要用高级语言来描述
D.算法可以用流程图来描述
【答案】C
内容小结
五
内容小结
五
一、了解简单程序的组成与执行
需理解C语言简单程序的结构组成以及程序的执行流程,这是入门C语言编程的基础认知。
二、编译预处理命令
• 不带参数的宏定义:通过#define定义简单宏,用于代码中常量或代码段的替换。
• 带参数的宏定义:形如#define 宏名(参数) 替换内容,可实现类似函数的宏替换。
• 文件包含:通过#include指令引入头文件,实现代码的复用与模块化。
三、C语言的基本数据类型
包括char(字符型)、short(短整型)、int/long(整型/长整型)、float(单精度浮点型)、double(双精度浮点型),这些是C语言中存储不同类型数据的基本单元。
四、常量和变量
• 常量:
整型常量:包含十进制、八进制、十六进制整型常量,还涉及补码计算方法。
浮点型常量:有十进制浮点数和科学计数法两种表示形式。
字符型常量:基于ASCII码表,包含普通字符和转义字符。
符号常量:通过宏定义或const定义的常量。
• 变量:用于存储可变化的数据,需先定义类型再使用。
成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。
$