一、for循环拥有两类:

1、穷举:

把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。

2、迭代:

从初始情况按照规律不断求解中间情况,最终推导出结果。

二、穷举练习

1.单位给发了一张150元购物卡,拿着到超市买三类洗化用品。洗发水15元,香皂2元,牙刷5元。求刚好花完150元,有多少种买法,每种买法都是各买几样?

int count = 0;//count数数的意思,多少种买法

int bian = 0;//看循环总共走了多少遍

for (int x = 0; x <= 10; x++)

{

for (int y = 0; y <= 30; y++)

{

for (int z = 0; z <= 75; z++)

{

bian++;

if (x * 15 + y * 5 + z * 2 == 150)

{

count++;

Console.WriteLine("第" + count + "种买法:洗发水" + x + "瓶,牙刷" + y + "支,香皂" + z + "块!");

}

}

}

}

Console.WriteLine("总共" + count + "买法!(符合题意的算法)");

Console.WriteLine("总共循环" + bian + "遍!(总共有这么多算法,但符合题意得的是count种算法)");

Console.ReadLine();

2、大马驼2石粮食,中等马驼1石粮食,两头小马驼1石粮食,要用100匹马,驼100石粮食,该如何分配?

int count = 0;

int bian = 0;

for (int dm = 0; dm <= 50; dm++)

{

for (int zm = 0; zm <= 100; zm++)

{

for (int xm = 0; xm <= 200; xm++)

{

bian++;

if (dm + zm + xm == 100 && dm * 2 + zm * 1 + xm * 0.5 == 100)

{

count++;

Console.WriteLine("第" + count + "种分配法:大马" + dm + "匹,中马" + zm + "匹,小马" + xm + "匹!");

}

}

}

}

Console.WriteLine("总共" + count + "种分配方法!");

Console.WriteLine("总共循环" + bian + "遍!");

Console.ReadLine();

3、有1分钱,2分钱,5分钱的硬币,要组合出来2角钱,有几种组合方式,分别各多少个?

int count = 0;

int bian = 0;

for (int yf = 0; yf <= 20; yf++)

{

for (int ef = 0; ef <= 10; ef++)

{

for (int wf = 0; wf <= 4; wf++)

{

bian++;

if (yf * 1 + ef * 2 + wf * 5 == 20)

{

count++;

Console.WriteLine("第" + count + "种组合方法:一分" + yf + "个,二分" + ef + "个,五分" + wf + "个!");

}

}

}

}

Console.WriteLine("总共" + count + "种组合方法!");

Console.WriteLine("总共循环" + bian + "遍!");

Console.ReadLine();

4、百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?

int count = 0;

int bian = 0;

for (int gong = 0; gong <= 50; gong++)

{

for (int mu = 0; mu <= 100; mu++)

{

for (int xiao = 0; xiao <= 200; xiao++)

{

bian++;

if (gong + mu + xiao == 100 && gong * 2 + mu * 1 + xiao * 0.5 == 100)

{

count++;

Console.WriteLine("第" + count + "种买法:公鸡" + gong + "只,母鸡" + mu + "只,小鸡" + xiao + "只!");

}

}

}

}

Console.WriteLine("总共" + count + "种买法!(符合题意的算法)");

Console.WriteLine("总共循环" + bian + "遍!(总共有这么多算法,但符合题意得的是count种算法)");

Console.ReadLine();

三、迭代练习

1、五个小朋友排成一队,问第一个多大了,第一个说比第二个大两岁,问第二个多大了,第二个说比第三个大两岁。。。以此类推,问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?

第一种:

int age = 3;

for (int i = 1; i <= 4; i++)

{

age += 2;

}

Console.WriteLine(age);

Console.ReadLine();

第二种:

int age = 3;

for (int i = 5; i > 1; i--)

{

age += 2;

}

Console.WriteLine(age);

Console.ReadLine();

2、纸张可以无限次对折,纸张厚度为0.07毫米。问多少次对折至少可以超过8848?

第一种:

double count = 0;

for (double i = 0.07; i <= 8848000; i *= 2)

{

count++;

}

console.writeline(count);

console.readline();

第二种:

int count = 0;

for (int i = 7; i <= 884800000; i *= 2)

{

count++;

}

Console.WriteLine(count);

Console.ReadLine();

3、//猴子摘了一些桃子,第一天吃了桃子的一半零一个,第二天又吃了剩下桃子的一半另一个.......

//第十天只剩下了一个桃子,问猴子到底摘了多少桃子

//分析:第九天=(1+1)*2,第八天=(第九天+1)*2......第一天=(第二天+1)*2

int t = 1;//从后往前倒推,设定第十天是一个桃子

for (int i = 1; i <= 9; i++)//总共十天,循环9次即可得出第一天的桃子数,所以i<=9

{

t++;//t=t+1,给下面的t重新赋值,可以看做是把猴子吃的那零一个给加上了

t *= 2;//t=t*2,t是重新赋值后的t,即加上了零一个后的数量,这个t是总数的一半,所以要乘以2

}

Console.WriteLine("猴子总共摘了"+t+"个桃子!");

Console.ReadLine();

四、while格式的写法,及练习

(一)写法:

while格式就是for变形得到的,初始条件拿到前面,循环的状态改变放到循环体的最后一句,for变成while,将原先的分号去掉,只留下循环条件

例:

int sum = 0;

int i = 1;

while (i <= 10)

{

sum += i;

i++;

}

Console.WriteLine(sum);

(二)练习:

