nullnull教学目标:通过介绍C语言的数据类型和存储特点,
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
了解C语言数值数据和文字数据的表示
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
,掌握C语言基本数据类型的存储格式,掌握变量的定义和赋值。
本章重点 :
1.C语言数据类型的基本概念与定义,包括字符型、整型和实型(浮点型)的常量、变量的表示方法;
2.掌握变量的定义及初始化方法;
教学方法:课堂教学与实践教学相结合。
null2.1 常量、变量和指针2.1.1 标识符
2.1.2 数据类型
2.1.3 常量
2.1.4变量null一、定义
标识符是用于标识名字的有效字符序列,在程序中用来标识变量名、函数名、数组名、类型名、文件名等。
二、标识符的取名规则
1.只能由大小写英文字母(A~Z,a~z)、数字(0~9)和下划线(_)组成。
2.第一个字符不能为数字。
ANSI C没有限制标识符长度,但各个编译系统都有自己的规定和限制(如Tubrbo C 规定为32个字符,VC编译器限制的数字很大 )。2.1.1标识符null三、标识符的分类【例】请判断下列字符串中( )是合法的标识符
A、a_b B、 1ab C、a123
D、 a%b E、#ab F、 _ab
ACF1、系统标识符:C系统赋予了特殊含义的标识符
例如32个关键字和
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
库函数的名字。
2、用户自定义标识符
注意不能与关键字同名。
建议以英文字母开头。【例】下列字符串( )不能用作用户自定义标识符。
A、 If B、 scanf C、_struct D、 ifDnull 四、关于标识符的其它说明
1.标识符大小写敏感。
C语言中英文字母区分大小写。
如:sum和Sum是两个不同的标识符。
一般,用户起的变量名、函数名等标识符用小写字母,宏名通常用大写字母表示,以区别于变量名。
2.标识符的命名应当有一定的意义,做到见名知义。
如student_name,sum。nullC
数
据
类
型基本类型构造类型指针类型空类型void定义类型typedef字符类型char整 型实型数组结构体struct共用体union枚举类型enum2.1.2 数据类型 数据类型决定:
1. 数据占内存字节数
2. 数据取值范围
3. 其上可进行的操作null 基本数据类型(整型、实型和字符型)由系统定义,用户可直接使用;
构造类型是在基本类型的基础上,由用户或系统定义。
在本章主要介绍基本数据类型。null表1 基本数据类型标识符表nullC语言中的数据数据有变量与常量之分,它们分别属于上述这些类型之一。float是单精度实型,有效位数是7位,double是双精度实型,有效位数是15~16位。null2.1.3常量1.定义:在程序执行过程中,其值永远不能改变,即不能进行赋值运算的量称为常量。
2.分类:常量的类型(四种)
整型常量 实型常量
字符常量 字符串常量
表示形式:
⑴直接书写:从字面形式就可以判断其类型
例如:12、-10、3.14、-8.9、’a’、’#’、”Hello”
⑵间接表示:符号常量--用标识符代表常量
3.14、-8.9”Hello”实型常量字符串常量null1.整型常量
整型常量就是整数,包括正整数、负整数和0。
C语言中整型常量可以用以下三种形式表示:
① 十进制整数:有效数字为0~9。如正整数20。
② 八进制整数:有效数字为0~7,且以0开头,如020
③ 十六进制整数:有效数字为0~9和a~f(或A~F),且以0x开头,如0x20。
提问: 测试文件
020= ( )10 ,-020= ( )10, 0123=( )10
0x20= ( )10 , -0x20=( )10, 0xff=( )10null在一个整型常量的后面加字母l 或L,则认为是long型常量。
如:3000 是int型,
而3000l 或3000 L为long型。在VC环境下int和long表示的范围相同,没有区别。null 2.实型常量
定义:实型常量是带小数点的数,也称“浮点数” 。
表示形式:十进制小数形式和指数形式
① 十进制小数形式
由正负号、数字0~9和小数点组成。小数点不能省略。
如: 3.14 0.8 .8 0.0 -36.625 100.00 100.
正号“+”可以省略。
若整数部分为0,则整数部分可以省略,但小数点不能省略。如: 0.8与.8等价
若小数部分为0,则小数部分可以省略,但小数点不能省略。如:100.00与100.等价
整数部分和小数部分不能同时省略。例如0.0 可以写成0.和.0,但不能写成 . 。
null② 指数形式(或称科学记数法)
定义:由正负号、数字0~9、小数点和字母e(或E)组成。
表示形式: me±n 或 mE±n 。
表示m×10±n ,其中m为整型数或实型数,n为整型数,m和n都不能省略,即使m是1或n是0也不能省略,格式中的“+”可以省略。
如: 下面数字中( )是实型常量
A、3.14e5 B、123e-4 C、 e3 D、 .89e9
E、 123e4.0 F、 0.78e-6 G、 .e5 H、 4.5e
A B D Fnull实型常量如果没有任何说明,则表示为双精度常量,实型常量后加上F或f则表示单精度常量。
例如 3.14 是double型,占8个字节。
3.14f是float型,存储占4个字节。null3.字符常量
1.定义:用一对单引号括起来的一个字符。
如’a’、’7’、’#’、’$’。
2.字符常量的值:是该字符的ASCII码。
常用字符与ASCII代码对照表参见教材的附录I。
’0’~’9’的ASCII码48~
’A’~’Z’的ASCII码为65~
’a’~’z’的ASCII码为97~
’\n’的ASCII码为10
3.C的转义字符:以“\”开头的字符序列。
反斜线后面跟一个字符或一个代码值表示
null表2常用转义字符<转义字符含义\n\v\r\a\’\ddd\t\b\f\\\”\xhh转义字符含义换行垂直制表回车,光标移到本行的起始处响铃单引号 1-3位8进制数代表的字符水平制表退格,光标回退一位换页反斜线双引号1-2位16进制数代表的字符 转义字符仍然是一个字符,仍然对应于一个ASCII值。如代表“换行”符的‘\n’ ,其ASCII值为10。
如 ‘\101’ ----------- ‘\012’ -----------
‘\x61’ ----------- ‘\60’ -----------null例:下面错误的字符常量是( ) 单选。
A.'\2' B.’ ’ C.’\483’ D.’\x2’ C4.字符串常量
定义:用一对双引号括起来的一个字符序列,可以是零个、一个或多个字符。字符序列中含有字符个数称为字符串的长度。如:
"china" 长度为5
"a" 长度为1
"□□" 空格串, 长度为2
"" 空串,长度为0
存储:每个字符串尾自动加一个 ‘\0’ 作为字符串结束标志。 ‘\0’ ASCII码为0的空操作字符。null
字符串常量中的字符可以是转义字符,转义字符代表一个字符。
例如:
字符串“ab\n\\cd\xe”的长度是( )
A.7 B.10。
字符串“\”EOF\n=-\61\“”的长度是____。 A、8 B、 9 C、14 D、 非法字符串
A字符常量与字符串常量不同例 字符串"hello"在内存中例 空串 ""\0Bnull例 转义字符举例,写出运行结果
main()
{
printf("\101 \x42 C\n");
printf("I say:\"How are you?\"\n");
printf("\\C Program\\\n");
printf("Turbo \'C\'\n");
printf(“Y\b=\n”);
}运行结果:(屏幕显示)
A B C
Isay:”How are you?”
\C Program\
Turbo ‘C’
=null利用系统提供的strlen函数可以测试字符串的长度。
注意使用前必须用下面文件包含命令:
#include
测试举例:
#include
main( )
{
printf(”length=%d”,strlen(”ab\n\\cd\xe”));
}
〖运行结果〗:
length=7null利用sizeof运算符可以测试数据在内存中的大小(字节数)。
main( )
{
printf(”%d”, sizeof(”ab\n\\cd\xe”));
}
〖运行结果〗:
8null5.符号常量
定义:用标识符代表常量
定义格式:
#define 标识符 常量值
习惯上,符号常量用大写字母表示,以便与其他标识符相区别。
例如:
#define PI 3.1415926 /*PI是符号常量*/null1.定义:其值可以被改变的量,即可以进行赋值运算。
2.用途:变量通常用来保存程序运行过程中的数据输入,中间结果和最终结果。
3.分类
字符变量 char ,unsigned char
整形变量 int,unsigned,long,unsigned long 等
实形变量 float,double
注意:C语言中没有字符串变量,在C中它用字符数组来表示。2.1.4变量null
(1)变量定义的一般格式:
数据类型 变量1[,变量2,…,变量n];
决定分配字节数
数的表示范围
其上可进行的操作变量名:用户自定义标识符3.变量的定义(声明)例如:注意变量必须先定义后使用。nullint i1, i2; /*i1和i2都为整型变量,VC下在内存中占4个字节*/
long l1,l2; /*l1和l2为长整型变量,在内存中各占4个连续的字节*/
float f1; /*f1为单精度实型变量,在内存中占4个连续的字节*/
null(2)变量初始化:定义时允许给变量赋初值例:全部变量初始化
int x=1,y=1,z=1;
char c1=a’,c2=’\376’;
float f1=3.12;
允许对部分变量初始化
int a,b=2,c;
定义时可以用“=”用相应的常量给变量赋初值,没有赋初值的自动为随机值。null注意:变量在定义时不能连等赋值。
改正:
int x=1,y=1,z=1;
或者
int x,y,z;
x=y=z=1; /*赋值语句*/int x=y=z=1; ×nullchar c; short int i=3;float f; ××表示数据是随机值编译程序根据变量定义为其分配指定字节的内存单元,变量的存取操作,实际上是通过变量名找到相应的内存地址,从该存储单元中存取数据。变量内存分配示意图null(3)变量是通过它的名字来使用的,
例 主函数中有一段代码:
int a=2,b=3;
c=A+b;
/*error:Undefined symbol ‘A’ in function main*/
/*error:Undefined symbol ‘c’ in function main*/
例 int student;
stadent=19;
/*Undefined symbol ‘stadent’ in function main*/ 注意:先定义,后使用;
变量在使用时要和定义时一致,大小写要完全一样。null(4)变量定义位置
函数内部定义时,必须位于所有可执行语句之前。int a,b=2,c; null(5)注意:同一个变量不能在同一个作用域重复定义,因为编译程序不能对已分配内存单元的变量再重新分配内存单元。main()
{ int a,b=2,c;
int c;
a=1;
c=a+b;
printf(“c=%d\n”,c);
}/*error: Redeclaration of ‘c’ in function main*/null4.变量的溢出
对于整型变量超出其表示范围时就发生“溢出”,得到不正确的结果,但运行时并不报错。
例如:对于两个字节表示的int型变量其取值范围:-32768~32767,超出这个范围则可考虑用其他类型,否则得到不正确的结果。null5.变量的误差
对于实型变量也是用有限的存储单元存储的,因此提供的有效数字是有限的(float有效数字是7位、double有效数字是16位)。在有效位以外的数字将被舍去,由此产生一些误差。
因此使用时要注意:
要根据需要选择单精度或双精度类型;
实数的比较一般不进行精确的“相等”比较,而是判断接近或近似;
避免直接将一个很大的实数与一个很小的实数相加或相减,否则会“丢失”小的数。 null【例2.1】数据的溢出与误差。
void main()
{ short int i,j;
float f,g;
i=32767; /* 最大值赋给a*/
j=i+3; /*a+3并不等于32770,而是-32766 */
f=123456.789e5; /*只有 7位有效数字,后面的被舍去*/
g=f+888; /*很大的数与一个很小的实数相加,"丢失"了小的数*/
printf("i=%d,i+3=%d\n",i,j);
printf("f=%e,f+888=%e\n",f,g); /*按浮点数输出f,g之值*/
}运行结果:
i=32767,i+3=-32766
f=1.2345678e+010,f+888=1.2345678e+010
null6.字符型数据和整型数据之间可以通用字符变量存放字符ASCII码 字符型数据与整型数据的相互运算:
如:char a = ‘D’,b=‘A’, c ;
int d;
c = ‘a’+3;
d = a- b+‘b’;
则 c 值为‘c’ ,d值101。null【例2.2】
#include
void main( )
{
char ch;
int x;
ch='A';
x=ch+32;
printf("%c,%d\n", ch, ch);
printf("%c,%d\n", x, x);
}运行结果:
A, 65
a, 97 格式控制符
%c 字符格式null【例2.3】 计算以r为半径的圆的面积和体积,此处假设r=3.0。
〖运行结果〗:
area=28.274334
volume=113.097336运算符:
* 乘
/ 除
格式控制符
%f 单精度浮点数
%lf 双精度浮点数#define PI 3.1415926 /*PI是符号常量*/
main()
{ float r=3.0, area,volume;
area=PI*r*r;
volume = 4*PI*r*r*r/3;
printf("area=%f\n", area);
printf("volume=%f\n",volume);
}null学生练习:从键盘上输入一个小写字母,把它转变为大写字母再输出。
提示:大、小写字母的ASCII值相差32#include
main()
{
char ch;
printf("input a char:");
scanf("%c",&ch);
printf("%c",ch-32);
}