p32: while循环案例(猜数字)
案例描述:系统随机生成一个1~100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。
#include <iostream> using namespace std; #include<ctime> //time系统时间头文件包含 int main() { int num = 0; int play = 0; // 输入:产生随机数,并且让用户输入自己猜的数字 srand((unsigned int)time(NULL)); //这个是随机生成种子 num = rand() % 100 + 1; while (1) //1本身是个真值,让while无限循环 在循环中用break结束(只有一个条件可以结束) { cout << "请输入您猜的数字" << endl; cin >> play; //处理: 让随机生成的数字与用户输入的做对比 if (play > num) { cout << "您输入的数字偏大" << endl; } else if (play < num) { cout << "您输入的数字偏小" << endl; } else { cout << "恭喜您输入的正确" << endl; break; } } system("pause"); return 0; }
随机生成数语法: rand ( )%数字上限 :下限从0开始 改变下线 就再上限后+-n
随机生成种子: srand((unsigned int)time(NULL)); 必须包含头文件 #include<ctime>
**1本身是个真值,让while无限循环 在循环中用break结束(只有一个条件可以结束)
p33 : do while循环
作用:满足循环条件,执行操作
语法:do { 要执行的循环语句} while(循环条件); 注意这个分号
注意:与while循环的区别
do while是先执行一次循环再判断
简单的例子:
// 输出1~10的整数 #include<iostream> using namespace std; int main() { int i =0 do { i++; cout << i << endl; } while(i<=10); system("pause"); return 0; } //用while /* int main() { int a =0 ; while(a>=10) { a++; cout << a<< endl; //两者并没有什么区别 } system("pause"); return 0; } */
p34:
水仙花数:
案例描述:水仙花数是指一个三位数,它的每个位上的数字的三次幂之和等于它本身。
类如:1^3 +5^3 + 3^5 = 153 请用do while语句,求出三位数中所有的水仙花数。
#include<iostream> using namespace std; int main() { // 首先三位数的范围: 100~999 // 让系统自动生成 100~999之间的数 int num =100; int a = 0; int b = 0; int c = 0; int sum = 0; do { //取余部分: a = num % 10;//获取个位数 b = num /10 %10; //获取十位数 c = num /100; //获取百位数 sum = a*a*a +b*b*b + c*c*c; if(sum == num) { cout <<"其中包含的水仙花数为:"<< num <<endl; } num++; } while (num <1000); system("pause"); return 0; } 结果: 其中包含的水仙花数为:153 其中包含的水仙花数为:370 其中包含的水仙花数为:371 其中包含的水仙花数为:407 请按任意键继续. . .
最重要的问题:
对于怎么取余思想不够了解透彻:
还有一种方法:
// 高级一点的写法: #include <iostream> using namespace std; int main(int argc, const char * argv[]) { int sum; for(int i = 1; i < 10; i++) for(int j = 0; j < 10; j++) for(int k = 0; k < 10; k++) { sum = i * 100 + j * 10 + k; if(sum == (i * i * i + j * j * j + k * k * k)) cout << sum << " "; } cout << endl; return 0; }
p35:for 循环语句:满足循环条件,执行循环语句
语法:
for (起始表达式;条件表达式;末尾循环体) 注意是两个分号
{循环语句;}
起始表达式只执行一次
for ( ① int i =0 ;② i<10; ④ i++) { ③ cout << i << endl; } 执行顺序 ①-②-③-④ 定义的int 可以写在for 循环上面 i<0 可以写在执行语句里用if嵌套for i++也可以写在执行语句里↓👇↓ int i =0; for ( ; ;) //注意是两个分号 { if(i >=10) { break; } cout << i << endl; i++; }
以上是 for循环的两种写法
p36 :敲桌子
案例描述:从1开始数到数字100,如果数字各位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余直接打印输出。
//自己尝试写的代码:
#include<iostream> //时刻注意 取值范围是 1-100之间的数字
using namespace std;
int main()
{
int a = 0;
int b = 0;
int c = 0;
for (int i =1; i <= 100; i++)
{
a = i % 10; //再次强调取余的重要性: 通过除法延申出的方法
b = i % 10 / 10;
c = i % 7; //七的倍数:所以对i 取余 7 ==余数为0;
if (a == 7 || b == 7 ||c ==0)
{
cout << "敲桌子" << endl;
}
else { cout << i << endl; } //输出不是敲桌子的数字
}
system("pause");
return 0;
}
// 老师教的:
#include<iostream>
using namespace std;
for(int i =1; i<101;i++)
{
if(i %7 ==0 || i%10 ==7 || i/10 ==7) //不用定义那么多东西,直接在判断条件里写
{
cout <<"敲桌子" <<endl;
}
else
{
cout << i <<endl;
}
}
system("pause");
return 0;