1、纸张厚度0.07毫米,折叠多少次至少超过8848米

int count = 0;

double i = 0.07;

while (i <= 8848000)

{

count++;

i *= 2;//在本题中使用高度来限制次数,不确定要折叠多少次,所以i++此状态改变要去掉,记录次数count即可

}

Console.WriteLine(count);

Console.ReadLine();

2、百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?

int count = 0;

int gong = 0;

while (gong <= 50)

{

int mu = 0;

while (mu <= 100)

{

int xiao = 0;

while (xiao <= 200)

{

if (gong + mu + xiao == 100 && gong * 2 + mu * 1 + xiao * 0.5 == 100)

{

count++;

Console.WriteLine("第" + count + "种买法:公鸡" + gong + "只,母鸡" + mu + "只,小鸡" + xiao + "只!");

}

xiao++;

}

mu++;

}

gong++;

}

Console.WriteLine("总共" + count + "种买法!");

Console.ReadLine();

3、3、五个小朋友排成一队,问第一个多大了,第一个说比第二个大两岁,问第二个多大了,第二个说比第三个大两岁。。。以此类推,问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?

int age = 3;

int i = 5;

while ( i > 1)

{

age += 2;

i--;

}

Console.WriteLine(age);

Console.ReadLine();

4、输入一个100以内的数,输入正确,累加求和,输入错误,打印“请重新输入!”

for (; ; )

{

Console.Write("请输入一个100以内的正整数:");

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

int sum = 0;

if (a >= 0 && a <= 100)

{

for (int j = 0; j <= a; j++)

{

sum += j;

}

Console.WriteLine(sum);

break;

}

else

{

Console.WriteLine("您的输入有误,请重新输入!");

}

}

Console.ReadLine();

5月4日课堂内容:for循环的穷举、迭代的更多相关文章

  1. for循环的嵌套,for循环的穷举迭代

    for循环的嵌套            输入一个正整数,求阶乘的和 嵌套            Console.Write("请输入一个正整数:");            int ...

  2. 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait

    20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...

  3. Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容

    2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...

  4. Java分布式互联网架构/微服务/高性能/springboot/springcloud2018年10月16日直播内容

    2018年10月16日直播内容 架构师揭秘springboot对springmvc的自动配置原理 直播地址:https://ke.qq.com/course/179440?tuin=9b386640 ...

  5. 2017年8月9日学习内容存放 #socket通信介绍

    2017年8月9日学习内容存放 #socket通信介绍 ''' OSI七层 应用 表示 会话 传输 网络 ip 数据链路 mac 物理层 网线 http smtp dns ftp ssh snmp i ...

  6. 循环嵌套,while循环,穷举迭代循环

    一.循环嵌套 简单的就是说,在一个for循环里嵌入多个小for循环. 其中,在打矩形.三角形和乘法口诀表之类的题目中,大for循环一般表示的是行数,其余的小for循环式每一行中的内容. 二.while ...

  7. C#4 for循环 迭代法 穷举法应用

    for()循环. 四要素: 初始条件,循环条件,状态改变,循环体. 执行过程: 初始条件--循环条件--循环体--状态改变--循环条件.... 注意:for的小括号里面分号隔开,for的小括号后不要加 ...

  8. C# for循环 迭代法 穷举法应用

    迭代 //兔子生兔子 class Class5    { static void Main(string[] args) { int tu1 = 1, tu2 = 1; //tu1是倒数第一个月的兔子 ...

  9. C# 循环语句 for循环(嵌套 while 穷举 迭代)

    for循环的嵌套类似于if else 事例: 打印矩阵,外循环对应行,内循环对应列 for (int k = 1; k <= 5; k++) { for (int i = 1; i <= ...

随机推荐

  1. Protractor AngularJS测试框架教程

    Protractor是一个建立在WebDriverJS基础上的端到端(E2E)的AngularJS JavaScript Web应用程序测试框架.Protractor全自动化真实的模拟用户在真正的浏览 ...

  2. iOS - OC Category 分类

    1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...

  3. c++ vector 简单实现。

    第二次修改: 1)熟悉基本的模板编程,头文件和定义必须放到一起. 2)熟悉内存管理模板类 allocator<T>. 1.使用标准库的内存管理类 allocator<T> 代替 ...

  4. Python学习(12)日期和时间

    目录 Python 日期和时间 时间元组 获取当前时间 获取格式化时间 格式化日历 获取某月日历 Time模块 日历模块 其他相关模块和函数 Python 日期和时间 Python 程序能用很多方式处 ...

  5. HTML <meta> 标签

    <meta> 元素可提供有关页面的元信息,元数据总是以名称/值的形式被成对传递的. <meta> 标签位于文档的头部,不包含任何内容. <meta> 标签的属性定义 ...

  6. Git开源项目工作流程图

  7. java技术知识点

    1   自我介绍 2  做过的项目 (Java 基础) 3  Java的四个基本特性(抽象.封装.继承,多态),对多态的理解(多态的实现方式)以及在项目中那些地方用到多态 Java的四个基本特性 ◦  ...

  8. C++ typedef 四个用途

    第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, ...

  9. 将一堆石子分成多堆——Multi-SG 游戏

    这类博弈只需要记住一点,一个由多个游戏组成的游戏sg值为这多个游戏的sg值异或和. 也就是所有对一整个nim游戏它的sg值即为每一小堆的sg的异或和. hdu 5795 这题就是可以选择把一堆石子分成 ...

  10. 转:CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...