版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C语言数据类型C
语言程序设计1第2章C语言数据类型C语言程序设计1本章介绍C语言的数据类型,包括:常量和变量数据类型均是程序设计的基本知识为什么讨论这些知识?通常程序要对数据进行操作处理:处理的对象是数据本章内容2本章介绍C语言的数据类型,包括:通常程序要对数据进行操作处理例如:【例2.1】计算圆的面积,半径为5cm。
程序如下:#include"stdio.h"voidmain(){float
r,area;
r=5;
area=3.14*r*r;
printf("%f\n",
area);}运算结果是输出圆的面积:78.500000程序中用到的数据:r、area、5、3.14对数据进行的运算:*、=3例如:【例2.1】计算圆的面积,半径为5cm。#incl分析:计算机操作处理时,要完成以下工作:在内存中给半径r和运算结果area
开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值?数据
5和3.14与r
、area
不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理?对整数5
和小数3.14,计算机存放时是否有区别?涉及数据类型的基本知识4分析:计算机操作处理时,要完成以下工作:涉及数据类型42.1常量与变量在计算机处理的程序中,我们不免经常与数据打交道,根据数据的值是固定的,还是可变的,我们将数据分为两大类:常量和变量。52.1常量与变量在计算机处理的程序中,2.1.1变量 在程序运行过程中其值可以改变的量称为变量。变量有整型变量、实型变量、字符变量等。 程序中的变量由用户标识符来表示,在C语言中,所有变量必须遵循"先定义,后使用"的原则。变量的定义一般放在函数体的开头,即声明部分。1、编译系统会根据定义为变量分配内存空间,分配空间的大小与数据类型有关。2、编译系统可以根据变量的类型检查对该变量的运算是否合法。62.1.1变量 在程序运行过程中其值可以改变的量称为变2.2.1变量变量定义语句的形式为:类型说明符变量名表;即:类型说明符变量名1,变量名2,…;其中:类型说明符由关键字表示,不同的关键字表示不同的数据类型,变量名是用户标识符,由用户命名。通常,定义了一个变量而未赋初值时,一般变量中存放的是随机值。因此,为使定义的变量有一确切的数值,需给定义的变量赋一初值。72.2.1变量变量定义语句的形式为:通常 一个变量代表着内存中一个具体的存储单元,用变量名来标识。存储单元中存放的数据称为变量的值,变量的值可以通过赋值的方法获得和改变。读者一定要区分开变量名和变量值这两个不同的概念。2.1.1变量8 一个变量代表着内存中一个具体的存储单元,用变2.1.2常量一般用大写字母是宏定义预处理命令,不是C语句定义:程序运行时其值不能改变的量(即常数)例如:5,3.1415926分类:符号常量:用标识符代表常量定义格式:#define
符号常量常量例符号常量举例#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}运行结果:total=300如#definePRICE30⑴符号常量使常量数据意义明确。⑵符号常量使程序易于阅读和修改。直接常量:整型常量实型常量字符常量字符串常量#define符号常量的原理使用#define定义的符号常量,相当于为一个常量数据取了一个名字,当编译器开始编译包含符号常量的C程序时,它将#define定义的实际常量数据替换这个符号常量,再编译。常量的内存表示常量是不占据任何内存单元的,它是程序可执行指令的一部分,处在代码区中,运行时不可能改变。92.1.2常量一般用大写字母定义:程序运行时其值不能改变2.2C语言的数据类型数组类型结构体类型联合体类型枚举类型指针类型整型字符型实型(浮点型)空类型单精度型双精度型基本类型复杂数据类型本章讨论基本类型数据2.2.1C语言的数据类型C数据类型102.2C语言的数据类型数组类型整型单2.2.2基本数据类型2.2C语言的数据类型整型浮点型字符型单精度型float双精度型double短整型shortint长整型longint普通整型intchar数据类型所占内存字节数,不同类型的计算机有不同的规定,见书上P10页表2-2,表2-4,P16页表2-7。112.2.2基本数据类型2.2C语言的数据类型整2.3整型数据2.3.1整型变量整型变量的数据类型根据存储空间的大小分为:⑴基本型int⑵短整型shortint或short⑶长整型longint或
long
另外,整型变量还有指示的修饰符signed或unsigned,也即整型数据有正数/负数、无符号数之分.整型变量定义的语法:【修饰符】int
变量名表;122.3整型数据2.3.1整型变量整型变量定义的语类型符号关键字数的表示范围所占位数整型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongunsignedshort160~65535类型符号关键字数的表示范围所占位数整型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongunsignedshort160~65535表2-2整型数的取值范围2.3整型数据13类型符号关键字数的表示范围所占位数整型有无(signed)i2.3整型数据
2.3.2整型常量(整常数)在整常量后加字母u或U,认为它是无符号整型常量在整常量后加字母l或L,认为它是longint
型常量(可以加lu,表示unsignedlong常量整型常量的类型根据其值所在范围确定其数据类型例30000为int型65536为longint
型问题:0123=()100x123=()100xff=()1083291255问题:0123=()100x123=()100xff=()10表示形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f或A~F表示.如0x123,0xff例12与12L142.3整型数据2.3.2整型常量(整常数)在整2.3整型数据
2.3.3用printf显示整型数据格式:printf("格式控制串",输出表);输出表:要输出的数据(可以没有,多个时以","分隔)格式控制串:包含两种信息格式说明:%格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符:d,o,x,u格式字符不同对应输出数据表示的形式不同。152.3整型数据2.3.3用printf显示整型2.3整型数据【例2.1】整型变量的表示方式和整型数据的输出。#include"stdio.h"
voidmain(){intx,y,z;x=129,y=0127,z=0x128;printf("%d,%d,%d\n",x,y,z);printf("%o,%o,%o\n",x,y,z);printf("%x,%x,%x\n",x,y,z);}129,87,296201,127,45081,57,128运行结果:162.3整型数据【例2.1】整型变量的表示方式和整型数2.3整型数据【例2.2】整型变量的表示方式和整型数据的输出。#include"stdio.h"
voidmain(){intx,y,z;x=-129,y=-0127,z=-0x128;printf("%d,%d,%d\n",x,y,z);printf("%o,%o,%o\n",x,y,z);printf("%x,%x,%x\n",x,y,z);}-129,-87,-296177577,177651,177330ff7f,ffa9,fed8运行结果:172.3整型数据【例2.2】整型变量的表示方式和整型数
129
8
7
96
201
127
45081
57
128
129
8
7
96
201
127
45081
57
128
2.3整型数据【例2.3】显示整数时实现左对齐。#include"stdio.h"
voidmain(){intx,y,z;x=129,y=0127,z=0x128;printf("%6d%6d%6d\n",x,y,z);printf("%6o%6o%6o\n",x,y,z);printf("%-6x%-6x%-6x\n",x,y,z);}运行结果:1812987961298习题【例】判断下面程序的执行结果#include"stdio.h"voidmain(){inti=55,j=-77;
printf("octi=%o,j=0%o",i,j);printf("hexi=%x,j=0%x",i,j);}octi=67,j=0177663hexi=37,j=0ffb3(-77)10原码1000000001001101(-77)10反码1111111110110010+1(-77)10补码11111111101100113667713bff19习题【例】判断下面程序的执行结果octi=67,j2.3整型数据
2.3.4用scanf输入整型数据格式:scanf("格式控制串",地址表);地址表:变量的地址,常用取地址运算符&格式控制串:包含两种信息格式说明:%格式字符,用于指定输入格式普通字符:用户原样输入格式字符:d,o,x,u例scanf("%d",&a);
输入:10
则a=10例scanf("a=%x",&a);
输入:a=11
则a=17202.3整型数据2.3.4用scanf输入整型2.3整型数据【例2.4】用scanf输入整型数。#include"stdio.h"
voidmain(){intx,y,z1;longz2;scanf("%d%o%x%ld",&x,&y,&z1,&z2);printf("\n%d,%d,%d,%ld\n",x,y,z1,z2);}10
1010
10000010,8,16,100000输入数据时,遇以下情况认为该数据结束:
遇空格、TAB、或回车若输入:
212.3整型数据【例2.4】用scanf输入整型数。102.3整型数据【例2.5】输入格式与键盘输入匹配。#include"stdio.h"
voidmain(){intx,y,z1,z2;scanf("x=%dy=%oz1=%xz2=%u",&x,&y,&z1,&z2);printf("%d,%d,%d,%d",x,y,z1,z2);}10
1010
100,484,2972,0x=10y=10z1=10z2=1010,8,16,10scanf函数中""内的格式信息除了%开始的格式字符还有普通字符,而普通字符不是自动显示在屏幕上,是要求使用者在输入数据时在相应的位置上输入的。若输入:必须输入:
scanf("x=%dy=%oz1=%xz2=%u",&x,&y,&z1,&z2);222.3整型数据【例2.5】输入格式与键盘输入匹配。12.4实型数据
2.4.1实型变量float(单精度):占4字节,提供7位有效数字double(双精度):占8字节,提供15位有效数字实型变量的语法:
<类型说明符>变量名例floata;doubleb;a=111111.111;/*a=111111.109375*/b=111111.111;/*b=111111.111000*/232.4实型数据2.4.1实型变量float(单精2.4实型数据
2.4.2实型常量实型常量数据在写作时可以有两种表示方法:1.十进制小数形式:由数字和小数点组成(必须有小数点),例如:0.1234,1234.0,0.02.指数形式:使用e或E代表10的指数,"E"前必须有数字(有效数据);"E"后为指数且必须为整数。如0.1234e0,1.23e4,e-5,1.2E-3.5e-51.2E-3.5242.4实型数据2.4.2实型常量2.4实型数据
2.4.3用printf显示实型数据格式:printf("格式控制串",输出表);输出表:要输出的数据(可以没有,多个时以","分隔)格式控制串:包含两种信息格式说明:%[修饰字符]格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符:f,e,(lf,le)修饰字符:为数字,中间用小圆点分隔,左边表示域宽,右边表示保留小数点位数。格式字符不同对应输出数据表示的形式不同。252.4实型数据2.4.3用printf显示实型数2.4实型数据
【例2.6】输出实型数据。#include"stdio.h"
voidmain(){floatx;doubley;x=12.3456789;y=987654.321098;printf("%e,%le\n",x,y);printf("%f,%lf\n",x,y);printf("%.3f,%.3lf\n",x,y);printf("%14.3f,%14.3lf\n",x,y);printf("%-14.3f,%-14.3lf\n",x,y);printf("%8.3f,%8.3lf\n",x,y);printf("%14f,%14lf\n",x,y);}1.234568e+01,9.876543e+0512.345679,987654.32109812.346,987654.32112.346,987654.32112.346,987654.32112.346,987654.32112.345679,987654.321098运行结果:262.4实型数据【例2.6】输出实型数据。1.234562.4实型数据
2.4.4用scanf输入实型数据格式:scanf("格式控制串",地址表);地址表:变量的地址,常用取地址运算符&格式控制串:包含两种信息格式说明:%格式字符,用于指定输入格式普通字符:用户原样输入格式字符:f,e,(lf,le)272.4实型数据2.4.4用scanf输入实型数2.4实型数据【例2.7】输入实型数据。#include"stdio.h"
voidmain(){doublex,y;scanf("%lf%le",x,y);printf("%lf,%lf\n",x,y);printf("%le,%le\n",x,y);}123.567891.2345678e17123.567890,123456780000000000.0000001.235679e+02,1.234567e+17若输入:
282.4实型数据【例2.7】输入实型数据。123.5672.5字符型数据
2.5.1字符变量字符型变量的数据类型为char,占1字节。字符型变量的分类字符型变量还有符号指示的修饰符signed或unsigned,也即字符型数据有正数/负数、无符号正数之分。字符变量存放字符ASCII码字符型变量的数值范围:unsignedchar
的数值范围:0—255char的数值范围:-128—+127292.5字符型数据2.5.1字符变量字符型变量的数转义字符含义\n\r\'\ddd\t\b\f\xhh转义字符含义换行回车单引号3位8进制数代表的字符水平制表退格换页2位16进制数代表的字符转义字符及其含义:\"双引号反斜线\\2.5字符型数据
2.5.2字符常量转义字符:反斜线后面跟一个字符或一个代码值表示定义:用单引号括起来的单个普通字符或转义字符。字符常量的值:该字符的ASCII码值。见书上P278-279例转义字符举例#include"stdio.h"voidmain(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}如'\101'-----------'A''\012'-----------'\n''\376'-----------'''\x61'-----------'a''\60'-----------'0''\483'----------(
)例:'A'-------'\101'-------'\x41'--------65如'A'——65,'a'——97,
'0'——48,'\n'——10例voidmain(){printf("Y\b=\n");}屏幕显示:
=如'a''A''?''\n''\101'运行结果:(屏幕显示)ABCIsay:"Howareyou?"\CProgram\Turbo'C'30转义字符含义\n\r\'\ddd\t\b\f\xhh转义字符2.5字符型数据注意:1、字符'3'和数字3是不同的。ASCII表规定'3'的值是51。2、尽管单引号、双引号和\都可以直接输入,但转义字符用到了\,字符常量需要用单引号括起来,字符串要用双引号括起来,因此,单引号、双引号和\都需要用转义字符表示。312.5字符型数据注意:312.5字符型数据
2.5.3用printf显示字符格式:printf("格式控制串",输出表);输出表:要输出的数据(可以没有,多个时以","分隔)格式控制串:包含两种信息格式说明:%格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符:c【例2.8】用printf显示字符。#include"stdio.h"
voidmain(){charc='H',d='I',e='!';printf("%c%c%c",c,d,e);}运行结果:HI!322.5字符型数据2.5.3用printf显示字符2.5字符型数据
2.5.4用scanf输入字符格式:scanf("格式控制串",地址表);地址表:变量的地址,常用取地址运算符&格式控制串:包含两种信息格式说明:%格式字符,用于指定输入格式普通字符:用户原样输入格式字符:c注意:使用%c作为格式字符,对于空白字符不会再忽略或看成分隔符,而作为有效的字符读入。332.5字符型数据2.5.4用scanf输入字符2.5字符型数据【例】输入整型与字符数据。#include"stdio.h"
voidmain(){int
a;
charc;scanf("%d%c",&a,&c);printf("%d,%d",a,c);}100100,10100a100,32100a100,97运行结果:
342.5字符型数据【
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026西藏阿里地区日土县审计局招聘3名备考题库含答案详解【模拟题】
- 2026广州南沙人力资源发展有限公司一线社工招聘备考题库及参考答案详解(综合题)
- 2026四川自贡自流井区人力资源服务中心就业见习岗位招募1人备考题库附参考答案详解【a卷】
- 2026云南省房物业管理有限公司招聘12人备考题库(综合卷)附答案详解
- 2026江西萍建工程建设有限公司招聘11人备考题库含答案详解【预热题】
- 2026浙江嘉兴市平湖市教育局校园招聘教师52人备考题库(第三批)带答案详解(能力提升)
- 西南证券股份有限公司2026届春季校园招聘备考题库附完整答案详解【考点梳理】
- 2026北京公交集团校园招聘备考题库附参考答案详解【能力提升】
- 2026河南省人力资源开发中心有限公司招聘5人备考题库及答案详解1套
- 2026吉林大学中日联谊医院(白求恩第三医院)非编岗位人员招聘3人备考题库【26-3】附答案详解(综合题)
- 三级 模块二 项目六 功能促进 任务三 指导或协助老年人使用安全防护性辅助器具
- 2026年安徽工贸职业技术学院单招职业技能测试题库附答案详解ab卷
- 2026贵州省气象部门第二批公开招聘应届毕业生22人考试参考题库及答案解析
- 2026年咸宁职业技术学院单招职业倾向性测试题库及答案详解(网校专用)
- 浙江省名校协作体2024-2025学年高三下学期联考英语试题+答案
- 2026年上饶职业技术学院单招职业技能测试模拟测试卷附答案解析
- 2026年浙江机电职业技术学院单招综合素质考试模拟试题含详细答案解析
- 黑龙江2025年黑龙江省疾病预防控制中心招聘27人笔试历年参考题库附带答案详解
- (2025年)室内装修三级安全教育试卷及答案
- 器材仓库制度规范
- 电厂设备刷漆制度规范
评论
0/150
提交评论