C++学习笔记2020.3.13(上)

if-else if- if 语句:

简单举个例子:

#include<iostream>
using namespace std;
int main(void){
	char ch;
	int a_grade,b_grade,c_grade;
	a_grade=b_grade=c_grade=0;
	cin.get(ch);
	if (ch == 'A')
		a_grade++;
	else if (ch=='B')
	  	b_grade++;
	else
		c_grade++;
	cout<<a_grade<<' '<<b_grade<<' '<<c_grade;
	return 0;
} 
注意 if-else 这样的结构中,else匹配的时他所在的语句块中的最近的一个else.

逻辑预算符:

not(非)、and(与)、or(或)

优先级就按照上述所写从左到右依次降低

   C++规定not and or是顺序点,先修改左边值,在对右边值进行判定
not(非):

符号!
格式: ! project

truefalse
not (!)flasetrue
and(与):

符号&&
格式: projectA && projectB

truefalse
truetruefalse
falseflasefalse
or(或):

符号||
格式: projectA || projectB

truefalse
truetruetrue
falsetruefalse
不难发现一下规律:

对于and,只有全真才是真
对于or,只有全假才是假

“断点”运算

对于顺序点||来说,只要前一个表达式为true,那么就不会再进行后一个表达式的计算
格式 projectA || projectB

projectA or projectB
projectA = trueprojectA = false
projectB = truetruetrue
projectB = falsetruefalse

例子:

int i=5,j=1;
++i>5 or ++j>2
因为 ++i=6>5为true,
所以不在计算后一个表达式的正误
返回值i=6,j=1

同理,对于顺序点&&来说,只要前一个表达式为fasle,那么就不会再进行后一个表达式的计算,这里就不再详细说明了。

有了循环结构和选择结构,就可以编写一个小程序

猜数字:

首先我们先不用随机数,我们自定义给一个数值

#include<iostream>
const int ans=25;
using namespace std;
int main(void){
	int guess;
	cout<<"Enter a int number,if you want to leave,press 0"<<endl; 
	cin>>guess;
	while (true){
		if (guess==0) 
			break;
		else if (guess<ans) cout<<"Too low"<<endl;
		else if (guess==ans) cout<<"You are right"<<endl;
		else if (guess>ans) cout<<"Too high"<<endl;
		cout<<"Enter another int number,if you want to leave,press 0"<<endl; 
		cin>>guess;
	}
	return 0;
}

但是如果我们事先知道了答案,这个游戏就变得毫无意义了,所以我们要采用让电脑随机产生一个数字让我们猜,这时候我们就要用到一个工具——随机数

随机数(random)

用法:rand() 随机获得[0,max_type)之间的数据
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a (结果值含a不含b)。
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a (结果值含a和b)。
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1 (结果值不含a含b)。

所以上述程序就变成如下所示:

#include<iostream>
#include<cstdlib>
using namespace std;
int main(void){
	int ans;
	ans=rand();
	//cout<<ans;
	int guess;
	cout<<"Enter an int number"<<endl; 
	cin>>guess;
	while (true){
		if (guess<ans) cout<<"Too low"<<endl;
		else if (guess==ans) cout<<"You are right"<<endl;
		else if (guess>ans) cout<<"Too high"<<endl;
		cout<<"Enter another int number"<<endl; 
		cin>>guess;
	}
	return 0;
}

但你会发现,每次产生的数据都是相同的,这是为什么呢?

     首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生
“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发
展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪
随机数。 伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的
伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定
的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不
遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这正是点到了事物的
特性,即随机性,但是每种树的叶子都有近似的形状,这正是事物的共性,即规
律性。从这个角度讲,你大概就会接受这样的事实了:计算机只能产生伪随机数
而不能产生绝对随机的随机数。

这时候就要用到随机种子了:
用srand定义随机种子;
注意:rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。

因为默认情况下随机数种子为1,
而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,
所以为使每次得到的随机数不一样,用
函数srand()初始化随机数种子。srand()的参数,
一般用用time函数值(即当前时间),
(也可以使用rand(number) number是随机种子的序号
该序号的随机种子中会存储产生的固定的随机数)
因为两次调用rand()函数的时间通常是不同的,这样就可以保证随机性了。

这里是以时间为种子数:

srand(time(NULL));

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(void){
	int ans;
	srand(time(NULL)); 
	ans=rand();
	cout<<ans;
	int guess;
	cout<<"Enter a int number,if you want to leave,press 0"<<endl; 
	cin>>guess;
	while (true){
		if (guess==0) 
			break;
		else if (guess<ans) cout<<"Too low"<<endl;
		else if (guess==ans) cout<<"You are right"<<endl;
		else if (guess>ans) cout<<"Too high"<<endl;
		cout<<"Enter another int number,if you want to leave,press 0"<<endl; 
		cin>>guess;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值