精华内容
下载资源
问答
  • for()循环。 四要素: 初始条件,循环条件,状态改变,循环体。 执行过程: 初始条件--循环条件--循环体--状态改变--循环条件.... 注意:for的小括号里面分号隔开,for的小括号后不要加分号。 for的嵌套。 应用...

     

     

     

    for()循环。

    四要素:

    初始条件,循环条件,状态改变,循环体。 执行过程:

    初始条件--循环条件--循环体--状态改变--循环条件....

    注意:for的小括号里面分号隔开,for的小括号后不要加分号。 for的嵌套。 应用:迭代法,穷举法。

    一、迭代法:

    有一定规律。 每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备。

    例: 1.100以内所有数的和。

    2.求阶乘

    3.求年龄。

    4.折纸。

    5.棋盘放粮食( 自己做)

    6.猴子吃桃子

    7.落球问题。(自己做)一个球从10米高度落下,每次弹起2/3的高度。问第五次弹起后的高度是多少? 8.兔子小兔子的问题。一对新生兔,到三个月开始生一对小兔,以后每个月都会生一对小兔,小兔不断长大也会生小兔。假设兔子不死,每次只能生一对(公母),问第24末有多少只兔子?

     

    二、穷举法: 用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。

     

    1.找100以内的与7有关的数。

     

    2.有三种硬币若干:1分,2分,5分。要组合1毛5,有哪些组合方式?

     

    3.买东西。小张过元旦发了100元的购物券,他要买香皂(5元),牙刷(2元),洗发水(20元)。要想把100元正好花完,如何买这三样东西?

     

    4.百鸡百钱。有100文钱,要买100只鸡回家。公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只。如何买?  百马百石。有100石粮食,母匹大马驮2石,每匹中马驮1石,每两匹小马驹一起驮1石。要用100匹马驮完100石粮食,如何按排?

     

    5.某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: A和B两人中至少去一人;    a+b>=1 A和D不能一起去;       a+d<=1 A、E和F三人中要派两人去;   a+e+f==2 B和C都去或都不去;      b+c!=1 C和D两人中去一个;      c+d==1 若D不去,则E也不去。     d+e==0||d==1 问应当让哪几个人去? 6.123()45()67()8()9=100;要求在()里面填写+或-使等式成立。

     

    转载于:https://www.cnblogs.com/981971554nb/p/4190979.html

    展开全文
  • C# foreach迭代

    千次阅读 2019-03-08 08:46:42
    foreach,in(C# 参考) foreach 语句用于循环访问集合,以获取您需要的信息,但不能用于在源集合中添加或移除项,否则可能产生不可预知的副作用。 如果需要在源集合中添加或移除项,请使用 for 循环。 嵌入语句为数...

    foreach,in(C# 参考)

    foreach 语句用于循环访问集合,以获取您需要的信息,但不能用于在源集合中添加或移除项,否则可能产生不可预知的副作用。 如果需要在源集合中添加或移除项,请使用 for 循环。

    嵌入语句为数组或集合中的每个元素继续执行。 当为集合中的所有元素完成迭代后,控制传递给 foreach 块之后的下一个语句。

    可以在 foreach 块的任何点使用 break 关键字跳出循环,或使用 continue 关键字进入循环的下一轮迭代。

    foreach 循环还可以通过 goto、 return 或 throw 语句退出。

    代码

    实现:
    从控制台输入10个数字(用回车结束)
    把这10个数字存在一个数组中
    逐个输出这10个数字
    用foreach将10个数相加,并输出

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace test
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] a = new int[1000];
                int i = 0;
                string str = "";
                int num = 0;
    
                //输入
                Console.WriteLine("输入10个值,以回车分隔");
    
                //先按照数字分割
                while (str != null)
                {
                    str = Console.ReadLine();
                    num = int.Parse(str);
                    a[i] = num;
                    i++;
    
                    if (i == 10) break;
                }
    
                //相加
                int sum = 0;
                foreach (int iter in a)
                {
                    sum += iter;
                }
    
                //输出
                int j;
                for (j = 0; j < i; j++)
                {
                    Console.WriteLine(a[j]);
                }
                Console.WriteLine("sum={0}", sum);
            }
        }
    }
    
    
    展开全文
  • 这篇开始我们会对C#中的迭代器进行详细的讲解。 首先对于C#中用到迭代器的地方都是在数据结构中将迭代逻辑封装起来。使我们可以在不需要关心数据结构的内部数据存储结构的情况下顺利的遍历到每一个数据。 List<...

    这篇开始我们会对C#中的迭代器进行详细的讲解。

    首先对于C#中用到迭代器的地方都是在数据结构中将迭代逻辑封装起来。使我们可以在不需要关心数据结构的内部数据存储结构的情况下顺利的遍历到每一个数据。

    List<int> nums = new List<int>();
    for(int i = 0;i< nums.Count; i++)
    {
        Debug.Log(nums[i]);
    }
    

    看到上述代码,我们使用for循环,对索引进行递增操作,然后根据索引去获取数组中的每一个元素。每一次循环i都会+1,所以我们可以依次获取所有的元素,那如果我们将i++换成i+=2,那么即是获取索引为偶数的元素。那么这个也就是我们进行迭代的逻辑,我们迭代的逻辑是在外部定义的。因为我们知道list数组的索引是从0开始一次递增的。所以我们可以这么写,那如果像字典dictionary呢?我们并不清楚他的存储结构,并不知道他的所有key是多少。所以我们迭代器的作用就是将迭代逻辑放在数据结构当中。

    class MyList {
            List<int> nums;
            public MyList()
            {
                nums = new List<int>();
            }
            public void Add(int num)
            {
                nums.Add(num);
            }
    
            private int index = 0;
    
            public int Current => nums[index];
            public bool MoveNext()
            {
                index++;
                if (index < nums.Count)
                    return true;
                Reset();
                return false;
    
            }
    
            public void Reset() => index = 0;
    
        }
    
    MyList nums = new MyList();
    nums.Add(1);
    nums.Add(2);
    do
    {
        Debug.Log(nums.Current);
    } while (nums.MoveNext());
    
    

    我们使用do while循环,一直去调用MoveNext函数,推进index索引,当index未出界,则返回true,也就是还未遍历完,遍历完了就返回false,所以,我们在循环中一直访问的Current,则会获取到该数组的每一个元素。

    如此一来,我们就将该数据结构的迭代逻辑放在了数据结构里面了,外部不需要知道我们的存储结构,他只管调用movenext,然后访问current即可。所以我们不需要关心他的数据存储方式。

    那么这么做其实是有问题的。举个例子。

    MyList nums = new MyList();
    nums.Add(1);
    nums.Add(2);
    do
    {
         do
         {
              Debug.Log(nums.Current);
          }
          while (nums.MoveNext());
    } while (nums.MoveNext());
    

    如果我这么写会有什么后果?死循环!!!

    因为这是同一个对象,因此他的index实际上是同一个,那么就会导致,每次内层while结束,index都会被置为0,所以外层while永远不会结束。

    所以我们应该将迭代逻辑抽出来。

    class MyList {
            List<int> nums;
            public MyList()
            {
                nums = new List<int>();
            }
    
            public void Add(int num)
            {
                nums.Add(num);
            }
    
            public MyIter GetIter()
            {
                return new MyIter(nums);
            }
        }
    
    class MyIter
        {
            List<int> nums;
            public MyIter(List<int> nums)
            {
                this.nums = nums;
            }
            private int index = 0;
    
            public int Current => nums[index];
            public bool MoveNext()
            {
                index++;
                if (index < nums.Count)
                    return true;
                Reset();
                return false;
    
            }
    
            public void Reset() => index = 0;
        }
    
    MyList nums = new MyList();
            nums.Add(1);
            nums.Add(2);
            MyIter iter1 = nums.GetIter();
            MyIter iter2 = nums.GetIter();
            do
            {
                do
                {
                    Debug.Log(iter2.Current);
                }
                while (iter2.MoveNext());
            } while (iter1.MoveNext());
    

    我们每次进行遍历的时候都通过数据结构的GetIter方法获取一个新的迭代器。使每次遍历的迭代索引和逻辑相互独立,则不会造成影响。

    这是为了方便大家理解所写的一个非常简陋的迭代器。为的是让大家可以更好的理解我们C#中自带的迭代器。即两个接口。IEnumerable和IEnumerator。

    我直接上代码。大家对比下上面的代码相信直接就可以看懂了。

    class MyList :IEnumerable{
            List<int> nums;
            public MyList()
            {
                nums = new List<int>();
            }
    
            public void Add(int num)
            {
                nums.Add(num);
            }
    
            public IEnumerator GetEnumerator()
            {
                return new MyIter(nums);
            }
    
        }
    

    我们需要支持foreach遍历的迭代器要继承IEnumerable该类,并实现他的GetEnumerator方法,即是获取迭代器的方法,也就是上面的GetIter。

    class MyIter:IEnumerator
        {
            List<int> nums;
            public MyIter(List<int> nums)
            {
                this.nums = nums;
            }
            private int index = 0;
    
            object IEnumerator.Current => nums[index];
    
            public bool MoveNext()
            {
                index++;
                if (index < nums.Count)
                    return true;
                return false;
    
            }
    
            public void Reset() => index = 0;
        }
    

    而我们的迭代器类需要继承IEnumerator,并实现Current,movenext和reset三个方法。意义上面已经阐述过了。那么继承这两个接口的好处是,可以使用foreach。

    MyList nums = new MyList();
            nums.Add(1);
            nums.Add(2);
            foreach(int num in nums)
            {
                Debug.Log(num);
            }
    

    在foreach开始时,会自动的去调用我们数据结构的GetEnumerator方法获取一个新的迭代器,然后每次循环都是去调用Movenext方法推进索引,当movenext返回false则循环结束。

    到这里相信大家都明白了迭代器是怎么一回事了。

    PS:字典是可以用for循环进行遍历的。可以将字典的所有key存在一个数据中,在for循环中依次根据key去获取对应的值即可。

    引擎猫QQ交流群:690504410

    在这里插入图片描述

                             长按关注公众号,获取更多内容
    
    展开全文
  • 迭代 //兔子生兔子 class Class5 { static void Main(string[] args) { int tu1 = 1, tu2 = 1; //tu1是倒数第一个月的兔子数,tu2是倒数第二个月的兔子数 int tu=0;//要求的这个月的兔子数。...

    迭代

     

     //兔子生兔子    

    class Class5    

    {        

    static void Main(string[] args)      

       {           

        int tu1 = 1, tu2 = 1; //tu1是倒数第一个月的兔子数,tu2是倒数第二个月的兔子数         

        int tu=0;//要求的这个月的兔子数。

                for (int i = 3; i <= 24; i++)          

       {                 tu = tu1 + tu2;               

                          tu2 = tu1;            

                          tu1 = tu;                         

         }           

      Console.WriteLine(tu);      

       }   

      }

     

     

     //求年龄:有6个小孩子排在一起,问第一个多大年龄,他说比第二个小2岁,问第二个多大年龄,他说比第三个小2岁,以此类推,问第6个多大年龄,他说自己16岁。问第一个小孩子几岁?
        class Class2
        {
            static void Main(string[] args)
            {
                int age = 16; //初始情况下,存的是第6个小孩子年龄,每次循环都会减2,分别代表第5,4,3,2,1个小孩子的年龄。
                for (int i = 5; i >= 1; i--)
                {
                    age = age - 2;
                }
                Console.WriteLine(age);
            }
        }
    }

     

      //猴子吃桃子。
        //公园里有一只猴子,和一堆桃子。猴子每天吃掉桃子数量的一半,把剩下的一半数量中扔掉一个坏的。到了第7天猴了睁开眼发现只剩下一个桃子了,问原来有多。
        //190
        class Class4
        {
            static void Main(string[] args)
            {
                int count = 1;
                for(int i=6;i>=1;i--)
                {
                    count = (count + 1) * 2;
                }
                Console.WriteLine(count);
            }
        }
    }

     

     

    穷举

    2.有三种硬币若干:1分,2分,5分。要组合1毛5,有哪些组合方式?

     

    static void Main(string[] args)
            {
                for(int a=0;a<=15;a++) //a代表1分的硬币个数
                {
                    for(int b=0;b<=7;b++)//b代表2分的硬币个数
                    {
                        for(int c=0;c<=3;c++)//c代表5分硬币的个数
                        {
                            if(a*1+b*2+c*5 == 15)
                            {
                                Console.WriteLine("1分硬币需要"+a+"个,2分的硬币需要"+b+"个,5分的硬币需要"+c+"个");
                            }
                        }
                    }
                }
            }
        }
    }

    转载于:https://www.cnblogs.com/981971554nb/p/4191011.html

    展开全文
  • C#迭代语句

    千次阅读 热门讨论 2018-05-26 11:05:12
    迭代语句主要用于重复执行嵌入语句,在C#中,常见的迭代语句有while语句、do…while语句、for语句和foreach语句。 while语句 表达式: while(【布尔表达式】)//计算布尔表达式中的值是否为true,为true时,...
  • PHP JAVA C# 循环迭代

    2011-10-24 14:50:51
    PHP循环迭代for($itemsas$value){//$items是数据集合//$value是集合内的元素}JAVA循环迭代for(typevalue:items){//arr数据集合//var集合内的元素//type集合内元素的类型}C#循环迭代f...
  • C#for循环——迭代法、穷举法 for()循环。四要素:初始条件,循环条件,状态改变,循环体。 执行过程:初始条件--循环条件--循环体--状态改变--循环条件....注意:for的小括号里面分号隔开,for的小括号后不要加...
  • C# 迭代

    2020-12-04 20:49:18
    C# 迭代器 概述 用于遍历访问集合 迭代器遍历 使用迭代器IEumerator和IEumerator<T> 迭代器IEumerator和IEumerator<T>是一个接口类型,拥有属性Current,方法MoveNext()、Reset(),其中IEumerator&...
  • c#迭代结构

    2019-07-16 21:47:20
    不过过去用过什么方法,C#迭代语句都不会让你感到陌生。C#提供了四种迭代结构: for循环 foreach/in循环 while循环 do/while循环 下面让我们探讨一下每一个循环结构。 for循环 如果需要迭代一段代码规定次数,...
  • 从0遍历到20(不包括20),输出遍历到的每个元素,并将大于2的所有数字放到一个IEnumerable中返回 解答1:(我以前经常这样做) static IEnumerable<int> WithNoYield() ... for (int i = 0; i < 20> 2) list.Add(i); }
  • for()循环。 四要素: 初始条件,循环条件,状态改变,循环体。执行过程: 初始条件--循环条件--循环体--状态改变--循环条件.... 注意:for的小括号里面分号隔开,for的小括号后不要加分号。for的嵌套。...
  • C#基础 for 穷举、迭代

    2016-06-26 16:41:00
    //迭代,从初始情况按照规律不断求解中间情况,最终推导出结果。 //纸张可以无限次对折,纸张厚度为0.07毫米。 //问多少次对折至少可以超过8848? //double height = 0.07;//8848m=8848000 //int ci = 0; //...
  • C#迭代

    2011-04-03 19:59:00
    摘要:迭代器是C#2.0中添加的功能,它能够使我们在类或结构中支持foreach迭代,而不必实现整个IEnumerable/IEnumerable接口。今天我们就一块看一下什么是c#中的迭代器吧。 主要内容: 1.foreach的运行机制 2....
  • 轻松学习C#的foreach迭代语句, C#语言提供了一个for语句循环的捷径,而且还促进了集合类的更为一致,就是本文提到的foreach语句,感兴趣的小伙伴们可以参考一下
  • C#中的迭代

    2019-08-14 21:53:33
    C#中,foreach语句使得能够进行比for循环语句更直接和简单的对集合的迭代。.NET中迭代器是通过IEnumerable和IEnumerator接口来实现的(当然,这两个接口还有其对应的泛型版本:IEnumerable<T>和 IEnumerator&...
  • 为什么java的for增强可以自动迭代 那些类可以被迭代 通过什么方法迭代 1.知道迭代器接口Iterable 解析: 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象...
  • C#迭代器的使用

    2019-09-28 02:01:34
    原文地址:http://msdn.microsoft.com/zh-cn/library/65zzykke.aspx创建迭代器最常用的方法是对IEnumerable接口实现GetEnumerator方法,例如:publicSystem.Collections.IEnumeratorGetEnumerator(){for(inti=0;...
  • C# foreach和迭代

    2020-11-01 19:00:05
    是什么让类成为集合,IEnumerable<T> .NET中的几何本质上是一个类,它实现了...C#编译器会用CIL来创建一个等价的for循环,注意foreach要依赖于数组的Length属性和数组索引操作符的支持,知道Length属性的值后,C
  • for语句格式: for(初始条件;判断条件;循环条件) { 循环语句; } for循环可以记录循环的次数,有效控制循环的方式。有时候我们会省略初始条件、判断条件、循环条件,这时候两个分号是不能省略的,此时构成死循环。 ...
  • 二)迭代 6. 五个小朋友排成一队,问第一个多大了,第一个说比第二个大两岁,问第二个多大了,第二个说比第三个大两岁...  以此类推,问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?   三)while...
  • C# 迭代 穷举 练习题

    2016-07-25 08:56:00
    1、纸张厚度为0.07mm,问对折多少次能够超过8848m?...for ( ; ; ){zhi *= 2;ci++;if(zhi>8848000){break;}}Console.WriteLine(ci);Console.WriteLine(ci + "次这之后,达到" + zhi / 1000 + "米!");Console.Re...
  • C# 学习笔记:迭代

    千次阅读 2019-08-31 20:16:39
    C#中,如果实现遍历一个数组,除了for循环,还可以是foreach循环。在foreach循环中,我们只需要创建一个同类型的值,来表示我们遍历后的值就可以了。但是实际上,只有实现了IEnumerable接口的类型,才能使用foreach...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 308
精华内容 123
关键字:

c#for迭代

c# 订阅