C语言程序设计第二章_第1页
C语言程序设计第二章_第2页
C语言程序设计第二章_第3页
C语言程序设计第二章_第4页
C语言程序设计第二章_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章常用数据类型【学习目标】关键字和注释等。本本章将学习一些基本的程序概念,如程序结构、标识符、 章的学习要点包括如下几点:(1)了解C语言的基本结构。(2)分号、块和空白的使用。(3)标识符的约束规则。(4)C关键字。(5 )直接量的认识。(6)注释的使用。【学习导航】本章的在整个课程中的位置如图 2-1所示。函数的僅用Vi . 仃图形图像处置111数组的使用! | ! i1i1咸井支结构和循环结构! ! i I存祐管理绩数据输入騎出函数5=管/1/理运算符与表达式! i1 .常用数据结构|系常用数据类型1 . !.i 11统C语言概述圧开发环境搭建1 1 i1 i指针的使用i1*图2-1

2、 本章学习导航2.1 C语言基本程序结构任何一种程序设计语言都具有特定的语法规则和规定的表达方法。一个程序只有严格按照语言规定的语法和表达方式编写,才能保证编写的程序在计算机中能正确地执行,同时也便于阅读和理解。为了了解C语言的基本程序结构,请看【课堂案例2-1】。【课堂案例2-1】在控制台输出“你好”。【案例目标】会使用Xcode编辑器实现字符串输出【案例知识要点】C语言的程序结构、基本输出语句【案例程序代码】hello.c1 #i nclude 22 mai n()3 4 printf(你好”);5 【案例代码说明】第1行的作用是进行相关的预处理操作。include成为文件包含命令,里的内

3、容称为头文件。头文件一般的扩展名为.ho stdio就是指 “ sta ndard in put & output(标准输入输出), 所以,源代码中如用到标准输入输出函数时,就要包含这个头文件。第2行是一个空行。空行不会影响程序的功能。 空行起着分隔程序段落的作用, 适当使 用空行将使程序的布局更加清晰,提高程序的可读性。 空行不会浪费内存, 所以不要舍不得用空行。一般建议在头文件后插入一个空行。第3行声明了一个 main函数,main是函数名。关于函数的详细介绍在第七章。main函数具有特殊意义,它是程序执行的入口,也就是说,程序都是从main函数开始执行的。第46行定义了 main函数的内

4、容,称为函数体。以“”开始,以“ ”结束。第5行调用了在stdio.h中的格式化输出函数 printf,其作用是向终端(显示器、控制台) 输出字符。在这一行结束时,需要加上(;)。在C语言中,一行代码由分号(;)终止。图2-2是程序hello.c的执行结果:图2-2 Simple.c程序输出结果知识链接一编程规范我们写的程序不但需要正确,而且需要具有可读、相对持久和可维护性。要做到这些其中一 个很重要的方面就是要在写代码时遵循这种语言的编写和注释约定,也就是“编程规范” 编程规范是通用的,目的是为了让你的程序易读,有利于团队合作以及别人帮你改错。在hello.c程序中,要注意以下的编程规范:【

5、规则1-1】用#“clude 格式来引用标准库的头文件。【规则1-2】包含头文件时一般不使用绝对路径名。【规则1-3】在头文件和 main函数之间使用空行隔开。hello.c【规则1-4】函数体里面的内容(即 里面的内容),需要水平缩进四个空格。如 第5行所示。试一试(一):仓U建triangle.c,输出一个三角形,运行效果如图2-3所示。2.2标识符标识符是指程序中函数、变量、参数的名称。c语言要求标识符必须符合如下命名规则: 标识符的首字母必须是字母、下划线(_)除首字母外,标识符的其他位置可以是数字(0-9)、大写字母(A-Z ),小写字母(a-z),下划线(_)。标识符是大小写区别对

6、待的,也就是说test、Test、TEST是三个不同的标识符。标识符未规定最大长度。关键字和保留字(参见 2.3关键字)不能作为标识符。表2-1将正确和错误的标识符进行了对比,并说明了错误的原因:表2-2正确和错误的标识符对照表正确的标识符错误的标识符错误原因test11test首字母不能是数字user nameuser- name不能含有字符“-”int1intint是关键字,不能做标识符标识符命名的编程规范如下:【规则1-5】标识符的命名需具有相关的含义,这样做的好处是以后进行回顾或他人阅读时,容易理解程序的含义。比如要定义一个人的年龄,可以使用age这个标识符,而不要使用a。2.3关键字

