p32 p33 p34 p35 p36

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值