三目运算符
// 表达式1? 表达式2:表达式3
// 如果表达式1为真 执行表达式 2 并且返回表达式2 的结果
// 如果表达式1为假 执行表达式 3 并且返回表达式3 的结果
#include <iostream>
using namespace std;
// 表达式1? 表达式2:表达式3
// 如果表达式1为真 执行表达式 2 并且返回表达式2 的结果
// 如果表达式1为假 执行表达式 3 并且返回表达式3 的结果
int main(){
int a = 100;
int b = 200;
int c = 300;
// a和b谁大
int max;
// if (a > b)
// max = a;
// else
// max = b;
// cout << max <<endl;
cout <<( a > b ? a : b)<<endl;
// 三目运算返回的是变量可以继续赋值运算
( a > b ? a : b) = 1000;
cout <<"a = "<< a<<endl; // 100
cout <<"b = "<< b<<endl; // 1000
// 三个数的最大值
cout <<"san = "<<((a>b?a:b) > c ? (a>b?a:b) : c)<<endl; // 1000
}
switch语句
语法
switch(表达式){
case 结果1: 执行语句;
break;
case 结果2: 执行语句;
break;
case 结果3: 执行语句;
break;
...
default: 执行语句;
break;
}
举个例子
#include <iostream>
using namespace std;
int main (){
// 10 / 9 经典之作
// 8 / 7 非常不错
// 6 / 5 一般般
// 5 以下 烂片
// char c;
int score;
cout<< "请输入电影评分等级" <<endl;
cin>>score;
switch (score) {
case 10:
case 9:
cout<< "经典之作" <<endl;
break;
case 8:
case 7:
cout<< "非常不错" <<endl;
break;
case 6:
case 5:
cout<< "一般般" <<endl;
break;
default:
cout<< "烂片" <<endl;
break;
}
}
注意1:switch语句中表达式类型只能是整型或者字符型
注意2:case里如果没有break,那么程序会一直向下执行 // 每一个case有执行语句的都要写 break 要防止case穿透
总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间
循环结构
while循环
语法
while(循环条件){
循环语句
}
// 只要循环条件为真就会执行循环语句
举个例子
死循环栗子
#include <iostream>
using namespace std;
int main(){
int i = 1;
while (true){
cout<< "haha" << i << endl;
i++;
}
}
#include <iostream>
using namespace std;
int main(){
int i = 1;
int sum = 0; // 存储当前 的累加和
while (i<=100){
// sum = sum + i;
sum += i;
i++;
}
cout<< "1~100 sum= "<<sum<< endl;
}
do while循环
语法:
do{循环语句} while(循环条件)
与while的区别 :do while循环会先执行一次循环, 再去判断循环条件
#include <iostream>
using namespace std;
int main(){
int num = 0;
do{
cout<< num << endl;
num++;
} while (num<20);
// int num = 0;
// do{
// cout<< num << endl;
// num++;
// } while (num<0);
// while (num<0){
// cout<< num << endl;
// num++;
// }
}
#include <iostream>
using namespace std;
int main(){
//案例描述:系统随机⽣成⼀个1到100之间的数字,玩家进⾏猜测,
// 如果猜错,提⽰玩家数字过⼤或过 ⼩,如果猜对恭喜玩家胜利,并且退出游戏。
int genarate_number;
int guess_number;
cout<< "input true number"<<endl;
cin >> genarate_number; // 40
while (true){
cout<< "input your guess number"<<endl;
cin >>guess_number;
if (guess_number>genarate_number){
cout<< "too larger"<<endl;
}else if(guess_number<genarate_number){
cout<< "too small"<<endl;
}else{
cout<< "very good"<<endl;
break;
}
}
}
1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。
2、如果你要产生0~99这100个整数中的一个随机整数,可以表达为:int num = rand() % 100; 这样,num的值就是一个0~99中的一个随机数了。
3、如果要产生1~100,则是这样:int num = rand() % 100 + 1;
4、总结来说,可以表示为:int num = rand() % n +a;其中的a是起始值,n-1+a是终止值,n是整数的范围。
5、一般性:rand() % (b-a+1)+ a ; 就表示 a~b 之间的一个随机整数。
6、若要产生01之间的小数,则可以先取得010的整数,然后均除以10即可得到“随机到十分位”的10个随机小数。若要得到“随机到百分位”的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依 此类推。
电脑生成随机数
#include <iostream>
using namespace std;
#include <ctime>
int main (){
srand((unsigned int) time(NULL));
int computer = rand()%100 + 1;
int player;
while (true){
cout << "请输入你要猜的数字" << endl;
cin >> player;
if (player > computer)
cout << "猜大了" << endl;
else if (player < computer)
cout << "猜小了" << endl;
else{
cout << "猜对了" << endl;
break;
}
}
}
上面可以改写成限制猜的次数
#include <iostream>
#include <ctime>
using namespace std;
int main(){
// cout <<(unsigned int )time(NULL)<<endl;
srand((unsigned int )time(NULL));
// srand(666); // 固定随机种子
int generate_number;
generate_number = rand()%100 +1;
cout <<generate_number<<endl;
int guess_number;
int count = 0;
while (count <= 5){
count++;
cout << "please input your guess number"<<endl;
cin>>guess_number;
if (guess_number > generate_number){
cout << "too large --"<< (5 - count) << " left"<<endl;
}
else if (guess_number < generate_number){
cout << "too small -- "<< (5 - count) << " left"<<endl;
}else{
cout << "correct !!! "<<endl;
break;
}
}
}
for 循环
语法
// for 和 while 可以互相转化
for (初始表达式; 条件表达式; 步进表达式) {
循环体
}
#include <iostream>
using namespace std;
int main(){
// 累加
int sum = 0;
for(int i= 1; i<=100; i++){
sum += i;
}
cout<< "sum = "<<sum<<endl;
}
break和continue
break 跳出本层循环;continue跳出本次循环执行下一次循环;
#include <iostream>
using namespace std;
int main(){
// 奇数累加
int sum = 0;
for(int i= 1; i<=100; i++){
if (i%2==0){
//odd 偶数
continue;
}
sum += i;
}
cout<< "sum = "<<sum<<endl;
}
break
#include <iostream>
using namespace std;
int main(){
// 累加和达到1000终止循环
int sum = 0;
for(int i= 1; i<=100; i++){
sum += i;
if (sum >= 1000){
break;
}
}
cout<< "sum = "<<sum<<endl;
}
案例描述:⽔仙花数是指⼀个 3 位数,它的每个位上的数字的 3次幂之和等于它本⾝ 例如:1^3 + 5^3+ 3^3 = 153, 编程实现找到所有的水仙花数
]
2 . 01234
3. 0369
12
4. 6
8
5. k = 8