首页 > 其他分享 >九、循环(二)

九、循环(二)

时间:2023-11-16 19:23:14浏览次数:41  
标签:std do cout int while 循环

九、循环(二)

1、while循环

1)while循环语法

//while循环语法
while(条件表达式)     //条件表达式是一个bool类型的值
{
    循环语句;
}

//示例
int i = 9;
while(i<0)
{
    i--;
    std::cout<<i;
}

2)while循环嵌套

//while循环嵌套语法
while()
{
    while()
    {
        
    }
}

3)while(整数)

while(i)    //i如果是整数值,编译器会将其默认转化为bool类型
{
    
}

4)跳出循环

注:goto、break、continue可以跳出循环

5)案例:

需求:设计一个程序,要求用户输入一个数,然后判断这个数是不是质数,并且显示结果,当计算完成后,输出"按Y计算下一个数,按其他按键退出本程序",并且设计对应的功能。

//要求用户输入一个数,然后判断这个数是不是质数(while循环实现)
#include <iostream>
#include <cmath>

int main()
{
    char  inkey{'y'};
    while ((inkey=='Y')||(inkey=='y'))
    {
        int intIn;
        std::cout << "请输入一个数:";
        std::cin >> intIn;
        bool bcase{};
        bcase = (intIn % 2 != 0);  //偶数直接
        for (int i = 3; (bcase)&&(i <= sqrt(intIn)); i += 2)
        {
            if (intIn % i == 0)
            {
                bcase = false;
                break;
            }
        }
        if (!bcase)std::cout << "这个数不是质数";
        else
            std::cout << "这个数是质数!!";

        std::cout << "按Y计算下一个数,按其他按键退出本程序:";
        std::cin >> inkey;
    }
}

2、do...while循环

1)do...while语法

//语法
do                      //先执行一次循环语句,再判断条件表达式
{
    循环语句;
}while(条件表达式);

//示例
int i=9;
do 
{
    i--;
    std::cout<<i;
}while(i>0);
 
//循环体最少执行一次

2)do...while的嵌套

do
{
    do
    {
        
    }while();
}while();

3)do...while(整数)

do   
{
    
}while(i); //i如果是整数值,编译器会将其默认转化为bool类型

4)跳出循环

注:goto、break、continue可以跳出循环

5)案例:

需求:设计一个程序,要求用户输入一个数,然后判断这个数是不是质数,并且显示结果,当计算完成后,输出"按Y计算下一个数,按其他按键退出本程序",并且设计对应的功能。

#include <iostream>
#include <cmath>

int main()
{
    char  inkey{ 'y' };
   do
    {
        int intIn;
        std::cout << "请输入一个数:";
        std::cin >> intIn;
        bool bcase{};
        bcase = (intIn % 2 != 0);  //偶数直接
        for (int i = 3; (bcase) && (i <= sqrt(intIn)); i += 2)
        {
            if (intIn % i == 0)
            {
                bcase = false;
                break;
            }
        }
        if (!bcase)std::cout << "这个数不是质数";
        else
            std::cout << "这个数是质数!!";

        std::cout << "按Y计算下一个数,按其他按键退出本程序:";
        std::cin >> inkey;
   } while ((inkey == 'Y') || (inkey == 'y'));
}

3、while循环之网银证书密码攻击(安全实验)

需求:设计一个系统来模拟网银证书密码被攻击的场景,用户输入一个6位的数字密码,然后我们破解它的密码并且显示出来,用while和do while分别实现一次

//while循环实现网银证书密码攻击
#include <iostream>

int main()
{
	int password{ 0 }, repassword{-1}, hackpass{ 0 };  //设置初始值是,password和repassword要不一样,否则直接破解程序
	while (password != repassword)
	{
		system("cls");
		std::cout << "请输入你的密码:";
		std::cin >> password;
		std::cout << "请再次输入你的密码:";
		std::cin >> repassword;
	}
	std::cout << "破解程序开始\n";
	while (password != hackpass) hackpass++;
	std::cout << "密码破解成功,密码为:" << hackpass;

}

#include <iostream>

int main()
{
	//hackpass初始值要设置为1,否则进行破解时,初始值若为0,通过hackpass++,初始时password和repassword就不相等
	int password{ 0 }, repassword{  }, hackpass{ -1 };  
	do
	{
		system("cls");
		std::cout << "请输入你的密码:";
		std::cin >> password;
		std::cout << "请再次输入你的密码:";
		std::cin >> repassword;
	} while (password != repassword);

	std::cout << "破解程序开始\n";
	do hackpass++; while (password != hackpass);  //如果
	std::cout << "密码破解成功,密码为:" << hackpass;

}

4、练习:WPS功能路由器入侵(安全实验)

需求:设计一个程序,模拟WPS路由器被破解的场景,要求分别用goto,for,while,do...while实现

#include <iostream>
int main()
{
	int password{ 75634125 };
	int hackpass{0};
//goto
lcrack:
	if (password != hackpass)
	{
		hackpass++;
		goto lcrack;
	}

	std::cout << "你的路由器密码为:" << hackpass << std::endl;
//for循环方式一
	for (hackpass = 0; hackpass < 100000000; hackpass++)
		if (hackpass == password) break;
	std::cout << "你的路由器密码为:" << hackpass << std::endl;

//for循环方式二
	for (hackpass = 0; hackpass !=password; hackpass++)
		if (hackpass == password) break;
	std::cout << "你的路由器密码为:" << hackpass << std::endl;

//while循环
	hackpass = 0;
	while (password != hackpass) hackpass++;
	std::cout << "你的路由器密码为:" << hackpass << std::endl;

//do while循环
	hackpass = -1;
	do hackpass++; while (password != hackpass);
	std::cout << "你的路由器密码为:" << hackpass << std::endl;
}

