C#语句2——循环语句(for穷举、迭代和while循环)
一、for循环拥有两类:
(一)、穷举:
把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。
1.单位给发了一张150元购物卡,拿着到超市买三类洗化用品。洗发水15元,香皂2元,牙刷5元。求刚好花完150元,有多少种买法,没种买法都是各买几样?
int ci = 0;
int biao = 0;//标记变量
for (int x = 0; x <= 10; x++)
{
for (int y = 0; y <= 30; y++)
{
for (int z = 0; z <= 75; z++)
{
ci++;
if (15 * x + y * 5 + z * 2 == 150)
{
biao++;
Console.WriteLine("第{0}种买法:洗发水{1}瓶,牙刷{2}支,香皂{3}块。", biao, x, y, z);
}
}
}
}
Console.WriteLine("总共有{0}种买法。", biao);
Console.WriteLine(ci);
Console.ReadLine();
2.百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?(或者大马驼2石粮食,中等马驼1石粮食,两头小马驼1石粮食,要用100匹马,驼100石粮食,该如何分配?)
int ci = 0;
for (int x = 0; x <= 50; x++)
{
for (int y = 0; y <= 100; y++)
{
for (int z = 0; z <= 200; z++)
{
if (2 * x + y + z * 0.5 == 100 && x + y + z == 100)
{
Console.WriteLine("公鸡{0}只,母鸡{1}只,小鸡{2}只。", x, y, z);
ci++;
}
}
}
}
Console.WriteLine(ci);
Console.ReadLine();
3. 有1分钱,2分钱,5分钱的硬币,要组合出来2角钱,有几种组合方式,分别各多少个?
int ci = 0;
for (int x = 0; x <= 100; x++)
{
for (int y = 0; y <= 50; y++)
{
for (int z = 0; z <= 20; z++)
{
if (x + 2 * y + 5 * z == 100)
{
Console.WriteLine("1分钱{0}枚,2分钱{1}枚,5分钱{2}枚。", x, y, z);
ci++;
}
}
}
}
Console.WriteLine(ci);
Console.ReadLine();
(二)、迭代:
从初始情况按照规律不断求解中间情况,最终推导出结果。
1.五个小朋友排成一队,问第一个多大了,第一个说比第二个大两岁,问第二个多大了,第二个说比第三个大两岁。。。以此类推,问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?
int sum = 3;
for (int i = 1; i < 5; i++)
{
sum += 2;
}
Console.WriteLine(sum);
Console.ReadLine();
2.纸张可以无限次对折,纸张厚度为0.07毫米。问多少次对折至少可以超过8848?
double height = 0.07;
int ci = 0;
while (height <= 8848000)
{
ci++;
height *= 2;
}
Console.WriteLine(ci);
Console.ReadLine();
二、while循环
while 循环,其实是for循环的变形写法
for(int i = 1; i<=5;i++)
{
循环体;
}
上面的for循环可以写成
int i= 1;
for(;i<=5;)
{
循环体;
i++;
}
写成while就是以下样式
int i= 1;
while(表达式(i<=5))//在括号内直接限制循环条件
{//需要在中括号内给出改变方式,否则将会进入死循环
循环体;
状态改变(i++);//在中括号内给予值得改变方式
}
跳转语句:
break:跳出整个循环
continue:跳出本次循环,继续下次循环。
注:●do
{
循环体;
状态改变(i++);
}while(表达式(i<=5))
注意:do while是不管满不满足表达式,我都会先执行一遍。
●while死循环
while (true)//死循环一
{
循环体;
状态改变;
}
while (1 == 1)//死循环二
{
循环体;
状态改变;
}
While循环例题:
1、100节楼梯,前50节每节分数等于阶梯数,当到第30节时直接跳到第50节得100分, 51节开始每节10分
int n = 0;
int m = 0;
while (n < 100)
{
n++;
if (n <= 30)
{
m = m + n;
Console.WriteLine("到{0}层时的分数是{1}。", n, m);
}
if (n > 30 && n <= 50)
{
if (n == 50)
{
m += 100;
Console.WriteLine("到50层的分数" + m);
}
continue;
}
if (n > 50)
{
m += 10;
Console.WriteLine("到{0}层时的分数是{1}。", n, m);
}
}
Console.ReadLine();
2、do while
增补循环语句一——for循环
1、有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问几年后有多少对兔子,幼兔、小兔、成兔对数分别是多少。成兔每月生下一对幼兔。
成兔对数 |
0 |
0 |
1 |
1 |
2 |
3 |
5 |
小兔对数 |
0 |
1 |
0 |
1 |
1 |
2 |
3 |
幼兔对数 |
1 |
0 |
1 |
1 |
2 |
3 |
5 |
月份 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
总对数 |
1 |
1 |
2 |
3 |
5 |
8 |
13 |
根据上表可以得到结论:
本月的成兔=上月的小兔+上月的成兔。
本月的小兔=上月的小兔。
本月的幼兔=本月的成兔。
Console.Write("请输入月数:");
int m = int.Parse(Console.ReadLine ());
int a = 0, b = 0, c = 1, d = 1;
int i = 1;
for (; i <= m; i++)
{
if (i == 1)
{
a = 0;
b = 0;
c = 1;
}
else
{
a = b + a;
b = c;
c = a;
}
d = a + b + c;
}
Console.WriteLine("{0}个月后成兔对数是{1}", i, a);
Console.WriteLine("{0}个月后小兔对数是{1}", i, b);
Console.WriteLine("{0}个月后幼兔对数是{1}", i, c);
Console.WriteLine("{0}个月后兔总对数是{1}", i, d);
Console.ReadLine();
C#语句2——循环语句(for穷举、迭代和while循环)的更多相关文章
- 循环语句while与for的穷举迭代
循环语句while while当...的时候 int n=1; while(n<6)//在括号内直接限制逻辑关系 {//需要在大括号内给出改变方式,否则将进入死循环 console.WriteL ...
- C# 循环语句 for循环(嵌套 while 穷举 迭代)
for循环的嵌套类似于if else 事例: 打印矩阵,外循环对应行,内循环对应列 for (int k = 1; k <= 5; k++) { for (int i = 1; i <= ...
- 6、C#基础整理(for 语句经典习题--for循环嵌套、穷举)
1.for循环嵌套----最基础题目:求阶乘的和 ; int n = int.Parse(Console.ReadLine()); ; i < n; i++) { ;//定义变量sum1,每次循 ...
- 穷举法、for循环、函数、作用域、斐波那契数
1.穷举法 枚举所有可能性,直到得到正确的答案或者尝试完所有值. 穷举法经常是解决问题的最实用的方法,它实现起来热别容易,并且易于理解. 2.for循环 for语句一般形式如下: for variab ...
- for循环的嵌套,for循环的穷举迭代
for循环的嵌套 输入一个正整数,求阶乘的和 嵌套 Console.Write("请输入一个正整数:"); int ...
- for循环嵌套的穷举,迭代,以及while的使用和for的转换
for循环的穷举.解决多种方法做种组合问题,代替人脑的大量计算 穷举例子 迭代,寻找一定的规律.然后利用循环找出结果 迭代举例 以五个小朋友3岁,之前的每一个小朋友都比序号在后的小朋友大两岁.温,第一 ...
- while、dowhile、switchcase 循环嵌套、穷举、迭代
for(var i=0;i<5;i++)//假如规定到5 { document.write("123456<br/>") } 如果变成这样 var i=0: fo ...
- 穷举 迭代 while
for循环拥有两类: 穷举: 把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. 例:1.单位给发了一张150元购物卡,拿着到超市买三类洗化用品.洗发水15元,香皂2元,牙刷5元.求刚好花 ...
- java,for循环中的穷举、迭代、冒泡例题
1.100以内与7相关的数 //100以内与7相关的数: public static void main1(String[] args) { for(int i=1;i<=100;i++){ i ...
- for循环语句以及迭代法和穷举法
循环语句: 四要素:初始条件,循环条件,状态改变,循环体 for(初始条件;循环条件;状态改变){ //循环体} 案例1:打印等腰直角三角形和菱形 左上三角 static void Main(stri ...
随机推荐
- Java总结篇系列:java.lang.Object
从本篇开始,将对Java中各知识点进行一次具体总结,以便对以往的Java知识进行一次回顾,同时在总结的过程中加深对Java的理解. Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(十一)PacketBuilder
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 【Java每日一题】20161206
package Dec2016; public class Ques1206 { public static void main(String[] args){ doSex(null); } publ ...
- jdk1.6与Myeclipse的冲突造成的
出现这样的错误时:ERROR:JDWP Unable to get JNI 1.2 environment ,jvm-> GetEvn() return =- ...
- JVM简介
关于java的JVM这块儿知识,在项目做大之后,一些性能的优化,要涉及到数据库,一些缓存要放在内存中.还有一些JMS的消息传播等等,高大上的知识需要有JVM内存模型知识的支持.所以自问自答,来回答下面 ...
- 「轉」Java的内存机制
0.参考资料: http://www.j2megame.org/index.php/content/view/2246/125.html 1.Java的内存机制 Java 把内存划分成两种:一种是栈内 ...
- Java程序运行时,数据都保存到什么地方?
程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: 寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而,寄存器 ...
- Smint – 用于单页网站制作的 jQuery 导航菜单插件
Smint 是一款用于实现单页风格网站的 jQuery 导航插件,包含两部分:固定在页面顶部的精美导航条和能够在你点击的时候自动滚动到对应内容的菜单按钮.Smint 使用非常简单,只有一个参数用于设置 ...
- Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景
Seen.js 渲染3D场景为 SVG 或者 HTML5 画布.Seen.js 包含对于 SVG 和 HTML5 Canvas 元素的图形功能的最简单的抽象.所有这个库的其它组件都是不用关心将要渲染的 ...
- Onsen UI – 新鲜出炉的 PhoneGap 界面框架
Onsen UI 是一个基于元素自定义的 HTML5 UI 框架,用于构建你的移动前端.这个一个基于 Web 组件的概念的框架,让构建应用程序变得更加轻松.Onsen UI 专门针对 PhoneGap ...