内容正文:
专题1:C语言基础及其基本数据类型(讲义)
《编程语言基础—C语言》专题复习讲练测
[考纲要求]
1:了解C语言的基础知识;
2:掌握宏定义和文件包含的使用;
3:掌握C语言的基本数据类型;
4:掌握C语言中常量和变量的表现形式。
[课时安排]
2课时
[知识梳理]
1、C语言中的32个关键字
2、C程序的特点
(1)一个C程序是由若干个函数构成的。任何一个C源程序必须有且只有一个main()函数,但可以包含0~若干个的其他函数。
(2)无论main()函数处于程序中的什么位置,一个C程序总是从main()函数开始执行的。
(3)函数体内({})可以包含若干变量定义和函数说明以及若干语句,每条语句均以分号结束。
(4)注释行从“//”开始到本行结束;连续若干注释行可以以“/*”开始,并以“*/”结束。所有注释部分都不被执行。
(5)C程序书写格式自由,每行可以有多条语句,一条语句也可以分写在多行上;但并不表示可以在语句的任何位置进行换行。
3、编译预处理命令
(1)不带参数的宏定义
①命令的一般形式:#define 标识符 字符串
②定义中的“标识符”为用户所定义的标识符,称为“宏名”,宏名一般使用大写字母,但并非规定。
③在进行预编译时,将程序中出现的宏名均替换成“字符串”内容,这一过程称为“宏展开”。
如:#define PI 3.1415926
“2*PI*r”宏展开为“2*3.1415926*r”。
(2)带参数的宏定义
①命令的一般形式:#define 宏名(形式参数表) 字符串
②定义中的“字符串”应包含括号中所指定的形式参数。注意:宏名与括号之间不能加空格,否则将成为不带参数的宏定义。
③带参数的宏展开:预编译时,遇到带实参的宏名,则按命令行中指定的字符串从左到右进行转换。
原则:凡遇形参则以实参代替,非形参字符则原样保留。
例:#define AREA(r) 3.14*(r)*(r)
“AREA(3+2)”宏展开为:3.14*(3+2)*(3+2)
(3)文件包含
①作用:将一个源程序文件包含到另一个源程序文件中,它以“#include”开头。
②格式:
#include <文件名> /*C编译系统将在系统指定的路径下搜索尖括号中的文件,一般适用于包含库函数的头文件*/
#include “文件名” /*系统首先会在用户当前的目录中搜索双引号中的文件,如果找不到,再按照系统指定的路径下搜索,一般适用于包含用户文件的头文件*/
4、C语言的基本数据类型
5、常量和变量
(1)常量和符号常量
在程序的运行过程中,其值保持不变的量成为常量。常量可以用一个标识符来表示,称为符号常量,可以在程序开头用#define命令来定义。
例如:#define PI 3.1415926
此后,只要是在文件中出现的PI均可用3.1415926来代替。
(2)整型常量
①二、八、十六进制转十进制
方法:按权展开相加
例:
(1010)2=1*2^3+0*2^2+1* 2^1 +0* 2^0=(10)10
(1A)16=1*〖16〗^1+10*〖16〗^0=(26)10
(12)8=1*8^1+2*8^0=(10)10
②十进制转其他进制
方法:整数部分反复除,取余数,逆序排。
③二进制转换成八、十六进制
方法:以小数点为中心,向两边按3位(或四位)分组,最后一组不足时用0补足,然后把3位(或4位)二进制转换为1位八进制数(或十六进制数)。
④八、十六进制转换为二进制
方法:把一位八进制(或十六进制)转换为3位(或4位)二进制数,不够3位(或4位)用0补足。
⑤二进制补码的计算
任何类型的数据在计算机中都是以二进制补码形式存储的。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)
例:求-10的补码
取-10的绝对值得到“10”
求10的二进制形式得到原码
0000 0000 0000 1010(一个short int整数占16位)
1111 1111 1111 0101(一个整数占16位)//对“1010”取反得到反码
1111 1111 1111 0110 //再加“1”得到补码
(3)浮点型常量
①C语言中的浮点类型主要分为单精度(float型)和双精度(double型)两种。
②在C语言数据中,1和1.0是两种不同类型的数,1是整数,而1.0则是双精度浮点数。
③浮点型数据的表现形式
十进制浮点数/小数形式。(由数字和小数点组成,且必须有小数点)
例如:0.123 123. 123.0 0.0 (均为十进制浮点数/小数形式)
④指数形式
例如:123e3或123E3都代表123×〖10〗^3
注意:字母E或者e之前必须有数字,且字母E或者e后面的指数必须为整数。
(4)字符型常量
①C语言的字符常量是用单引号(即撇号)括起来的一个字符,如‘*’‘A’ ‘a’‘&’‘!’等都是字符常量。注意‘A’和‘a’是不同的字符常量。
②字符数据存放在内存中的,并不是字符的本身,而是字符的代码,即ASCII码(美国标准信息交换码)。ASCII标准字符集定义了128个字符,每个字符都对应于一个ASCII码,编码值为0~127。
③除了ASCII上的字符常量外,一些不可显示的控制字符(比如回车符、制表符、退格键等)在程序中无法用一个一般形式的字符表示,C语言允许使用一种特殊形式的字符常量来表示这些字符:一个以反斜杠“\”开头的字符,称为转义字符。
注意:转义字符看起来是两个字符,实际上只能算一个字符。
‘
’ 换行符 (将当前位置移到下一行开头)
‘\t’ 水平制表符 (跳到下一个<tab>位置)
‘\b’ 退格
‘\r’ 回车 (将当前位置移到本行开头)
‘\f’ 走纸
‘\\’ 反斜杠’\’
‘\’’ 单引号’
‘\”’ 双引号
(5)变量
①在程序的运行过程中,其值可以改变的量称为“变量”。每个变量都有一个名字,称为变量名。每个变量都必须进行变量说明,指明变量的类型,相当于给变量进行注册。编译时,系统会根据变量的类型,在内存中分配合适大小的存储空间,这样就可以将该变量名与其对应的存储空间联系起来。
②命名规则:由字母、数字、下划线组成,第1个字符必须为字母或下划线,不允许使用数字,且不能以32个关键字进行命名。
③变量命名时区分大小写,建议命名时做到“见名知义”。
(5)变量
①在程序的运行过程中,其值可以改变的量称为“变量”。每个变量都有一个名字,称为变量名。每个变量都必须进行变量说明,指明变量的类型,相当于给变量进行注册。编译时,系统会根据变量的类型,在内存中分配合适大小的存储空间,这样就可以将该变量名与其对应的存储空间联系起来。
②命名规则:由字母、数字、下划线组成,第1个字符必须为字母或下划线,不允许使用数字,且不能以32个关键字进行命名。
③变量命名时区分大小写,建议命名时做到“见名知义”。
[真题练讲]
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); }
【答案】 9.1
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();
}
【答案】n1=100,n2=4
3.(2012年湖南高考真题)单项选择题。以下正确的C语言自定义标识符是__________。
A.int
B.a.3
C._7c
D.5d_
【答案】C
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;
【答案】B
5.(2013年高考真题)
在C语言中,可以使用函数______①______来获取字符串的长度,使用函数______②_______来对两个字符串进行比较,使用宏定义命令______③______来定义宏,使用文件包含命令______④______实现“文件包含”操作。
【答案】①strlen() ②strcmp() ③#idefine ④#include
6.(2014年高考真题)单项选择题。算法的复杂度主要包括算法的时间复杂度和空间复杂度,算法的时间复杂度是指( )
A.算法程序中的指令条数
B.算法程序的长度
C.算法程序所占的存储空间
D.算法执行过程中所需要的基本运算次数
【答案】D
7.(2014年高考真题)单项选择题。C语言程序的基本单位是( )
A.字节
B.函数
C.语句
D.字符
【答案】B
8.(2015年高考真题)单项选择题。在C语言中,下列叙述正确的是( )
A.空字符串不占用内存,其内存空间大小是0
B.可以用关系运算符比较字符串的大小
C.连续两个双引号是合法的字符串常量
D.连续两个单引号是合法的字符常量
【答案】C
[限时练习]
1.(2023年湖南高考真题)单项选择题。下列关于算法的描述中,错误的是( )
A.算法可以用伪代码、流程图等多种形式描述
B.一个正确的算法必须有输入
C.一个正确的算法必须有输出
D.能用流程图描述的算法,也可用计算机高级语言描述
【答案】B
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();
}
【答案】1
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定义的常量。
• 变量:用于存储可变化的数据,需先定义类型再使用。
学科网(北京)股份有限公司
$