7、c语言中的关键字是程序代码中的一些特殊字符。每个关键字都有特殊的用途。c语言一共有32个关键字。表2-3列出了使用在C编程语言中的关键字。表2-3 C语言中的关键字auto :声明自动变量break:跳出当前循环case:开关语句分支char :声明字符型变量或函数con st :声明只读变量continue:结束当前循环,开始下一轮循环default:开关语句中的 其它”分支do :循环语句的循环体double :声明双精度变量或函数else :条件语句否定分支(与if连用)enum :声明枚举类型extern :声明变量是在其它文件中声明float :声明浮点型变量或函数for: 一种循环

8、语句goto :无条件跳转语句if:条件语句int:声明整型变量或函数long :声明长整型变量或函数register :声明寄存器变量return :子程序返回语句(可以带参数,也 可不带参数)循环条件short :声明短整型变量或函数sig ned: 声明有符号类型变量或函数sizeof :计算数据类型长度static :声明静态变量struct:声明结构体变量或函数switch :用于开关语句typedef :用以给数据类型取别名un sig ned:声明无符号类型变量或函数union:声明共用数据类型void :声明函数无返回值或无参数,声明无 类型指针volatile :说明变量在程

9、序执行中可被隐含地 改变while :循环语句的循环条件2.4注释你如果想让你的程序很容易让人读懂,或者为了方便以后的维护,那么你可以通过为程序添加注释来做到这一点。注释的作用是:用来解释程序代码的含义。c语言的注释分为多 行注释和单行注释两种:多行注释:/*注释内容*/单行注释:/注释内容C语言注释通常用于 3处: 版本、版权的声明 函数接口说明 重要代码行提示可以修改hello.c程序,添加如下注释:/* Copyright (c) 2013,ZZAATCE* All rights reserved.* FileName : hello.h* Author: Csg*/#i nclude

10、main ()/向控制台输出“你好”printf(你好);2.5变量和常量的基本概念变量1.变量的声明在学生管理系统中, 系统中的一个最重要的角色是学生,对学生来说,应该有姓名,年龄等这些属性。如何来表示这些属性呢?这就要用到变量。变量是一块取了名字的、用来存储C程序信息的内存区域;它是一些有意义的数据。比如我们可以用变量名(也是一种标 识符)name来表示姓名,age来表示年龄。在 C语言中要使用变量必须要先定义(也叫做 声明变量)。定义变量是指设定变量的数据类型(参看 2.5节)和变量的名称。基本语法为:数据类型变量名;例如下面的代码:1-6】。int age ;上面的代码声明了一个变量a

11、ge,它的数据类型是int类型。变量名需遵守【规则【规则1-6】变量名首字母小写,其后每个英文单词的第一个字母大写,其它小写。例如stude ntName。2变量的赋值”操作符赋值,如下面的代码:在声明了一个变量后,还没有给变量赋值,可以通过“age = 20 ;上面的代码中20就是变量age的值。系统会分配一个长度为4字节(int类型占4字节)的内存单元 来保存“ 20”这个数据,如图2-4所示。我们在程序中可以改变20这个值:age = 40 ;,这也是为什么 age被称为变量的原因,因这时age的值就变成了 40 (如图3-3所示) 为它的值是“可变的”。图2-4 age变量初始赋值后的

12、内存图ageage图2-5 age变量修改值的内存图常量常量是指在程序运行时其值不能改变的量。常量可为任意数据类型(目前我们只使用过int类型,其他的类型参加本章的 2.6节),比如:100是一个整型常量。 是一个字符型 常量。C语言还支持另一种预定义数据类型的常量,这就是串。所有串常量括在双撇号之间, 例如This is a test。切记,不要把字符和串相混淆,单个字符常量是由单撇号括起来的,如 a 。整体上,C语言的常量可分为 3大类:数值型常量:又可以分为整型常量和实型常量字符常量符号常量2.6数据类型在定义变量时涉及到了数据类型,为什么会要用到数据类型呢?因为计算机里面保存一个数字或

