C++程序设计课件 设计制作:徐龙琴 2
本章要点:
? C++中的 字符集 和 保留字
?基本数据类型 和取值范围
?变量 的定义、声明和初始化
?常量 的表示法
?输入及输出
C++程序设计课件 设计制作:徐龙琴 3
§ 2.1 C++的词法及词法规则
一 C++的字符集
? 大小写 字母, a,b,A,B ‥ ‥ ‥
? 数字, 0~ 9。
? 运算符, +,-,*,/,%,<, <=, =, >=,
>, !=, = =, <<, >>, &, |,
&&, ‖, ∧, ~, ( ), [ ],{ },->,
?, !,?,?,,,,;,,, # 。
? 特殊字符,连字符或下划线, 空格, 换行和制表符等 。
C++程序设计课件 设计制作:徐龙琴 4
二 词与词法规则
1,标识符,用来 标识用户定义的常量名、变量名、函数名、文件名、
数组名、和数据类型名和程序等。 由 字母, 下划线 或 数字
组成 的字符序列,标识符必须由 字母 或 下划线 开始,有效长
度是 8个字符 。
正确 不正确
smart 5smart(不能数字开头)
_decision bomb?(有非法字符?)
key_board key.board(有非法字符,)
【 例 】,下图是正确和不正确的标识符实例,
C++程序设计课件 设计制作:徐龙琴 5
◇ 标识符的命名规则:
① 所有标识符 必须由字母或下划线开头且由字母、下划线或数字组成
② 标识符 应该尽量有意义 。如:年 year,长度用 length,累加和用 sum等。
④ 大小写字母表示不同意义,即代表不同的标识符
⑤ 不能把关键字 它们再 定义为 变量的 标识符
2,关键字,预定义的标识符,称之为关键字,它是一种特殊的标识符。
关键字具有特定的含义,作为专用定义符的单词,不允许另
作它用。 标准 C++中预定义了以下关键字(常用):
C++程序设计课件 设计制作:徐龙琴 6
auto break case char class
const continue default do ddefault
delete double else enum explicit
extern float for friend goto
if inline int long mutable
new operator private protected
public register return short signed
sizeof static static_cast struct switch
this typedef union unsigned virtual
void while
3,运算符和分隔符
运算符 是 C++语言实现加、减等 各种运算的符号 。 C++语言的 分
隔符 主要 是, 空格, 制表 和 换行符 。
C++程序设计课件 设计制作:徐龙琴 7
4,字符串
字符串是 由双引号括起来的字符 。如,China”,,C++ Program”
5,常量
C++中常量 包括 实型 (浮点常量)和 整型 常量(十进制常量、
八进制常量、十六进制常量),字符常量 和 字符串常量 。
6,注释
注释是 用来 帮助阅读、理解及维护程序 。 在编译时, 注释部分被忽
略,不产生目标代码。 C++语言提供两种注释方式。一种是与 C兼容的
多行注释用 /*和 */分界 。另一种是 单行注释,以,//”开头的表明本行
中,//”符号后的内容是注释 。
C++程序设计课件 设计制作:徐龙琴 8
§ 2.2 数据类型
一 数据类型,它 定义了变量可存储的数值范围以及可进行的操作 。每
个 变量 ( 是用于内存中保存数据的 )都必须有确定的数据
类型,C++语言的 数据类型有:
数据类型
基本类型
整型 int
实型(浮点型)
单精度型 float
双精度型 double
字符型 单字符型 char
宽字符型 w-char
逻辑型 bool
非基本类型
空类型(无值类型) void
构造类型
数组类型
结构类型 struct
联合型类型 union
枚举型类型 enum
指针类型
类类型 class
C++程序设计课件 设计制作:徐龙琴 9
àà Dí ?? ×? ?í ·? ?§
c h a r 1 - 128 ~ 127
s i g n e d c h a r 1 - 128 ~ 128
u n s i g n e d c h a r 1 0~ 255
s h or t [ i n t ] 2 - 327 68~ 327 67
s i g n e d s h or t [ i n t ] 2 - 327 68~ 327 68
u n s i g n e d s h or t [ i n t ] 2 0~ 655 35
i n t * - 214 748 364 8~ 214 748 364 7
s i g n e d [ i n t ] * - 214 748 364 8~ 214 748 364 8
u n s i g n e d [ i n t ] * 0~ 429 496 729 5
l on g [ i n t ] 4 - 214 748 364 8~ 214 748 364 7
s i g n e d l on g [ i n t ] 4 - 214 748 364 8~ 214 748 364 8
u n s i g n e d l on g [ i n t ] 4 0~ 429 496 729 5
f l oa t 4 ?? 7 ?? óD D§êy ×?
dou bl e 8 ?? 15 ?? óD D§êy ×?
l on g dou bl e 10 ?? 19 ?? óD D§êy ×?
基本数据类型宽度及表示范围,各类型精度由低到高排列为:
如果 运算符两边 操作数 类型
不同,先 要将 较低类型转换
为较高类型,然后再运算
C++程序设计课件 设计制作:徐龙琴 10
#include <iostream.h>
void main( )
{
char a = 'x';
int b = 3,f = 2;
float c = 2.5678;
double d = 5.2345
long e = 32L;
cout<<a - b + d / c - e * f<<endl;
}
运行结果为, 55.038515
C++程序设计课件 设计制作:徐龙琴 11
§ 2.3 变量
?变量, 指程序在运行时其 值可改变的量 。 每个变量 由 一个 变量名 惟一标识,
同时,每个变量又具有一个特定的 数据类型 。不同类型的变量在内
存中占有存储单元的个数不同
?不能 是 C++的 关健字 。
?第一个字符必须是字母或下划线且由 字母、数字 或下 划线 组成。
?一般 不 要 超过 31个 字符。
?不要 与 C++中的 库函数名, 类名 和 对象名 相同。
?应 该 尽量有意义 。如,numOfStudents; my-car ; myCar ; iMyCar等
?区分大小写
1,变量的命名规则,
注意,C++中,变量使用之前一定要定义或说明 !
C++程序设计课件 设计制作:徐龙琴 12
2,变量的 定义的格式,
[存储类型 ] 类型 变量名;
存储类型有,auto register extern static默认的是 auto
?auto存储类
–属于临时性存储,其存储空间可以被若干变量多次覆盖使用。
?register存储类
–存放在通用寄存器中。
?extern存储类
–在所有函数和程序段中都可引用。
?static存储类
–在内存中是以固定地址存放的,在整个程序运行期间都有效。
C++程序设计课件 设计制作:徐龙琴 13
例如,int a,b,c; //定义 3个整型变量 a,b,c
和,
int a; //定义整型变量 a
int b; //定义整型变量 b
int c; //定义整型变量 c
二者等价 。
3,变量的 初始化,
变量初始化一般采用 两种方式,
① 在 定义变量时就给变量赋初值
例如:
int a=3;
float b=3.4;
② 先定义,再赋植
例如:
int a;
a=3;
C++程序设计课件 设计制作:徐龙琴 14
◇ sizeof 操作符
◇ typedef 为一个已有的类型名提供一个同意词
typedef int INTEGER;//新类型名
INTEGER num1,num2; //完全等价于,int num1,num2
例:
例,count<<“size of char is”<<sizeof(char)<<end1;
其运行的结果为,size of char is 1
?其 语法形式 为,sizeof (类型名 )或 sizeof (表达式 )
?其 结果值为,“类型名”所指定的类型或“表达式”的 结果类型所占字节数 。
C++程序设计课件 设计制作:徐龙琴 15
§ 2.4常量
?常量, 指在程序运行过程中 其值不能改变的量 。 C++支持 5种 类型的常量:
浮点型、整型、字符型、布尔型和枚举型。
十进制, 123,-23456
八进制, 0123,0765
十六进制, 0x123,0xa4d3
长整型,123L,0123L,0X123L
无符号整形,13579ul //无符号长整数
1、整型常量
2,实型常量
?①, 小数形式,由数字和小数点组成
如,0.123,.234,-56.789 等
C++程序设计课件 设计制作:徐龙琴 16
?②, 指数形式,
如,123E5,123e5,0,123e8,1.23E7,-0.123e23
4.字符串常量
?只表 示 一个字符,用 单撇号 。例:‘ a’
?存储 字符的 ASCII码。例:‘ a’ 在计算机中存为其 ASCII码 97
? 字符常量 可 与 整数 进行混合运算,它门在功能上 等价
?转义字符 (是以 \开头的特殊的字符常量)
?常用转义字符,\a ; \n ; \t ; \b ; \\ ; \’ ; \” ;
\ddd ; \xhh
3.字符常量
?用 双撇号 括起来的量。如, a”
?存储时 系统 自动 在字符串常量的 末尾加上 ‘ \0’,表示字符串结束。
?‘ a’是字符常量,占一个字节,, a”是字符串常量,占两个字节 。
C++程序设计课件 设计制作:徐龙琴 17
4.枚举常量
若一个变量只有几种可能的值,就可以把它定义为枚举类型。其形式为:
enum 枚举类型名 { 常量值 1,常量值 2, …,常量值 n};
例,enum weekday{sun = 7,mon = 1,tue,wed,thu,fri,sat};
enum color{Red,Green,Blue,White,Black};
5.常量的定义
① 若想使某个变量的值一直不变 可用 const来定义其为一个常量 。一旦加
了 const修饰符,只能通过声明时初始化 其值,而不能在随后再改变其值,
例,计算圆面积 #include <stdio.h>
void main() {
const float pi=3.14159;
float r=3;
printf(“Area=%f \n”,r*r*pi);
}
C++程序设计课件 设计制作:徐龙琴 18
② 用 #define 来定义常量
例, 计算圆面积
#include <stdio.h>
#define PI 3.14159
void main() {
float r=3;
printf(“Area=%f \n”,r*r*PI);
}
在程序编译前,所有的 PI都被替换成 3.1415926
C++程序设计课件 设计制作:徐龙琴 19
#include<iostream.h>
void main( )
{
const int PI=30;
int num,total;
float v,r,h;
num=10;
total=num*PI;
cout<<total <<endl;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
cout<<v <<endl;
}
变量
变量先定
义后使用 符号常量
C++程序设计课件 设计制作:徐龙琴 20
§ 2.6输入 /输出( I/O)
? I/O,C++没有提供输入 /输出语句,而是 以下两种方法来实现:
② 或由文件 stdio.h中 定义 的库函数 scanf(), printf( ) 来实现
① 由文件 iostream.h中 定义 的输入对象 cin,输出对象 cout 与抽 取
操作符,>>”和插入操作符,<<”来实现。
? 输入 /输出流( I/0流 ),C++中把 数据之间的传输操作 称作 流 。 I/0
流
指输入或输出的一系列字节。
1.用 标准 I/O流库 实现输入输出,
① 输入, 当 程序 需要 从键盘 输入时,可以使用 抽取操作符,>>”从
输入 流 cin中 抽取键盘输入的字符和数字,并把它赋给指
定的变量。
C++程序设计课件 设计制作:徐龙琴 21
例 2,double x; int y; char z;
cin>>x>>y>>z ;
注意,① cin:指 标准的输入设备(键盘)
② >>:提取操作符,从输入流读入数据
③ 从 控制台( 键盘 ) 接收输入数据, cin>>变量 1>>变量 2……
④用 空格 或 回车 符 作为 数据 之间的 分隔符,每个输入数据的格式应
与相应变量的类型相符。
⑤ 若用 程序中 用 了 I/O流 则 必需 在该程序前 写上 预处理指令:
#include<iostream.h>
例 1,#include<iostream.h>void main()
{ int a;
cin>>a;
}
C++程序设计课件 设计制作:徐龙琴 22
其运行结果为,i 的值为 3.14159
例,double i=3.14159;
cout<<,i 的值为” << i ;
等价, cout<<“i 的值为” ;
cout<<i ;
或 等价,cout<<“i 的值为”
<<i ;
注意,① cout:指 标准的输出设备(显示器),用于在屏幕上输出变量的
值和双引号中的字符串。
② <<,插入操作符,把数据送到输出流
③ 把变量的值或字符串送到控制台(屏幕)输出:
cout<<表达式 1<<表达式 2……
cout<<“字符 1”<<,字符 2” ……
④ cin,cout在文件 <iostream.h>中,故在程序开始必须写出其文件
② 输出, 当 需要 在屏幕上 输出变量的值 或 字符串 时,可用输出流库对象
cout与插入操作符,<<”来实现。
C++程序设计课件 设计制作:徐龙琴 23
例,用流进行输入输出:
#include <iostream.h>
void main(){
int m;
char ch1,ch2;
float x,y;
cin>>m>>ch1>>ch2>>x>>y;
cout<<“m=“<<m<<endl;
cout<<“ch1=“<<ch1<<“,ch2=“<<ch2<<endl;
cout<<“x=“<<x<<“;y=“<<y<<endl;
}
在 C++程序中,对标准 I/ O的操作必须
说明相关头文件,cin,cout使用的头文件是
<iostream.h>
键盘输入的格式:以空格或回车分隔数据。
但字符数据要注意:空格也是合法字符。
,”内字符原样输出
C++程序设计课件 设计制作:徐龙琴 24
◇ I/O流的 格式控制
用 控制符 (文件 iomanip.h中定义的对象) 可以 对输入输出格式进行控制
常用的控制有:
dec
hex
oct
setfill(c)
setprecision(n)
setw(n)
setiosflags(ios::fixed)
setiosflags(ios::scientific)
setiosflags(ios::left)
setiosflags(ios::right)
setiosflags(ios::skipws)
setiosflags(ios::uppercase)
setiosflags(ios::lowercase)
setiosflags(ios::showpoint)
setiosflags(ios::showpos)
置基数为 10
置基数为 16
置基数为 8
设填充字符为 c
设显示小数精度为 n位
设域宽为 n个字符
固定的浮点显示
指数表示
左对齐
右对齐
忽略前导空白
16进制数大写输出
16进制数小写输出
强制显示小数点
强制显示符号
C++程序设计课件 设计制作:徐龙琴 25
#include <iostream.h>
#include <iomanip.h> //要用到格式控制符
void main()
{
double amount = 22.0/7;
cout <<amount <<endl;
cout <<setprecision(0) <<amount <<endl
<<setprecision(1) <<amount <<endl
<<setprecision(2) <<amount <<endl
<<setprecision(3) <<amount <<endl
<<setprecision(4) <<amount <<endl;
cout <<setiosflags(ios::fixed);
cout <<setprecision(8) <<amount <<endl;
cout <<setiosflags(ios::scientific) <<amount <<endl;
cout <<setprecision(6); //重新设置成原默认设置
}
运行结果为:
3.14286
例:
3
3
3.1
3.14
3.143
3.14285714
3.14285714e+00
C++程序设计课件 设计制作:徐龙琴 26
① cout <<setfill('*')
<<setw(2) <<21 <<endl
<<setw(3) <<21 <<endl
<<setw(4) <<21 <<endl;
cout <<setfill(' ');
// 恢复默认设置运行结果为,21
*21
**21 ② number= 1001;
cout<<"1001:"<<hex
<<setiosftags(ios::uppercase)
<<number<<endl;
运行结果为,1001, 3E9。
③ cout <<10.0/5 <<endl;
cout <<setiosflags(ios::showpoint)
<<10.0/5 <<endl; 运行结果为,2
2,00000
C++程序设计课件 设计制作:徐龙琴 27
④ cout <<10 <<" " <<-20 <<endl;
cout <<setiosflags(ios::showpos)
<<10 <<" " <<-20 <<endl;
运行结果为,10 -20
+10 -20
2.调用 标准 I/O函数完成输入输出
?标准函数,各种计算机都提供的一些通用函数 被称为标准函数
?标准 I/O函数,常用的是由文件 stdio.h定义的输入函数 scanf( )和输
出函数 printf( )
① 输出函数, printf( )
格式,printf (”格式 控制串,,输出项 1,输出项 2,…,)
功能,将后面的输出项按前面给定的格式输出
C++程序设计课件 设计制作:徐龙琴 28
? 格式 控制 串的组成:,普通字符串和格式串“
◆ 格式串,以 % 开头,以 格式字符结束 。其完整的形式为:
% – 0 m.n l或 h 格式字符
格式说明的起始符号
指定左对齐输出
指定空位填 0
指定输出的
宽度及精度
输出长度
修正
指出输出的类型:
d:十进制
o:八进制
x:十六进制
c:字符
s:字符串
u:无符号的十进制
f:小数形式
e:指数形式表示
例, float a=2.14235;
printf(“a=% –05.2f”,a);
其输出结果为,a=002.14
C++程序设计课件 设计制作:徐龙琴 29
? 实例1:
#include <stdio.h>
void main( )
{ printf ("This is a C program.\n");
}
? 实例2:
#include,stdio.h”
void main( )
{ int a=1,b=2,c=100;
printf("a=%d,b=%3d,d=%3d%%\n",a,b,a*c/b);
printf("%d,%o,%x\n",c,c,c);
}
输出, a=1,b= 2,d= 50%
100,144,64
C++程序设计课件 设计制作:徐龙琴 30
格式,scanf(”格式 控制串,,地址 1,地址 2,…,)
② 输入函数, scanf( )
% * m h或 l 格式字符
格式说明的起始符号
虚读,不送变量
域宽说明
短整型或常整
型及双精度型
指出输入的类型:
d:十进制
o:八进制
x:十六进制
c:字符
s:字符串
u:无符号的十进制
f:小数形式
e:指数形式表示
?“格式 控制串,完整的 组成:
?变量 a的地址 可表示为, &a
功能,将数据按给定的格式存入对应的变量中。
?实例,
1,scanf ("%3d%2d",&x,&y);
输入序列,123456[ENTER]
结果,x=123,y=45
2,scanf ("%d,%d:%f",&x,&y,&z);
输入序列,1,2:3.5[ENTER]
结果,x=1,y=2,z=3.5
C++程序设计课件 设计制作:徐龙琴 31
3,scanf ("%d%d%d",&x,&y,&z);
输入序列一,1 2 3[ENTER]
结果,x=1,y=2,z=3
输入序列二,1[TAB]2 3[ENTER]
输入序列三,1[ENTER]
2 3[ENTER]
结果与输入序列一的结果一样。
4,scanf ("%2d %*2d,%2d",&x,&y);
输入序列,12 34,56[ENTER]
结果,x=12,y=56。
注意,在 scanf中,可以使用 [ENTER],空格 或 [TAB]作为数
据之间的 分隔符 。
C++程序设计课件 设计制作:徐龙琴 32
5,scanf (”x=%d",&x);
要使 x的 值等于 12,从键盘应怎样输入?
正确 的输入序列,x=12[ENTER]
注意,字符 x= 被过滤掉了
若输入序列为,12[ENTER]
错误! ?
C++程序设计课件 设计制作:徐龙琴 33
例,使用 scanf和 printf函数
#include <stdio.h>
void main( )
{ int a;
float b,c;
scanf (”%2d%3f%4f”,&a,&b,&c);
printf(”a=%d,b=%f,c=%f\n”,a,b,c);
}
输入, 12345678987654321
输出:
a=12,b=345.000000,c=6789.000000
C++程序设计课件 设计制作:徐龙琴 34
作 业
?书面作业, P32
◆ 2.6; 2.8;
?上机:学习 VC平台使用,掌握程序 I/ O
◆ 课本例题 ;
◆ 习题程序(全部)