if 语句
if测试条件将被强制转换为bool值:0被转换为false,非零转换为true
if else
语句
格式:
if(test-condition)
statement1;
else
statement2;
C++是自由格式语言,只要使用大括号将语句括起,对大括号的位置无限制。
2. if else if else
结构
小技巧:可将更直观的表达式variable==value
反转为value==variable
,以此来捕获将相等运算符误写为赋值运算符的错误。编写让编译器能够发现错误的代码,比找出导致更难理解的错误的原因要容易的多。
eg: 赋值:if(x = 3)
错误:if(3 = x)
正确:if(3 ==x)
逻辑运算符
- 逻辑
or
运算符:||
--有true就true
||
是个顺序点,运算符左边的子表达式先于右边的子表达式;若左侧表达式为true,则不会去判定右侧表达式。 - 逻辑
and
运算符:&&
–都为true时才为true
在使用取值范围测试时,应确保取值范围之间既没有缝隙也没有重叠。 - 逻辑
not
运算符:!
将其后面的表达式的真值取反 - 运算符优先级
!
>&&
>||
注意要用括号将测试进行分组,and、or、not都是C++保留字。
字符函数库cctype
- 头文件cctype中成员函数:
isalpha()
—检查字符是否为字母字符;
isdigits()
—测试字符是否为数字字符;
ispunct()
—测试字符是否为标点符号;
isspace()
—测试字符是否为空白(换行符、空格、制表符) - 条件运算符(
?:
)
格式:
expression 1 ? expression 2 : expression 3;
//生成一个表达式,是一个值,可将其赋给变量或将其放到一个更大的表达式中。
switch语句
通用格式
switch (integar-expression)
{
case label 1: statements ; break ;
case label 2: statements ; break ;
……
default : statements;
}
integar-expression必须是一个结果为整数值的表达式;每个标签都必须是整数常量表达式。
当switch语句将int值和枚举量标签进行比较时,将枚举量提升为int;在while循环测试条件中也会将枚举量提升为int类型。
若选项涉及取值范围、浮点测试或两个变量比较时应使用if-else语句。
break
和continue
语句
break
:使程序跳到switch或循环后面的语句处执行。
continue
:让程序跳过循环体中余下的代码并开始新一轮循环。
简单文件输入和输出
使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码。不论数据类型是什么,输入一开始都是字符数据—文本数据,cin对象负责将文本转换为其它类型。控制台输入的文件版本都是文本文件,即每个字节都存储了一个字符编码的文件。
写入到文本文件中
(1)必须包含头文件fstream
(2)需声明一个或多个ofstream
变量(对象)
(3)必须指明名称空间std
(4)需将ofsteam
对象与文件关联起来。方法之一:使用open()
(5)使用完文件后应使用方法close()
将其关闭
(6)可结合使用ofsteam
对象和运算符<<
来输出各种类型数据
注意:open()
接受一个C-风格字符串作为参数,可以是字面字符串,也可以是存储在数组中的字符串。例outFile.open(“data.txt”)
。若程序运行之前data.txt文件不存在,则open()
将新建一个名为data.txt的文件;若运行之前存在该文件,则将截断该文件,默认将其长度截断为零,即丢弃原有内容,将新的输入加入到该文件中。
close()
不需使用文件名作为参数,因为ofsteam
对象已同特定的文件关联。
读取文本文件
(1)必须包含头文件fstream
(2)需声明一个或多个ifstream
变量(对象)
(3)必须指明名称空间std
(4)需将ifsteam
对象与文件关联起来。方法之一:使用open( )
(5)使用完文件后应使用方法close( )
将其关闭
(6)可结合使用ifsteam
对象和运算符>>
来读取各种类型数据
(7)可使用ifstream
对象和get( )
来读取一个字符,也可与getline( )
来读取一行字符。
(8)可结合使用ifstream
和eof( )
、fail( )
等方法判断输入是否成功。
(9)ifstream
对象本身被用作测试条件时,若最后一个读取操作成功,它将被转换为布尔值true,否则为false。
如:
inFile. open(“pra.txt”); //检查文件是否被成功打开:is_open( )
if(!inFile. is_open( )) //若文件被成功打开,方法is_open( )将返回true
函数 | 说明 |
---|---|
exit() | 在头文件cstdlib中定义,该头文件中还定义了一个用于同操作数系统通信的参数值EXIT_FAILURE ,函数exit( )终止程序。 |
eof() | 方法用于判断最后一次读取数据时是否遇到EOF,若是则返回true。 |
good() | 方法在没有发生任何错误时返回true。 |
fail() | 方法用于判断最后一次读取数据时是否遇到类型不匹配情况,若是则返回true。(遇到EOF也返回true) |
bad() | 出现意外问题(文件受损、硬件故障)时返回true。 |
输出格式
cout<<fixed; //用一般方式输出浮点型(控制台显示大数用科学计数法)
cout. precision(n); //设置精度为n,并返回上一次的设置
cout. setf(ios_base::showpoint); //显示浮点数小数点后面的零
方法调用setf(ios_base::fixed)
将对象置于使用定点表示法的模式。
width()
设置下一次输出操作使用的字段宽度,这种设置只在显示下一个值时有效,然后将恢复到默认设置(默认字段宽度为零)
输出前置补0、后置补0
int a=7;
cout<<setw(3)<<setfill(‘0’)<<a; //007 只起一次作用
double x=0.12;
cout<<setiosflags(ios::fixed)<<setprecision(4)<<x;//0.1200
保存输出格式设置与恢复
ios_base::fmtflags initial ;
initial = cout. setf(ios_base::fixed); //save initial formatting state
……
cout.setf(initial); //restore initial formatting state
方法setf()
返回调用它之前有效的所有格式化设置,ios_base::fmtflags
是存储这种信息所需的数据类型名称。