13、者一个字母,都是需要分配一定的空间,内存空间的最小单位是比特(bit),也可以称为“位”。8个比特为一个字节(byte)。现在常见的PC,用两个字节空间来保存一个字母, 用四个字节保存一个整数。为了保存不同的数字或者字母, 我们在申请空间的时候就要告诉计算机,是要保存什么样的变量。而计算机会根据这个类型, 分配一定尺寸的内存给用户。 也就是说你声明的数据 类型是计算机给后面的变量分配内存空间的依据。C语言把数据类型分为基本类型、构造类型、指针类型和空类型。如图2-6所示。本节只介绍基本类型。2.7整型数据整型常量整型常量及通常理解的整数值。在C语言中可以用 3种进制来表示整型常量,分别如下:(

14、1 )十进制:基数为10。最常用的一种。当需要使用十进制表示整数时,无需任何前缀。 例如:int age = 25;(2) 八进制:基数为8。即满8进1。当需要使用八进制表示整数时,需要在该数的前面加 上前缀0。例如:int seve n = 07;下面的语句会输出什么呢?int v1 = 010;prin tf(%d,v1);输出结果为:8。【说明】由于八进制表示数时容易引起混淆,如int v = 010表示的是8而不是我们第一感觉的10,所以尽可能少使用八进制来表示数。(3) 十六进制:由09、a、b、c、d、e、f十六个符号构成。其中a表示10, b表示11,以此类推。当用十六进制表示整

15、数,要在该数前面加上前缀0x。例如:in t v1 = 0xa;/0x疋前缀,表示疋用十八进制表示整数prin tf(%d,v1);输出结果为10整型变量整型变量是用来存储整型数值的变量。共有6种类型。signed short int有符号短整型简写为short或int,字长为2字节共16位二进制数,数的范围是-3276832767。取值计算原理是一共有 216=65536个数,其中负整数有 215=32768 个,正整数2 -1=32767个,再加上一个 0, 一共65536个。signed long int有符号长整型简写为long,字长为4字节共32位二进制数,数的范围是-2147483

16、6482147483647。unsigned short int无符号短整型 简写为unsigned int,字长为2字节共16位二进制数, 数的范围是065535。unsigned long int无符号长整型 简写为unsigned long,字长为4字节共32位二进制数, 数的范围是04294967295。使用有符号基本整型变量的例子:int x;/定义了一个有符号基本整型变量x = 100;/给变量赋值也可以在定义变量的同时给它赋值:int x = 100;使用有符号短整型变量的例子:short y = 10;如果一个整型变量赋值超过它的取值范围,就会发生溢出的问题。请看【课堂案例2-

17、2】【课堂案例2-2】测试数据溢出【案例学习目标】理解整型变量的取值范围【案例知识要点】数据取值范围、数据溢出【程序代码】dataOverflow.c1 #i nclude 2 mai n()3 4 short x = 32767;5 short y = x + 1;66 prin tf(%dn ,x);7 prin tf(%dn ,y);8 【程序输出】如图 2-7所示。【程序说明】第4行给无符号短整型变量x赋值32767,这是无符号短整型变量的最大值。第5行定义了无符号短整型变量y,并赋值x+1。注意x已经是无符号短整型变量的最大值。第6行输出x的值为32767。14第7行输出y的值为-3