5、循环练习

1)水仙花树:如果一个三位数立方和等于该数本身,那么这个数就是水仙花数,比如153等于1立方+5立方+3立方,计算出100-1000之前的水仙花数

#include <iostream>

int main()
{
	int g, s, b;
	for (int i = 100; i < 1000; i++)
	{
		g = i % 10;
		s = i / 10 % 10;
		b = i / 100;
		if (g * g * g + s * s * s + b * b * b==i)
		{
			std::cout << "水仙花数有:" << i << std::endl;
		}
	}
}

2)计算完数

要求:如果一个自然数,恰好除去它本身以外的一切因数和相等,这个数就是完数,比如6=1+2+3,求出1000以内的完数。

//计算完数
#include <iostream>

int main()
{
	for (int i = 4;i < 1000;i++)
	{
		int sum{};
		for (int a = 1; a < i; a++)
		{
			if (i % a == 0) sum += a;
		}
		if (sum == i)std::cout << "找到一个完数" << i << std::endl;
	}
}

7、麟江湖必杀技的设计

需求:游戏麟江湖,角色技能有一项必杀技,当技能发动后,会对目标造成100点伤害,同时对目标进行下一次连击,每次连击都会比上次攻击额外多造成100点伤害,并且每次比上次多消耗50点MP,知道角色的MP不足以释放技能,连击结束,角色的MP将恢复到使用技能前的原值。写出本技能的实现过程

#include <iostream>

int main()
{
	int Mp{ 1383 }, lsMp{};  //蓝量、临时蓝量
	int damage{}, needMp{}; //造成伤害;蓝的消耗
	do 
	{
		damage += 100;

		Mp -= needMp;
		needMp += 50;
		std::cout << "造成伤害" << damage << ",剩余MP" << Mp<<std::endl;
	
	} while (Mp>=needMp);
	Mp = lsMp;
}

标签:std,do,cout,int,while,循环
From: https://www.cnblogs.com/piaolaipiaoqu/p/17836235.html

相关文章

  • sql server 循环 有那几种 sql实现循环
    SQL循环语句  declare@iint set@i=1 while@i<30 begin insertintotest(userid)values(@i) set@i=@i+1 end1.2.3.4.5.6.7. --------------- while条件 begin 执行操作 set@i=@i+1 end WHILE 设置重复执行SQL语句或语句块的条件。只要指定的条件......
  • python调用ffmpeg循环播放一个文件夹内的视频,如果播放中断了,下次继续播放可以从上次播
    importosimportsubprocessdefplay_videos_in_folder(folder_path):#获取所有视频文件files=[os.path.join(folder_path,f)forfinos.listdir(folder_path)iff.endswith(('.mp4','.mkv'))]idx=0#视频文件索引whileTrue:......
  • 【vue2】swiper插件自动循环失效(loop失效)
    可能是因为数据是动态渲染的,在请求到数据之前,就已经完成了swiper的初始化,因此解决方案有:1.swiper组件添加v-if:(如以下代码中的v-if="banner.length")<!--轮播图--><div:class="$style.newsBanner"><div:class="$style.swiperBox"><swip......
  • 【洛谷 P2141】[NOIP2014 普及组] 珠心算测验 题解(集合+多重循环)
    [NOIP2014普及组]珠心算测验题目描述珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合......
  • shell 循环while语句
    while条件 #while关键字,条件和if的条件一样,#while循环当条件为真的时候循环同时会一直循环,也就所说的死循环,为假时不循环do 循环体done#注意:while循环处理文件里面的行比较擅长,不管有没有空格都是一行。案例:#vimc.sh#!/usr/bin/bashi=1while[$i-lt50]do ......
  • 分组循环
    一、适用场景对于一个数组,要做多次判断条件相同的处理二、核心思想一般分为外层循环和内层循环,两个循环用于处理不同的事情1.外层循环用于做准备工作和内层循环后的统计工作(例如求最大值)2.内层循环用于遍历数组时间复杂度为O(n),因为中间的变量"i"是一直在加,没有减小过......
  • 在forEach中使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错
    执行以下程序,输出结果为()vararr=[2,1,3,5,9];varcount=0;arr.forEach((val1,val2)=>{count++;if(count%3==0){return;}console.log(val1);})A21B01C0134D2159正确答案:Darr.forEach()是......
  • 循环队列
    一、普通队列(顺序存储结构)说明:rear指向队尾元素,front指向对头元素的下一个元素。i.判断元素个数:number=rear-front;ii.判断队空:rear==frontiii.插入元素:rear++;iiii.删除元素:front++;iiiii.队满操作:rear==length-1;2.2遇到假溢出问题如严蔚敏老师数据结构书中,写道,每次插......
  • python if判断和循环判断
    if判断在写代码的时候,往往需要根据某些条件进行判断,并根据判断结果执行不同的分支代码。#单个条件a=1ifa==1:print(11111)ifa==2:print(2222)else:print(333)#多个条件,加多少个都可以ifa==1:print(11111)elifa==2:print(22222)else:pri......
  • Java流程控制06:While循环详解
     一、while循环publicclassWhileDemo01{publicstaticvoidmain(String[]args){//输出1~100,并且求和inti=1;intsum=0;while(i!=101){System.out.println(i);sum=sum+i;i++......