内容正文:
总复习方案·第二章数据类型及其运算
第二章
数据类型及其运算
大纲要求
1.掌握C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。
2.理解C运算符的种类、运算优先级、结合性。
3.理解不同类型数据间的转换与运算。
4.掌握C表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式)
和求值规则。
第一节数据类型、常量、变量
知识体系
命名规则
标识符
分类
整数:十进制、八进制、十六进制
数值常量
实数:小数、指数
数据的表示
常量
字符型常量
字符:普通字符、转义字符
字符串
符号常量
宏定义命令define定义
基本类型
数据
int、char、float、double等
类型构造类型
—数组
定义
指针类型
文件指针
变量名
数据的存储—变量
值
初始化
存储数据输入、赋值
使用
参数传递
参与运算
·13·
单招零距离·计算机专业综合·下册
知识梳理
@⑤
一、标识符
在C语言中,变量名、函数名、数组名等都是按照一定的规则命名的符号,称为标识符。
1.标识符的命名规则:
(1)合法的标识符只能由
组成;
(2)标识符必须以
或
打头,不能是数字;
(3)要区分字母的大小写,如a和A是两个不同的字符。
2.标识符的分类:
(1)关键字(32个):C语言中规定了一些专用的标识符,它们有着固定的含义,不能更改,
也不能被你用作函数名或变量名。
auto、break、case、char、const、continue、default、double、else、enum、extern、float、for、
goto、int、long、register、.return、short、signed、sizeof、do、if、static、struct、switch、typedef、
union、unsigned、void、while、.const
(2)预定义标识符:有特定的含义,包括库函数的名字和编译预处理的命令。如:scanf、
printf、include、define
(3)用户自定义标识符:用户根据自己的需要定义的标识符。一般给变量、函数、数组、文
件等命名。选择变量名和其他标识符时,应注意“见名知义”的原则。
二、数据的表示
在C程序中,直接表示的数据被称为常量。
1.常量的种类有
2.数值型常量
(1)整型常量:在C程序中,可以用十进制、八进制、十六进制形式表示数据。
八进制整数以
开头十六进制整数以
开头。
(2)实型常量的表示形式有
指数形式用
表示以10为底的指数,其前是
,其后是
且
必须是
3.字符型常量有
两种。
(1)字符常量用
括起来,有普通字符与
两种,其中后者以
开头;
表2一1常用转义字符及其含义
字符
含义
An
换行
Ar
回车
lv
竖向跳格
Ib
退格符,向前倒删除一个字符(BACKSPACE键)
Ac
横向跳格(TAB键)
走纸换页符
·14
总复习方案·第二章数据类型及其运算
u
反斜杠字符1
单引号
\"
双引号”
Addd
1一3位八进制数所代表的一个ASCI码字符如101一A
\xhh
1一2位十进制数所代表的一个ASCI码字符如x41一A
10
空字符
\a
警告声
1A
字符A,此时的\没有实际意义,相当于续行符的作用
(2)字符串常量用
括起来。
4.符号常量用标识符表示一个常量。
(1)定义符号常量的一般形式:
(2)符号常量在程序中其值不能被重新赋值;
(3)符号常量一般用
写字母表示。
三、数据的存储
在C程序中,用变量来存放数据,程序运行时,计算机给每个变量分配一定量的内存空间
(不同的编译系统分配的存储空间不相同),数据通过变量存储在内存中,且整数以补码形式存
储,字符以ASCII码值形式存储。变量必须先定义,后使用。
1.变量的定义
(1)定义变量的一般形式:
(2)类型:变量的类型决定了该变量中可存放数据的类型和大小。
①当数据的类型与变量的类型不一致时,数据存储时可能会产生错误;
②当数据大小与变量的空间不吻合时,则可能会发生溢出。
(3)变量名:变量的名字,用于标识变量。
①变量名一般用写字母,且区分大小写字母,取名合法并尽量做到顾名思义;
②在同一程序的同一函数内,变量不可被重复定义(除非变量在复合语句内)。
(4)变量的值:存放在变量中的数据。一个变量中只能存放一个数据。
2.变量的使用
(1)数据存入变量的途径有:初始化、赋值、从键盘接收、参数传递。
(2)初始化:定义的同时赋初值。若定义时变量未被初始化,则自动变量中的值是
,全局变量、静态局部变量被自动置
(3)程序运行时,变量的值可随时变化,变量被重新赋值后,新值会
旧值。
3.变量的存储
不同类型的变量,其存储单元的大小不同。可用运算符
求出。
(1)整型int:占
B,范围:-2147483648~+2147483647
(2)短整型short(int):占
B,范围:-32768~+32767
(3)长整型long int:占
B,范围:一2147483648~+2147483647
(4)无符号型unsigned(int):占
B,范围:0~4294967295
(5)无符号型unsigned short(int):占
B,范围:0~65535
·15·
单招零距离·计算机专业综合·下册
(6)无符号型unsigned long(int):占
B,范围:0~4294967295
(7)单精度实型float:占
B,提供7位有效数字
(8)双精度实型double:占
B,提供15~16位有效数字
(9)字符char:占
B,每个字符变量中只能存放一个字符。
典例精析
@
【例1】下列四组字符串中都可以用作C语言程序中的标识符的是()。
A.print3d db8 aBc
B.I\am one half start $it 3pai
C.str_1 Cpp pow while
D.Pxq My->book line#His.age
【分析】标识符的命名规则:(1)只能由字母、数字、下划线构成;(2)数字不能作为标识符
的开头;(3)关键字不能作为标识符。
选项B中的”,”$”,选项D中“>”,”#”,”.”,”一”不满足(I):选项C中的while为关
键字,不满足(3)。
【答案】A
【例2】阅读下面程序,分析运行结果。
#include <stdio.h
int main()
printf("abed
");
printf("abc\t");
printf("123\rghjkl
");
printf("\\"\?
");
printf("\ABCD\a\62\103\x61\x62
");
}
【分析】转义字符
’的含义是换行;\t'的含义是横向跳格;\r’的含义是退格;\\’
的含义是\;’的含义是';\"’的含义是";\?’的含义是?;\A’的含义是A;\a’的含义是
一声警告声;\62'的含义是ASCII值为八进制数62的数字字符2;\103'的含义是ASCII值
为八进制数103的字符C;\x61'的含义是ASCIⅡ值为十六进制数61的字母字符a;\x62'
的含义是ASCII值为十六进制数62的字母字符b。
【答案】abcd
ghjkl123
\'”?
ABCD2Cab
【例3】阅读下面程序,分析运行结果。
#include<stdio.h>
int main()
inta=123,b=0123,c=0x123;
printf("%d,%d,%d
",a,b,c);
a=b=c=318;
·16·
总复习方案·第二章数据类型及其运算
printf("d,%00,%x
",a,b,c);
printf(",x,#X
",a,b,c);
【分析】(1)b=0123是一个八进制整数,要转换成十进制整数83:c=0x123是一个十六
进制整数,要转换成十进制整数291。
(2)语句a=b=c=318;的作用是将a,b,c的值都赋为十进制整数418。printf函数中
的"%"表示以十进制整数输出,”%o"表示以八进制整数输出,"%x"表示以十六进制整数
(若含有字母A一F则以小写字母形式)输出。因此,要将318转换成八进制数476和十六进
制数13e。
注意:以"%。"输出的数在显示屏幕上或理论分析程序写运行结果时是不加前导0的,同
样"%x"输出数时也不加前导0x;而以"%#o"输出的八进制数则会带上前导0,以"%#x"输
出的十六进制数则会带上前导0x,以"%#x"输出的十六进制数则会带上前导0X。
【答案】123,83,291
318,476,13e
0476,0x13e,0X13E
【例4】写出定义变量/数组的语句,用于正确存放下列数据。
(1)存放1个年龄
(2)存放10个语文成绩
(3)存放1个字母
(4)存放1个人的姓名(设字符个数不超过15)
(5)存放10个人的姓名(设字符个数不超过15)
【分析】年龄都是整数,应定义为int型;语文成绩可能是小数,应定义为float或double
型,10个语文成绩应定义为一维数组,数组的大小为10;1个字母应定义为char型;1个人的
姓名应定义为一维字符型数组;10个人的姓名应定义为二维字符型数组。
【答案】(1)int age;
(2)double score[10];
(3)char ch;
(4)char name[16];
(5)char name[10][16];
巩固练习
⑤
1.下列四组选项中,正确的C语言标识符是()。
A.%x
B.a+b
C.a123
D.123
2.C语言中的简单数据类型包括(
A.整型、实型、逻辑型
B.整型、实型、逻辑型、字符型
C.整型、字符型、逻辑型
D.整型、实型、字符型
3.在C语言中,char型数据在内存中以(
)形式存放。
A.原码
B.反码
C.补码
D.ASCII码
·17…
单招零距离·计算机专业综合·下册
4.在C语言中,以(
)作为字符串结束标志。
A'
B.·
C.'0
D.\0
5.下列数据中属于“字符串常量”的是(
)。
A."a"
B.(ABC)
C.'abc\0'
D.'a
6.有语句char c-=\x46';则变量c中包含()个字符。
A.1
B.2
C.3
D.4
7.阅读分析程序:
#include <stdio.h
int main()
printf("%s","d:\c.txt
");
}
上面程序中,字符串"d:川c.txtn"中
个字符,其中是
字符。本程序的运
行结果是:
8.写出程序的运行结果。
#include<stdio.h
int main()
{inta=56,b=78;
printf("%d,%0,",a,a);
printf("%o,%x
",b,b);
拓展练习
1.字符‘F’在内存中占
个字节,字符串"chinese"在内存中占
个字节。
2.定义一个变量m为整型且赋初始值是78,应写成语句
3.数学表达式y=x2+2x一4,写成标准的C语言表达式是
4.字符B'的十进制ASCII码值是
,其对应的八进制数是
,十六进制数
是0x42,用转义字符表示为
5.字符串"123\Av*7八n"占
个字节数。
6.阅读分析程序:
#include <stdio.h
int main()
double x,y;
x=2.8;y=8.2;
x=x+y;
y=x-y;
x=x一y;
printf("x=%.1lf,y=%.1lf
",x,y);
本题的功能是
,本程序的运行结果是:
·18·
总复习方案·第二章数据类型及其运算
7.若整型变量a和b中的值分别为5和8,要求按以下格式输出a和b的值:
a=5
b=8
请完成输出语句printf("
",a,b);
8.分析下面程序,并思考问题:
已知圆半径值是5.2,求圆面积。
#include<stdio.h>
#define PI 3.14
int main()
{
float r,s;
r=5.2;
s=PI*r米r;
printf("s=%f
",s);
}
思考:
(1)程序中,常量有
(2)程序中,变量有
(3)程序中第2行语句是
命令,其功能是
(4)以"%f"输出,默认小数位
位,本题的运行结果是
(5)如果仅想输出2位小数位,可用"
"格式,圆点后面的数字就是指保留的
小数位,注意格式中的小圆点不可省略。
9.下列程序有若干处错误,请改正,改正后写出程序的运行结果。
#include <stdio.h>
int main()
{
int a,B;
long a;
a=12.6;
B=-24;
c='a'+b;
printf("%d
",c);
}
程序中的a'还可以表示成
等。
10.分析下列程序,并思考问题。
#include <stdio.h
int main()
int a,i;
for(i=1;i<=5;i++)
a=a*i;
·19…
单招零距离·计算机专业综合·下册
printf("%d",a);
思考:
(1)本程序的运行结果是否为1*2*3*45的值?为什么?
(2)由此可以总结出什么结论?
技能实践
©¥③
1.下面的程序用公式c=(f一32)/1.8将输入的华氏温度转换为摄氏温度请将程序补充完整。
#include<stdio.h
int main()
{
float f,c;
printf("请输入华氏温度:");
scanf("%f",
c=
printf("摄氏温度为%f升n",
}
2.输入两个整数,按从小到大的顺序输出,请将程序补充完整。
#include<stdio.h
int main()
{
int x,y,t;
printf("请输入x,y:");
scanf("d,%d",&.x,&y);
t=
y=
x=t;
printf("
从小到大输出这两个数是:%d%d八n",x,y);
3.程序填空题:已知10个数,输出其中能被3整除的数。
#include <stdio.h>
int main()
int i,x,f;
·20·
总复习方案·第二章数据类型及其运算
for(i=0;i<N;i++)
{
scanf("%d",&x);//从键盘输入一个整数存入变量x
if(x%3!=0)f=1;
if(f==-1)printf("%d\t",x);
}
}
4.程序改错题:从键盘输入8个实数,输出它们的总和。程序中有若干处错误,请改正。
#include <stdio.h
/著***米*米米*米*米f0und米*米**黄**0米米米/
#define NO
int main()
int i;
/米********米米米f0und**米*********
int x;
/关¥¥*关米共**关米*f0und米米关*¥¥¥¥关**关/
double sum;
/*关米*米米**米关米*f0und关关*****关关关关米/
N=8;
i=1;
do
{
scanf("%1f",&x);//从键盘输入一个实数存入变量x
sum=sum十x;
i++;
)while(i<=N);
printf("%.2lf",sum);/输出sum中的实数
}
5.程序设计题:通过初始化方法将35,55,21依次存入变量整型x1、x2、x3,要求将x1的
值赋给x3,x2的值赋给x1,x3的值赋给x2,输出处理后各变量的值。
·21·转义
main 最大数是2 它的5倍是:10
2.(1)头文件#inculde<stdio.h>写错,应该改为
#include<stdio.h>
(2)主函数voidmain后少了一对括号,应该改为
voidmain()
(3)定义变量intx;时少定义了s,应该改为intx,s;
(4)语句x=2要以分号结束,x=2应该改为x=
2;
(5)语句s=x×(x+2);中的乘号要用∗号才能构
成标准的C语言表达式,应该改为s=x∗(x+2);
(6)语句printf("%d/n",s);中表示换行是"/n",
应该改为printf("%d
",s);
(7)花括号成对使用,少了一个"}"作结束,应该在
最后一条语句后添加一个"}"
3.#include<stdio.h>
intmain()
{
printf("∗∗
");
printf("您好
");
printf("HELLO
");
printf("∗∗∗∗∗∗∗∗
");
}
第二章 数据类型与表达式
第一节 数据类型、常量、变量
【知识梳理】
一、标识符
1.(1)字母 数字 下划线
(2)字母 下划线
二、数据的表示
1.数值型常量、字符型常量、符号常量
2.数值型常量
(1)0 0x
(2)小数形式、指数形式.E或e、尾数、指数 整数.
3.字符、字符串
(1)一对单引号' 转义字符 \
(2)一对双引号“”
4.标识符
(1)#define标识符 常量表达式
(3)大
三、数据的存储
1.变量的定义
(1)类型名 变量名[=‹表达式›]
(3)小
2.变量的使用
(2)不确定、0
(3)自动覆盖
3.sizeof
(1)4 (2)2 (3)4 (4)4 (5)2
(6)4 (7)4 (8)8 (9)1
【巩固练习】
1.C 2.D 3.D 4.D 5.A 6.A
7.9 转义 d:\c.txt 8.56,70,116,4e
【拓展练习】
1.1 8
2.intm=78;
3.y=x∗x+2∗x-4或y=pow(x,2)+2∗x-4
4.66 102 '\x42'
5.10
6.实现两个变量x和y值的交换 x=8.2,y=2.8
7.a=%d
b=%d
8.(1)PI、3.14、5.2
(2)r、s
(3)宏定义 定义符号常量PI表示实数3.14;
(4)6 s=84.905594;
(5)%.2f
9.调试出错信息:
warningC4142:benignredefinitionoftype //重
复定义
errorC2086:'a':redefinition //重复定义
warningC4244:'=':conversionfrom'constdouble
'to'int',possiblelossofdata
//类型不一致,可能会丢失数据
errorC2065:'c':undeclaredidentifier //变量c
未被定义
errorC2065:'b':undeclaredidentifier //变量b
未被定义
改错:
(1)inta,B;改为intB,c;
(2)longa;改为doublea;
(3)c='a'+b;改为c='a'+B;
运行结果:73
程序中的'a'还可以表示成:97、'\141'、'\x61'、0141、
0x61.
10.(1)不是,a在累加前值是随机的、不确定的,应
赋初值1.
(2)每个变量在进行各种运算之前其内必须存入
一个确定的数据.
11
总复习方案参考答案
【技能实践】
1.&f (f-32)/1.8 c
2.(x>y)? y:x (x>y)? x:y
3.intN=10 f=-1
4.调试出错信息:
errorC2106:'=':leftoperandmustbel-value
//赋值号左边必须是变量
改错:
(1)#defineN0改成#defineN8
(2)intx;改成doublex;
(3)doublesum;改成doublesum=0;
(4)N=8;去掉
5.#include<stdio.h>
intmain()
{ intx1=35,x2=55,x3=21,temp;//temp
变量用于临时借用
temp=x1;
x1=x2;
x2=x3;
x3=temp;
printf("x1=%d,x2=%d,x3=%d",x1,
x2,x3);
}
第二节 运算符与表达式
【知识梳理】
二、运算符
1.(1)单目 双目 三目
3.(1)左 右 (2)右 左
三、算术运算符和算术表达式
2.“%”
3.变量
4.从左向右 乘除 加减
四、关系运算符与关系表达式
优先级 运算符 用法 结合方向
6
7
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
! = 不等于
自左向右
2.== ! =
3.1 0
五、逻辑运算符与逻辑表达式
1.
优先级 运算符 用法 结合方向
2 ! 逻辑非 自右向左
11 && 逻辑与 自左向右
12 || 逻辑或 自左向右
2.1 0
3.
a b ! a a&&b a||b
非0 非0
非0 0
0
1 1
0 1
0 非0
0 0
1
0 1
0 0
0 1
六、条件运算符与条件表达式
1.表达式2 表达式3
2.三目
3.自右向左
七、赋值运算符和赋值表达式
1.将赋值号右边的值或表达式的值赋值给左边的
变量
2.+= 、- =、∗=、/=、%=、<<=、>>=、
&=、̂=、|=
八、逗号运算符和逗号表达式
1.表达式1,表达式2,,表达式n
2.低
4.最右端表达式
九、求字节数运算符与表达式
sizeof
十一、不同类型数据间的混合运算
1.(1)3 舍弃小数部分
(2)自动将运算符两边的表达式转换成同一类型
2.(类型名)(表达式)
【巩固练习】
1.C 2.D 3.B 4.D 5.C
6.fabs(y∗x+log10(x∗x+1)+3∗exp(x)+log
(y))+sin(25)
7.-6
8.2
9.0 1 0
10.3,-3,3,-3
24,312
【技能实践】
1.(1)inty=0 (2)x/100 (3)x3 (4)y∗10+
x1
21
单招零距离计算机专业综合下册