18、2768 。2知识链接一数据溢出计算机用二进制表示数据。无符号短整型在内存中占2个字节。1个字节为8位,一共16位。最高位为符号位,0表示正数,1表示负数。32767=2 15-1 ,所以dataOverflow.c 中 定义的变量x的值在内存中的存储如下:15M1312111098T65432100111111111111111进行加1运算后,逢2进1,最高位变成1。如下:15141312111098765斗321(11000000000000000最高位为1表示负数,所以这个数的值为-215= -32768。注意数据溢出在运行程序时并不会报错。2.8实型数据实型常量实型常量也称为浮点型常量

19、。实型常量的值包括整数部分、尾数部分和指数部分。在不 加说明的情况下,实型常量为正值。如果表示负值,需要在常量前使用负号。C语言浮点类型常量有两种表示方式:(1) 十进制数形式:如1.23。要注意必须含有小数点,否则会被当作 int型常量处 理。(2) 科学计数法形式:如3.14E2。只有浮点类型才采用科学计数法表示。字母E或e之前必须有数字,且E或e后面指数必须为整数,如e3、.e3等都是不合法的指数形式。浮点类型有两种:float和double。 double类型正如它的名字所揭示的( double是双 倍的意思),它表示精度是float的两倍,因此也将 double成为双精度类型。表示f

20、loat类型的数据要在数字后面加上f (或F),默认的浮点类型为 double型。实型变量实型变量分为单精度(float型)和双精度(double型)。对每一个实型变量都应再 使用前加以定义。如:float x,y ; / *指定x , y 为单精度实数* /double z ; / *指定z为双精度实数* /在一般系统中,一个 float 型数据在内存中占4个字节(3 2位)一个double型数据 占8个字节(6 4位)。单精度实数提供 7位有效数字,双精度提供 1 5 1 6 位有效数 字,数值的范围随机器系统而异。值得注意的是,实型常量是double型,当把一个实型常量赋给一个float

21、型变量时,系统会截取相应的有效位数。例如float a;a = 111111.111 ;由于float型变量只能接收 7位有效数字,因此最后两位小数不起作用。如果将 a改 为double型,则能全部接收上述9位数字并存储在变量a中。2.9字符数据字符常量字符常量是指用一对单引号括起来的一个字符。如:9, !。字符常量中的单引号只起定界作用并不表示字符本身。单引号中的字符不能是单引号()和反斜杠(),它们特有的表示法在转义字符中介绍。在C语言中,字符是按其所对应的ASCII码值来存储的,一个字符占一个字节。例如:字符ASCII码值(十进制)A65B66a97149注意 字符 1和数字1的区别,前

22、者是字符常量,后者是整型常量,它们的含义和在 计算机中的存储方式都截然不同。由于C语言中字符常量是按整数(short型)存储的,所以字符常量可以像整数一样在 程序中参与相关的运算(参见【课堂案例2-1】)。字符变量字符变量用来存放字符常量,注意只能存放一个字符,不要以为在一个字符变量中可以 放字符串。字符变量的定义形式如下:char c1, c2;【课堂案例3-1】字符类型变量赋值【案例学习目标】学习几种字符类型变量赋值的方法。【案例知识要点】字符类型变量单引号方式赋值、十进制方式赋值、十六进制方式赋值、Uni code编码方式赋值。【程序代码】testChar.c1 #i nclude 2

23、mai n()3 4char c1 = a:5char c2 = 97;67prin tf(%cn,c1);8prin tf(%dn,c1);9prin tf(%cn,c1-32);10prin tf(%cn,c2);11 【程序输出】如图 2-7所示。【程序说明】第4行使用单引号形式给字符变量赋值。第5行使用十进制形式给字符变量赋值。第7行使用printf函数输出字符变量 c1,%c表示一种输出格式,用来指定按字符型输出。第8行使用printf 函数的%d格式输出,输出的是一个十进制整数: 97。 第9行C1-32的计算结果是97-32=65 ,按字符格式输出的是 A 。第10行是按字符格式

24、输出结果为a。般的程序中采用的是第一种赋值方式。转义字符在testChar.c 程序中使用了 n,但实际输出的是一个换行。 这里的n 就是一个 转义字符。转义字符是 C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号 (),用于表示字符串常量的双撇号(”)和反斜杠()等。转义字符用反斜杠后面跟一个字符或一个八进制或十六进制数表示。表2-1给出了 C语言中常用的转义字符。表2-1转义字符转义字符意义ASCII码值(十进制)a响铃(B E L )007b退格(B S )008f换页(F F )012n换行(L F )010r回车(C R )0 1 3t水平制表(H T )0 0 9v垂直制表(VT )0 11反斜杠0 9 2?问号字符0 6 3单引号字符0 3 9”双引号字符0 3 40空字符(N U L L )0 0 0ddd任意字符三位八进制xhh任意字符二位十六进制试一试:使用转义字符t输出如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论