第2章 基本数据类型与输入输出
- 格式:doc
- 大小:1.09 MB
- 文档页数:9
C语言系列教程——基本数据类型与输入输出第2章基本数据类型与输入输出程序中最基本的元素是数据类型。
确定了数据类型,才能确定变量的空间大小和其上的操作。
C++的数据类型检查与控制机制,奠定了C++今天的地位。
C++还提供了L/O流机制,完成对输入输出的操作管理。
在过程化程序设计中,prinff和scanf是对流的一个适当补充。
学习本章后,要求搞清数据类型与变量、常量的关系,掌握各种常量的性质和定义,学会I/O流的使用,了解pfinff和scanf输入输出的作用。
2.1 字符集与保留字每种语言都使用一组字符来构造有意义的语句。
C++程序是用下列字符所组成的字26个小写字母:abcdefghijklmnopqrstuvwxyz26个大写字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ10个数字:0 1 2 3 4 5 6 7 8 9其他符号 + - * / = , . _ : ; ? \ " ' ~ | ! # % & ( ) [ ] { } < > (空格)C++中,保留字也称关键字。
它是预先定义好的标识符,这些标识符对C++编译程序有着特殊的含义。
表2-1列出了C++的保留字。
ANSIC规定有32个保留字,表中用黑正体字表示;ANSIC++在此基础上补充了29个保留字,表中用黑斜体字表示。
本书不作介绍的表中用白体字表示。
为了使语言能更好地适应软件开发环境,BC或VC对保留字进行了扩充,在表中用白斜体字表示。
VC与BC对关键字的扩充内容是不同的,这里只是常用的和共同扩充的几个。
表2-1 C++保留字auto break case charconst continue default dodouble else enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile whilebool catch class const_castdelete dynamic_cast explicit falsefriend inline mutable namespacenew operator private protectedpublic reinterpret_cast static_casttemplate thisthrow truetry typeid typename usingvirtual wchar_tasm cdecl far hugeinterrupt near pascal exportexcept fastcall saveregs stdcallseg syscall fortran thread在程序中用到的其他名字(标识符)不能与C/C++的关键字有相同的拼法和大小写。
实验二基本数据类型与输入输出2.1 实验目的1.掌握C语言基本数据类型以及常量的表示方法、变量的定义与使用规则。
2.掌握C语言的算束运算、逗号运算的运算规则与表达式的书写方法。
3.掌握各种输入输出函数的使用方法。
2.2 实验内容1.上机调试(需作出必要的注释!)(1)请说明以下程序的功能,然后上机验证。
#include<stdio.h>void main(){printf("\t*\n");printf("\t\b***\n");printf("\t\b\b*****\n");}该程序主要功能是以给定形式输出几个简单的字符。
(2)请说明以下程序的功能,然后上机验证。
# include<stdio.h>void mian(){int x=010,y=10,z=0x10;char c1='M',c2='\x4d',c3='\115',c4=77 ,c;printf("x=%o,y=%d,z=%x\n",x,y,z);printf("x=%d,y=%d,z=%d\n",x,y,z);printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);c=c1+32;print("c=%c,c=%d\n",c,);}c:\documents and settings\vm272\sy3.cpp(5) : error C2018: unknown character '0xa3' c:\documents and settings\vm272\sy3.cpp(5) : error C2065: 'c' : undeclared identifierc:\documents and settings\vm272\sy3.cpp(11) : error C2065: 'print' : undeclared identifierc:\documents and settings\vm272\sy3.cpp(11) : error C2059: syntax error : ')'第一:void mian()中“mian”书写错误,应为“main”.第二:char c1='M',c2='\x4d',c3='\115',c4=77 ,c;中最后一个“c”前面的“,”为中文符号,应用英文符号“,”第三:在print("c=%c,c=%d\n",c,);中“print”应为“printf”第四:在print("c=%c,c=%d\n",c,);中最后只有一个“c”,本应由两个,所以应该改为“c,c”。
第2章基本数据类型与输入输出2·1字符集与关键字组成C语言的字符(字符集)包括:26个小写字母a~z26个大写字母A~Z10个数字0~9其它可以显示的字符+-*/=,._:;?\”’~|!#%&()[]{}^<>空白字符空格、制表、换行、回车等等在C源程序中,编译器识别的基本元素是“语言符号“,包括:关键字标识符常量(文字常量)运算符标点字符关键字是C编译器中具有特定意义的单词。
auto break case charconst continue default dodouble else enum extern float for goto ifint long register return short signed sizeof static struct switch typedef union unsigned void volatile while2·2基本数据类型整形字符型单精度型实型(浮点型)枚举型双精度型数组类型数据类型构造类型结构体类型公用体型指针类型当声明一个对象(变量或常量)时,必须说明是什么数据类型(简称“类型“);对象类型的描述确定了其内存所占空间大小,也确定了其表示范围;对象类型的描述确定了其所能进行的操作;在不同的计算机上,每个对象类型所占用的内存空间的长度不一定相同。
基本数据类型的分类整数类型符号表现形式数据长度数值范围带符号int 32 -2147483648~2147483647short 16 -32768~32767long 32 -2147483648~2147483647无符号unsigned int 32 0~4294967295unsigned short 16 0~65535unsigned long 32 0~4294967295实数类型符号表现形式数据长度数值范围带符号float 32 7位精度double 64 15~16位精度字符类型符号表现形式数据长度数值范围带符号char 8 -128~127无符号unsigned char 8 0_2552·3变量在程序运行过程中,其值可以改变的量称为变量。
一个变量有一个名字,在内存中占据一定的存储空间。
2.3.1变量的命名用来标识变量名、常量名、函数名、类型名、文件名的有效字符序列称为标识符(identifier)。
标识符的命名规则(1)必须以字母或者下划线开始;(2)名称的其余部分必须由字母、数字和下划线组成;(3)不能是C语言的关键字;(4)C语言区分大小写;(5)不要太长,一般不超过31个字符;(6)不要与C语言中的库函数名和常量名相同。
例如:way_cool,RightOn,Bits32,iPtr,myCar //合法case,52Select,A Lot,-VV //非法sin,Case,string //不合适2.3.2变量定义方式变量就是一个存储对象,必须在声明之后才能使用;声明变量即定义了变量,意味着给变量分配了内存空间;声明可以在任何代码块顶端的开始{符号之后出现;如果使用一条语句声明多个同一类型变量时,变量使用都号分割;在同一语句里不能混合定义不同类型的变量。
2.3.3量赋值与初始化用赋值运算符“=”给变量复制int nCount;nCount = 0; /*赋初值*/在定义变量的同时赋值,称为初始化int nCount = 0;例如:2.3.4 字符数据在内存中的存储形式及其使用方法C语言使字符型数据和整数数据之间可以通用;一个字符数据既可以以字符形式输出,也可以以整数形式输出;可以对字符数据进行算术运算。
2·4常量在程序运行中,其值不能被改变的量称为常量。
用文字代表一个常量,称为文字常量。
如radius = diameter/2.0;2.0就是一个文字常量。
用一个标识符代表一个常量,称为符号常量,即标识符形式的常量。
2.4.1 常量定义使用编译预定以指令#define#define 常量名 文字常量 如 #define PI 3.1415926area = PI * radius * radius; area = 3.1415926 * radius * radius;使用const 修饰词在变量声明的开始使用const 修饰语创建一个变量(符号变量)。
如 const double PI = 3.1415926; area = PI * radius * radius; 符号常量必须初始化;常量名不能出现在赋值语句的左边。
const int size = 100 * sizeof(int); //ok const int number = max(15,23); //error2.4.2 整型常量 1· 十进制整数。
如123、-456、0。
2· 八进制整数。
以0开头的数是八进制数。
如0123=(123)8)123(8=1*64+2*8+3=83;-011=8)11(-=-1*8+1=-9。
3· 十六进制整数。
以0x 开头的数是十六进制数。
如0x123=16)123(=1*16*16+2*16+3=291; -0x12=16)12(-=-16+2=-182.4.3 实型常量 1· 十进制数形式。
如0.123、.123、123.0、123.、0.0 2· 指数形式。
如123e3或123E3 2.4.4字符型常量C 的字符常量是用单引号括起来的一个字符。
如’a’,’A’,’*’,’%’。
字符形式 功能\n换行 \t横向跳格 \v竖向跳格 \b退格 \f走纸换页 \r回车 \\反斜杠字符”\” \’单引号字符 \ddd1到3位8进制数所代表的字符 \xhh1到2位16进制数所代表的字符2.4.5字符串常量字符串常量是一对双引号括起来的字符序列。
如:”How do you do”2·5 printf和scanf2.5.1 printf函数int printf(格式控制,输出列表);或printf(参数1,参数2,…参数n );int printf(const char*format [,argument]...);功能:向终端输出若干个任意类型的数据。
返回值:输出的字符个数,若出错,返回负数。
参数:format“格式控制”使用双引号括起来的字符串,也称“转换控制字符串”,它包含两种信息:1·格式说明,由%和格式字符组成,如%d。
它的作用是将输出的数据转换为指定的格式输出。
2·普通字符,即需要原样输出的字符argument输出列表#include <stdio.h>LIBC.LIB2.5.2 scanf函数scanf(格式控制,地址列表);int scanf(const char*format [,argument]...);功能:返回值:参数:format“格式控制”的含义同printf函数,“地址列表”是由若干地址组成的表列,可以是变量的地址,或字符串的首地址。
argument地址列表#include <stdio.h>LIBC.LIB注意事项(1)scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名;scanf(”%d%d”, &a, &b); //合法scanf(”%d%d”, &a, &b); //不合法(2)如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符;(3)在用”%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入;(4)在输入数据时,遇以下情况时该数据认为结束:1.与空格,或按“回车”或“跳鸽”(TAB)键。
2.与宽度结束。
3.与非法输入。
2·6 putchar和getcharint putchar(char ch);功能:向终端输出一个字符ch参数:返回值:输出的字符ch若出错,返回EOF#include <stdio.h>LIBC.LIBint getchar();功能:从终端输入一个字符参数:无返回值:所读字符。
若出错则返回-1#include <stdio.h>LIBC.LIB2·7 sizeof操作符例如:int nSize = sizeof(int);int i;nSize = sizeof(i);2·8 本章要点主要概念关键字标识符数据类型变量常量新的词汇#include #define sizeof const运算符声明新的函数main printf scanf putchar getchar2·9 上机作业1.输入一个小写字母,输出其相应的大写。
2.输入一个华氏温度,要求输出摄氏温度。
公式c = 5/9*(F-32)输出要有文字说明,取2位小数。