版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章基本数据类型与
数据的输入输出3.1C语言的基本数据类型简介3.2标识符、常量、变量3.3基本数据类型3.4数据的输入与输出13.1C语言的基本数据类型简介数据类型基本类型构造类型指针类型无值型(void)整型(int)字符型(char)实型(浮点型)枚举类型(enum)单精度型(float)双精度型(double)数组类型结构体类型(struct)共用体类型(union)23.2标识符、常量、变量3.2.1标识符1标识符标识符:用来标识变量名、函数名、数组名、类型名和文件名的有效字符序列。用户定义标识符时要注意以下规则:(1)标识符由字母、数字、下划线组成(2)数字不能打头(3)标识符区分大小写如SUM与sum代表不同的标识符。(4)不能用
C语言的关键字如char,int等关键字,已被C系统使用,不能用作变量名。3下面举出几个正确和不正确的标识符:
正确不正确
smart5smart第一个字符不是字母或下划线
_decisionbomb?含有非法字符?key_board
key.board
含有非法字符.FLOATfloat
不能用TurboC保留字
PIa+b含有非法字符“+”42标识符的种类在TurboC中标识符有以下三种:(1)关键字:所谓关键字就是已被TurboC2.0本身使用,不能作其它用途使用的字。(2)编译预处理的命令单词:如:#include、#define等。(3)用户标识符:用户自己定义的变量名、常量名、函数名等。5由ANSI标准定义的TurboC2.0关键字有以下共32个:autodoubleint
struct
breakelselongswitchcaseenum
registertypedef
charexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgoto
sizeof
volatiledoifwhilestatic63.2.2常量常量是指程序运行过程中不能变化的量,分为两种:数值常量和字符常量。1数值常量数值常量有两种:整型常量和实型常量,分别表示整数和实数(1)整型常量:如:207,30,181。有十进制、八进制、十六进制等。7整型常量的三种形式:1)
十进制整数:如:12、0、-32)
八进制整数:如012=(10)10,017=(15)103)十六进制整数:如0x12=(18)100x1f=(31)10十六进制数码:0,1…9,a,b,……f8符号常量:用标识符代表一常量。#define常量名整常数值#defineM30表示定义了一个符号常量M,它的值为309
例:#define
PI
3.1416main(){floats,r=2;s=PI
*r*r;
printf("area=%f",s);}10(2)实型常量带小数点的数。实数的两种形式:小数形式:例如:2.14
指数形式:例如:2.31e10表示2.31X1010实数的两种类型:单精度(6~7位有效位数)双精度(15~16位有效位数)112字符常量(1)用单引号括起来的一个字符:如'A'、'a'、'B'等。其实际值是字符的ASCII码值。转义字符:(见表3.1)是以\开头的特殊字符。表示控制字符。如\n——换行
\t——跳格
\b——回退一格\r——回车表示特殊符号。如\'
、\"
、\\
等。例:printf("Isay:\"
Hello!\"
\n");结果显示:Isay:"Hello!"\ddd(ddd表示3位八进制数表示的ASCII码),表示任何字符。\xhh(hh表示2位十六进制表示的ASCII码)表示任何字符。如'\x61'='\141'='a','\x41'='\101'='A','\012'
='\n'12例
转义字符的使用main(){printf("ab\tcdefg\bhijk\n");printf("ABCDefg\rEFGH\012");
printf("c:\\exam\\test");}运行结果:ab
cdefhijkEFGHefgc:\exam\test例题演示133.2.3变量其值可以改变的量称为变量。每个变量有名字,在内存中占一定的存储空间,用来存放数据。1变量定义类型名变量名列表;变量名列表例如:
inti,j,k;
longc;143.3基本数据类型整型(int)、实数类型(float或double)、字符型(char)。3.3.1整型(int)1整型变量定义〈整数类型〉〈变量名〉;有符号无符号按有无符号分长整数短整数按数据长短分15TurboC有几种整型(int)数据,见表3.2所示例如:定义几个不同的变量。inta,b,c;unsignedintd,e;a,b,c取值范围:-32768+32767。d,e两个变量定义为无符号整数,数值范围:065535之间。类型简写字长说明数的范围signedshortintshort或int,2字节有符号短整型数-32768~32767signedlongintlong4字节有符号长整型数-2147483648~2147483647unsignedshortintunsignedint2字节无符号短整型数0~65535unsignedlongintunsignedlong4字节无符号长整型数0~4294967295162整型数的存储形式数据在内存中以二进制形式存放。一个int型数据占2字节,即16位二进制数位。一个longint型数据占4字节.例:10(int型)的占位情况:00000000
00001010有符号数:负数将以补码形式存放。例:
-10的原码:1000000000001010-10的补码:1111111111110110符号位补码=原码取反+1173整型变量赋值及其说明(1)变量的初始化。
inta=3,b=100;
unsignedlongc=65535;(2)八进制数、十六进制数.
intf=022;/*f的值是八进制数22,即十进制的18*/(3)在整型常数后添加一个"L"或"l"字母表示该数为长整型数,如22L,773L。例如:longa=22L;如果表示为0773L表示该数为八进制的长整型数183.3.2实数类型(float和double)有float、double类型。1实数类型变量定义<实数类型>〈变量列表〉;三种:单精度实数、双精度实数和长双精度实数。单精度实数(float)4字节6~7位有效数字双精度实数(double)8字节15~16位有效数字长双精度实数(longdouble)16字节18~19位有效数字19可以用下列语句定义实数类型变量:floata,f;doubleb;floata=12.5,f=0.12346;2实数类型的存储形式实数类型在内存中以指数形式存储。例:float是单精度实数类型,占4字节,内存形式为:以高24位表示小数部分,最高位表示符号位;低8位代表指数部分。实数类型数3.1415926的存储形式如图3.2所示。0数符小数部分指数部分.31415926……
1
float类型内存表示24位8位203实数类型变量赋初值及其说明例如:floata=29.56,f=-6.8e-18;
说明:(1)实数类型常数只有十进制。(2)所有实数类型常数都被默认为double型。(3)绝对值小于1的实型数,其小数点前面的零可以省略。如:0.22可写为.22,-0.0015E-3可写为-.0015E-3。213.3.3字符型(char)1字符型变量的定义及存储字符型变量定义形式如下:〈字符类型〉〈变量列表〉;字符类型数据可分为有符号和无符号有两种类型。例如:chara;unsignedcharc;22字符型数据的存储字符在计算机中以其ASCII码方式表示,其长度占1个字节的存储单元,有符号字符型数取值范围为-128~127,无符号字符型数取值范围是0~255。在TurboC语言中,字符型数据在操作时将按整型数处理,如果某个变量定义成char,则表明该变量是有符号的,即它将转换成有符号的整型数(int)。23字符型数据的存储例charc;chard1,d2;为变量赋值:d1='a';d2='b';d101100001d201100010将字符赋给变量,就是将字符的ASCII码存放到变量所占的内存单元中。24在字符型数的取值范围内字符型数据与整型数据之间可以通用。实际是对ASCII码值进行运算。例
main(){charc1,c2;c1=97;c2=98;
printf("%c,%c",c1,c2);
printf("%d,%d",c1,c2);}运行结果:a,b97,9825例:将小写字母转换为大写形式。
main(){charc1,c2;c1='a';c2='b';相当于c1=97;c2=98;c1=c1-32;相当于c1=97-32=65;c2=c2-32;相当于c2=98-32=66;
printf("%c%c",c1,c2);}运行结果:AB262字符变量的赋值及字符常数表示如'a','9','Z',也可用该字符的ASCII码值表示。chara='A';chara=65;charc='\n';一些不能用符号表示的控制符,只能用ASCII码值来表示,如:八进制数033表示Esc27字符串常量字符串常量是一对双引号括起来的字符序列。如:"computer""China""a“C规定:字符串的结尾有一个字符'\0'作为字符串的结束标志(‘\0’的ASCII码值为0)。
"a"实际存放形式是:
'a''\0',占两个字节。charc;c="a";是错误的。C语言中没有字符串变量,存放字符串只能存放在字符数组中。283.4数据的输入与输出输入:指从外部输入设备(如键盘)向计算机输入数据。输出:指计算机向外部输出设备(如显示器、打印机)输出数据。
C语言中用库函数实现数据的输入输出。C标准函数库中提供了一些标准输入输出函数。如printf
、scanf、putchar、getchar、puts、gets
等。29使用库函数时,要用预编译命令#include<stdio.h>在头文件中包含了与所调用函数有关的信息。如:putchar()getchar()303.4.1字符输出函数函数的格式:putchar(ch);
将变量ch中的内容以一个字符形式输出到屏幕上。其中ch可以是字符型变量,也可以是整型变量,还可以是字符型常量或整型常量。31【例3.2】putchar()函数的使用/*C03_02.C*/#include<stdio.h>main(){charx='A',y='B';inti=97;putchar(x);putchar(y);putchar('C');putchar(i);putchar(98);putchar('!');/*输出字符常量*/}程序的输出结果如下:ABCab!32putchar()也可以输出转义控制字符。如putchar('\n');表示输出换行符,即控制输出位置换到下一行的开头。#include<stdio.h>main(){charx='A',y='B';putchar(x);putchar('\t');putchar(y);putchar('\n');putchar('C');putchar('!');}程序的输出结果如下:ABC!333.4.2字符输入函数c=getchar();功能:接收从标准输入设备(键盘)输入的一个字符,并将该字符作为函数的值赋给变量c。【例3.3】输入一个大写字符,将其转换成小写并输出。#include<stdio.h>main(){charc;
printf("Pleaseinputaletter:\n");c=getchar();/*输入一个字符*/c=c+32;putchar(c);}运行结果如下:Pleaseinputaletter:Aa34使用getchar()函数应注意以下两点:(1)getchar()函数可以作为putchar()函数的参数,putchar(getchar());(2)使用getchar()函数时,回车键也会作为输入字符的一部分。尤其在连续使用getchar()函数时要注意回车键将会作为换行符被下一个getchar()所接受。35【例3.4】连续使用getchar()时应注意的问题。/*C03_04.C*/#include<stdio.h>main(){charx,y;x=getchar();y=getchar();
putchar(x);putchar(y);}运行结果如下:A
A-
这是光标的位置,是putchar(y);输出的结果要想为x输入字符A,为y输入字符B,则输入应采用如下形式:AB输出结果显示:AB
363.4.3格式输出函数printf("格式控制",输出项列表);按某种格式,向输出设备输出若干个指定类型的数据。printf()函数的参数包括:格式控制和输出项列表两部分。格式控制部分要用一对双撇号括起来,用于说明输出项所采用的格式;输出项列表是所要输出的内容,可以是变量、表达式、或常量。371格式控制格式控制部分又可分为:普通字符和格式说明两部分。(1)普通字符(包括转义控制字符),将原样输出。例:printf("China");
该例输出普通字符串China例:printf("\tChina\n");\t输出位置跳到下一个输出区(一个输出区为8个西文字符位置),然后输出字符串,最后输出控制字符'\n',控制换行。输出结果如下:
China38(2)格式说明部分,以%开头,以格式说明符结尾。用于控制输出数据的类型和形式。例:printf("a=%db=%c
\n",a,b);普通字符格式说明输出项列表若设a变量中的值是10,b变量的值是‘E’,则输出结果是:a=10b=E格式控制中的各格式说明符与输出项在个数、次序、类型方面必须一一对应
39格式说明的一般格式如下:
%-m.nl格式说明符指定输出项的类型附加说明符格式说明符:用单一字母表示,用来指定对应输出项的输出格式,其含义如下。d-按十进制有符号整型输出o-以八进制无符号整数输出x-以十六进制无符号整数输出u-按十进制无符号整型输出c-以字符格式输出,只输出一个字符。s
-输出字符串。f-以小数形式输出单、双精度数,输出6位小数。e-以标准指数形式输出单、双精度数。如:%d——按十进制有符号整型数输出
%f——以小数形式输出单、双精度数,
40附加说明符的含义如下。l:用于输出long型数据,如%ld,%lum.n:指定输出域宽及精度,m和n都是正整数-:左对齐输出数据。412整型格式说明符(1)十进制形式输出%md:
控制输出项按十进制有符号整数形式输出。m是一个整数,用于指定输出数据的最小占位宽度,若所输出数据的位数少于m,左端(高位)将以空格占位;若输出数据的位数大于m,则按数据的实际宽度输出;若省略m则按所要输出数据的实际长度输出。如:inta=123,b=12345;printf("a=%4d,b=%4d\n",a,b);printf("sum=%8d",a+b);输出结果为:a=123,b=12345Sum=1246842%mld:
格式中的“l”符号用于输出long型数据。long型数不能用%d格式输出。如:longa=123456;printf("%ld",a);输出结果如下:123456printf("%8ld",a);的输出结果为:12345643%-md或%-mld:“-”表示输出数据左对齐。
inta=123;longb=12345;printf("%4d\n%-4d\n",a,a);printf("%8ld\n%-8ld\n",b,b);输出结果为:123123
这是左对齐输出的结果
123456123456
这是左对齐输出的结果%mu或%mlu:控制输出项按十进制无符号整型数输出。其中m和l的含义同前。44(2)八进制形式%mo:控制输出项按八进制整数形式输出。%mlo:按八进制长整数形式输出。(3)十六进制形式%mx:按十六进制整数形式输出。%mlx:按十六进制长整数形式输出。45【例3.5】整型数据的输出。#include<stdio.h>main(){unsignedinta=65534;printf("a=%d,%o,%x,%u\n",a,a,a,a);}运行结果:a=-2,177776,fffe,65534463实型格式说明符%f或%m.nf
:以小数形式输出单、双精度数据。m表示输出的整个数据所占的列数(注意小数点占一列),含义如前所述;n表示输出数据的小数部分的位数,如果不指定n,则默认输出6位小数。%e或%m.ne
:以标准指数形式输出单、双精度数。m,n的含义如前所述。47【例3.6】实型数据的输出。#include<stdio.h>main(){floatx=-2.5;doubley=31.416,z;z=x-y;
printf("x=%6.2f,%f,%.3f\n",x,x,x);
printf("y=%6.2f,%f,%-6.2f,\n",y,y,y);
printf("z=%e,%10.3e\n",z,z);}运行结果:x=-2.50,-2.500000,-2.500y=31.42,31.416000,31.42,z=-3.39160e+01,-3.391e+01484字符型格式说明符%c或%mc:输出一个字符。例如:#include<stdio.h>main(){charch='B';printf("ch=%c,%3c\n",ch,ch+2);}输出结果为:ch=B,D495字符串格式说明符格式说明符为:%—m.ns
格式中的m指输出字符串占m列。若要输出的字符串长度大于m,则不受m限制,全部输出;若要输出的字符串长度小于m,则左边以空格占位补齐m位。n:用于指定输出字符串左端截取n个字符。-:表示当输出的字符个数少于m时,输出左对齐,右边以空格占位补齐m位。50观察下面程序段的运行结果:#include<stdio.h>main(){printf("%s","Student");}运行结果为:
Student51观察下面程序段的运行结果:#include<stdio.h>main(){printf("%3s\n%5.2s\n%.4s\n%-5.3s\n","China","China","China","China");}运行结果:China
指定m为3,但实际字符串长度大于3,则不受m限制,全部输出Ch
指定n为2,从字符串左端取2个字符输出;m为5,输出占5列(不够则以空格占位)Chin
只指定了n为4,没指定m,则自动使m为4。Chi
指定m为5,n为3,则取字符串左端3个字符,输出占5列,且左对齐。52特殊符号的输出要输出某些特殊符号(如:\、"、'等),要用转义字符形式输出。例:要输出字符串:Isay:"Hello!"
,其中“"”符号要用转义形式输出:printf("Isay:
\"Hello!\"
\n");例:要输出字符串:C:\system\File1.txt,其中“\”符号要用转义字符形式输出:printf("C:\\system\\File1.txt\n");例:若想在输出的字符串中,显示有“%”号,要双写%号,printf("%.2f%%\n",100.0/4);运行结果为:25.00%533.4.4格式输入函数函数的调用格式:
scanf("格式控制说明",地址列表);功能:接受键盘输入的信息,按指定格式转换后,存放到地址列表所对应的变量中。1地址列表地址列表由若干个地址组成,它们可以是变量的地址也可以是字符串的首地址。变量的地址可以通过取地址运算符“&”得到。例如,变量a的地址表示为“&a”。2格式控制说明与printf类似,格式控制说明以%开头,以格式说明符结束,中间可加入附加说明符。格式控制说明的一般格式为:
%*ml/h
格式说明符指定输入项的类型附加说明符54常用的格式说明符及其含义如表3.7所示。常用的有:d输入十进制整型数c输入一个字符。s输入字符串。f输入十进制的小数形式或指数形式的实数附加说明符的含义如下l用于输入long型数据,如%ld,%lu;或输入double型数据,如%lfh用于输入short型数据,如%hd。m域宽说明,是一个正整数,指出输入数据所占列数。*表示本输入项不赋给变量。55例如:scanf("%d",&a);该语句执行的操作是将从键盘输入的一个数据转换成整型数(因为指定了%d格式)存放到a变量中。若要为变量b输入单精度实数,可用如下语句:scanf("%f",&b);若要为变量d输入双精度实数,可用如下语句:scanf("%lf",&d);56【例3.7】任意输入3个数,求它们的平均值,并输出结果。main(){floatx,y,z,ave;
printf("Pleaseinput3numbers:\n");/*显示提示信息*/
scanf("%f",&x);/*输入实数给x变量*/
scanf("%f",&y);
scanf("%f",&z);
ave=(x+y+z)/3.0;/*计算平均值*/
printf("x=%.2fy=%.2fz=%.2f\nave=%.2f\n",x,y,z,ave);}运行结果如下:Pleaseinput3numbers:1234567x=12.00y=34.00z=5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数控钻工安全理论模拟考核试卷含答案
- 农药生产工岗前质量控制考核试卷含答案
- 轨道作业车司机岗中心理健康考核试卷含答案
- 2026年医院妇幼保健医院人事管理工作制度【新】
- 垂直运输机械设备管理制度
- 2025年工会知识竞赛培训试题及答案
- 危险源识别及环境因素培训试题及答案
- 焦虑心理护理查房
- 轻质混凝土施工工艺
- 烧结瓦屋面施工工艺
- 民进班子成员工作制度
- 综合门诊部工作制度
- 肠内肠外营养规范应用
- 企业安全生产费用提取和使用管理办法(财资2026年136号文附件)
- 道路旅客运输及客运站管理规定2026版
- 2025年广投集团招聘笔试题目及答案
- 护理专业学生实习实习心理调适
- 中国听性脑干反应临床操作规范专家共识(2026版)
- 抬墓碑安全协议书
- 糖化终产物在口腔-全身损伤中的作用
- 儿科感染性疾病诊断与治疗
评论
0/150
提交评论