第六章 分支语句和逻辑运算符(167-197P)

关于if语句没有其他需要特别注意的,多个语句时需要使用大括号,条件测试语句会被强制转换为布尔类型(True,Flase),可以进行if语句嵌套。以及else if的不同条件的执行语句。

逻辑表达式

或(||),且(&&),非(!);
这里要注意,或,且运算符的优先级比较底,使用可以不加括号,但为了程序便于查看,一般可以加括号。但是非(!)运算符的优先级要高于所有关系运算符和算术运算符,所以需要给表达式求反,必须使用括号

?:运算符

条件运算符,也可以称之为三目运算符,这是c++中唯一需要三个操作数的运算符。

max = a > b ? a : b;

该运算符的意思是,如果a>b为真,则max赋值为a,反之为假,则max赋值为b。

switch语句

该语句用于从多个选择中选择一个,根据选择不同,执行结果不同,如果使用if语句,太过于繁琐,逻辑不清楚,所以针对这种问题,可以使用switch语句。

switch(choice)
{
	case 1 : cout<<"i am one!"<<endl;
	case 2 : cout<<"i am two!"<<endl;
	case 2 : cout<<"i am three!"<<endl; 
}

上述代码本意为,根据不同的choice值,打印不同的语句,是switch语句的基本形式,但如果choice为1,结果是三条语句都将被打印出来,如果choice为2,打印后两个语句。
这是c++中switch语句与其他语言中类似语句的不同之处,c++中的该语句就像指路牌,告诉用户该去哪,只是跳过前面的部分,执行指路牌之后的所有代码! 而我们本意是,只执行该条件下的语句,忽略其他所有语句,因此,每种执行代码后都需要加break:

switch(choice)
{
	case 1 : cout<<"i am one!"<<endl;
			break;
	case 2 : cout<<"i am two!"<<endl;
			break;
	case 2 : cout<<"i am three!"<<endl; 
			break;
}

上述就是switch语句的标准使用,和之前说的else if的使用是有不同的,虽然都是不同条件的选择。但else if的条件可以是一个范围,而switch的条件都是一个单独的值。这是使用最大的不同。

break continue语句

这两个语句都是结束循环的意思,但有根本的不同:
continue是结束当前循环,不执行该循环剩余部分,开始新的循环
break是结束所有循环,执行循环之后的代码

重置和删除cin内容(新知识)

我们会经常遇到这种情况,让用户输入一系列数字,然后我们在进行其他操作,这里以求和为例,之后打印输入所有的和,这要求用户输入的都是数字,但如果用户输入一个字符,系统将直接结束。但当用户输入错误时,我们想要提醒用户请正确输入,之后用户重新输入数字,然后直至输入结束,输出所有数字的和。
这里就需要搞清楚两个问题,第一是如果用户输入错误,cin将拒绝之后的所有输入,因此需要重置cin。第二,错误信息已经被系统录入了,因此需要将输入的错误字符删除,针对上面两个问题,我们写出以下代码:

whlie( !(cin>>numbers[i]) )
{
	cin.clear();
	whlie(cin.get() != '\n')
		continue;
	cout<<"please enter a new numbers:";
}

上述代码中,cin.clear()意思为重置cin,让它重新接受新的输入,因为在输入错误字符时,可以理解为cin就损坏了,所以需要修护。之后的while循环,cin.get() != ‘\n’,表示是将录入的错误字符全部读取出来,可以理解为清除出来,不然错误信息还堵着入口,即使cin重置了,也会直接遇到之前的错误字符,从而直接又错了,所以需要清除以前输入的错误字符,遇到空格为止,也就表示全部清除完了,之后提醒用户输入新的内容,如果还是输入错误字符,则继续执行上述过程,如果输入正确,则进行后续的操作计算。

简单文件输入,输出

写入文件中

必须包含头文件fstream

ofstream fout;
fout.open("fish.txt");
char nums[50];
cin>>nums;
fout<<nums<<endl;

首先需要声明一个ofstream对象,并将其与文件关联起来,之后就可以像使用cout一样使用创建的对象,使内容输出在指定的文本文件中。如果指定文件不存在,则会创建新的,如果存在,也会直接覆盖原本内容

读取文件中
ifstream fin;
fin.open(names.txt);
double b;
fin>>b;

char line[81];
fin.getline(line,81);

方法相同,和cin的使用格式一样,从文件names.txt中读取一个数字赋值给b,不再像cin一样用键盘输入赋值。后面的表示读取文件中一行内容,并赋值给数组元素。

关于文件操作以及之前的字符操作有许多库函数,就不做总结了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值