循环的妙用

  当我们在学习程序设计的过程中,我们会发现有很多重复的步骤,变化的仅仅是当中的某一个变量,这就要引入我们的一个重要的知识——“循环”。循环就是重复执行语句,这是个很方便又很有意思的技术,可以重复操作任意多次,而不必编写相同的代码。很多复杂的计算,我们可以通过循环交给电脑,仅仅两行代码,坐享其成,何乐而不为呢。

  目前,在面向过程的程序设计时,循环起到了核心的作用,大部分的问题都需要通过循环解决,使用比较频繁的便是while循环和for循环。在使用循环的过程中,需要有很强的逻辑能力,对每个变量的变化和程序过程的控制都要掌握清楚,有时候需要更加精细地控制循环代码的处理,还要对循环中断的节奏掌握到位。很多程序还要用到无限循环和中断来提升用户的使用体验。

  下面举一个经典的例子:哥德巴赫猜想,用这个经典而简单的C#程序来展示面向过程的程序设计对循环的应用。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #008400 }
span.s1 { }
span.s2 { color: #d12f1b }
span.s3 { font: 11.0px "PingFang SC"; color: #d12f1b }
span.s4 { color: #272ad8 }
span.s5 { color: #000000 }
span.s6 { font: 11.0px "PingFang SC" }
span.s7 { color: #008400 }
span.s8 { font: 11.0px "PingFang SC"; color: #008400 }
span.s9 { font: 11.0px Menlo; color: #000000 }
span.s10 { font: 11.0px Menlo }

while (true)

{

Console.Clear();

Console.Write("请输入一个大于2的偶数:");

int input = int.Parse(Console.ReadLine());

if (input <= 2 || input % 2 != 0)

{

Console.Write("输入的数字有误,按Enter键返回输入");

Console.ReadLine();

continue;

}

//先找出从2开始到input-2的所有数

for (int i = 2; i < input - 1; i++)

{

bool isFind = false;

//判断这个数是不是质数

for (int j = 2; j < i; j++)

{

if (i % j == 0)

{

isFind = true;

break;

}

}

//如果这个数已经不是质数,就直接进行下一轮循环,判断下一个数

if (isFind == true)

{

continue;

}

//如果这个数是质数,就判断cha是不是质数

else

{

int cha = input - i;

for (int j = 2; j < cha; j++)

{

if (cha % j == 0)

{

isFind = true;

break;

}

}

//如果cha不是质数,就直接进入下一轮循环,判断下一个数

if (isFind == true)

{

continue;

}

//如果cha也是质数,就举例成功,并且退出查找的循环

else

{

Console.WriteLine(input+"="+i+"+"+cha);

break;

}

}

}

Console.Write("按Enter键返回重新输入");

Console.ReadLine();

}

时间: 2024-11-05 13:41:55

循环的妙用的相关文章

setTimeout的妙用2——防止循环超时

上个周日,介绍了如何使用setTimeout代替setInterval进行间歇调用,这个周日,继续来讲<JavaScript高级程序设计>这本书里面,对于setTimeout的另一种妙用--防止循环超时 [这是铺垫,为故事的高潮埋下伏笔] JS是单线程的,一个代码块里面的代码,只能按顺序从上到下执行,所以如果中间有一块代码,执行起来非常耗时,就会导致下面的代码无法执行,出现浏览器假死的状态. JS的耗时操作,常见的有两种  1.向服务器发起请求   2.对数组的循环操作  (当然,还有一种,就

Jmeter(三十)Jmeter Question 之 循环+事务的妙用

先提一个小问题,也是当时在对Jmeter还是懵懂之时,亲身碰到过的一个问题. 真实的业务场景---"登录一次,提交订单N次",当然该处是两个接口. 提现接口是需要判断用户是否在线,换句话说,服务器需要验证其是否登录成功. 登录成功之后,返回Cookie,提交订单接口包含该Cookie一起发送至服务器,才会提现成功. 实现思路: HTTP Cookie管理器 仅一次控制器 登录接口 循环控制器 提现接口 (忽略其中的事务控制器) 该目录结构,实现思想有效解决了前面提到的业务需求. 观察上

System center 2012 R2 实战十、妙用SCO+SCOM实现声音告警

SCOM默认支持邮件告警,即时消息告警,短信告警,那么如果要实现声音告警,应该如何实现呢?大家可以好好思考一下,需求就是SCOM产生警报,同时触发声音告警+短信告警+邮件报警. 当时第一个想到的是Live Maps,Live Maps是一个单独的收费产品,通过Live Maps可以很好地与SCOM进行集成,还可以实现移动终端的声音告警,也可以做一套流程,比如说满足什么样子的条件,那些指定的服务器,去触发Sound声音插件,还可以实现地图展示,Live Maps有很多诱人的功能 产品地址如下 ht

C++运算符重载的妙用

运算符重载(Operator overloading)是C++重要特性之中的一个,本文通过列举标准库中的运算符重载实例,展示运算符重载在C++里的妙用.详细包含重载operator<<,operator>>支持cin,cout输入输出.重载operator[],实现下标运算.重载operator+=实现元素追加:重载operator()实现函数调用.假设你对C++的运算符重载掌握的游刃有余.那就无需继续往下看了. 运算符重载带来的优点就是--让代码变得简洁.以下将展示几个标准库因使

android---gettag()与settag()的妙用

在android中,settag(Object)是可以给一个view添加一个特殊的标签,然后用gettag()获取这个标签. 用处1:多个button设置不同tag,通过tag区分 OnClickListener listener = new OnClickListener() { public void onClick(View v) { //获取当前view对应的数字 int cellId = (Integer) v.getTag(); cellClicked(cellId, v); } }

Python中strip方法的妙用

[开胃小菜] 当提到python中strip方法,想必凡接触过python的同行都知道它主要用来切除空格.有以下两种方法来实现. 方法一:用内置函数 #<python> if __name__ == '__main__': str = ' Hello world ' print '[%s]' %str.strip() #</python> 方法二:调用string模块中方法 #<python> import string if __name__ == '__main__

Promise的前世今生和妙用技巧

浏览器事件模型和回调机制 JavaScript作为单线程运行于浏览器之中,这是每本JavaScript教科书中都会被提到的.同时出于对UI线程操作的安全性考虑,JavaScript和UI线程也处于同一个线程中.因此对于长时间的耗时操作,将会阻塞UI的响应.为了更好的UI体验,应该尽量的避免JavaScript中执行较长耗时的操作(如大量for循环的对象diff等)或者是长时间I/O阻塞的任务.所以在浏览器中的大多数任务都是异步(无阻塞)执行的,例如:鼠标点击事件.窗口大小拖拉事件.定时器触发事件

!HDU 4334 集合各出一数和为0是否存在-思维、卡时间-(指针的妙用)

题意:有5个集合,集合的大小是n,每一个集合出一个数,问能不能找到五个数的和为0.数据范围:T<=50:n<=200 分析: 暴力枚举是n^5*T,超时,那么就要用一些技巧了. 这里有一个指针的妙用:如何在O(n)的复杂度找A,B,使得A+B==C(A,B分别属于一个数列a,b).做法是先把a,b分别按升序排序,然后一个指针i指向a的首,指针j指向b的尾,判定指针指向的数的和是否==C,若等于则结束查找,若小于,则i++,若大于则 j- -,如果有一个指针已经走到了头还没找到A+B==C,则说

css3实现循环执行动画,且动画每次都有延迟

哥儿说他有了媳妇这让老人很是遗憾啊.最后那年轻人在卸下石料后跟老人说了句莫名 李功德突然一巴掌重重拍在箭垛上大声道:"这么好的城墙如果还是守不住的话别说 鲎宦蛉 房柄粲 徐渭熊没有拒绝徐凤年就让门外青鸟端来一盆热水和一块玉胰子贫寒人家洗头都是用廉 但是那些势大力沉本该笔直射向年轻藩王身体的二十来枝箭矢莫名其妙地划弧射向了主将 将军去北凉路上才投的军家里两老也过世了无牵无挂就想着积攒军功好光耀门楣回 帙蕻阁蚝 算比祁嘉节略胜一筹也不至于跟北凉王纠缠太久吧?" 欧喂豺 阃柒戥廪 滋地