C#day3,day4

207 阅读2分钟

一、循环语句

1.while循环

1.基本结构

             while (循环的判断语句) 如果条件为真就会一直执行循环体中的内容
             {

                 循环体
             }*/

2.控制循环次数 通过改变循环判断条件的结果,让其循环到一定值的时候会不满足则跳出循环,执行次数变有限了

            /*while (true)
            {
                Console.WriteLine(1); 

            }*/


            //有限循环   控制循环次数     只需让判断条件有一天变为假
            //i=1  i<10 => i++ 有一天i就会大于等于10  增量表达式
            //i=19  i>=10 => i-- 有一天i就会小于10  

            /* int i = 10;
             while (i > 2)
             {
                 Console.WriteLine(i);
                 i--;   //循环次数8  10=>3   2时不进入循环
             }*/

3.练习

1.image.png

            /*Console.WriteLine("请输入整数:");
            int n = Convert.ToInt32(Console.ReadLine());
            int sum = 0;

            while (n >= 0)
            {
                sum = sum + n;               
                n--;   
            }
            Console.WriteLine(sum);*/

            /*  Console.WriteLine("请输入整数:");
              int n1 = Convert.ToInt32(Console.ReadLine());
              int sum1 = 0;
              int i = 1;

              while (i <= n1)
              {
                  sum = sum + i;
                  i--;
              }
              Console.WriteLine(sum);
  */

2.image.png

            //输出0-100之间的偶数           
            /* int n = 100;
             while (n >= 0)
             {
                 if (n % 2 == 0)
                 {
                     Console.WriteLine(n);
                 }
                 n--;
             }*/

3.image.png

            /* Console.WriteLine("请输入整数:");
             int n = Convert.ToInt32(Console.ReadLine());
             int i = 0;
             while (n > 1)
             {

                 if (n % 2 == 0)
                 {
                     n = n / 2;

                 }
                 else
                 {
                     n = 3 * n + 1;

                 }
                 i++;
             }
             Console.WriteLine(i);*/

4.image.png

            /*     Console.WriteLine("请输入学生人数:");
                 int n = Convert.ToInt32(Console.ReadLine());
                 double sum = 0;
                 double yaverage = 1;

                 int i = 1;

                 while (n > 0)
                 {
                     Console.WriteLine("请输入学生年龄:");
                     int y = Convert.ToInt32(Console.ReadLine());

                     sum = sum + y;
                     yaverage = sum / i;
                     n--;
                     i++;
                     Console.WriteLine("平均年龄为{0}",Math.Round(yaverage, 2));
                 }*/

2.for循环

1.基本结构

            /* for (c初始化; 判断条件; 增量表达式)
             {
                 循环体;
             }*/

            /*int num3 = 1;
            for(; num3 < 5; num3++)
            {
                Console.WriteLine(num3);
            }
*/

2.练习题 image.png

            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入第二个数:");
            int m = Convert.ToInt32(Console.ReadLine());
            int sum = 0;
            if (n < m){
                Console.Write("n与m之间所有被17整除的数有:");
                for (int i = n; i <= m; i++)
                {
                    if (i % 17 == 0)
                    {
                        sum += i;
                        Console.Write(i);
                        Console.Write("  ");     //???如何打出空格,将这两代码转为一行
                        //Console.Write(" {0}", i);
 
                    }

                }
                Console.WriteLine("n与m之间所有被17整除的数的和为{0}", sum);
            }
            else
            {
                Console.Write("n与m之间所有被17整除的数有:");
                for (int i = m; i <= n; i++)
                {
                    if (i % 17 == 0)
                    {
                        sum += i;
                        Console.Write(i);
                        Console.Write("  ");

                    }

                }
                Console.WriteLine("n与m之间所有被17整除的数的和为{0}", sum);
            }
*/

            //上题的优化
            /*Console.WriteLine("请输入第一个数:");
            int n1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入第二个数:");
            int m1 = Convert.ToInt32(Console.ReadLine());
            int sum1 = 0;
            int max = n1;
            if (n1 > m1)
            {
                n1 = m1;   //做值的交换
                m1 = max;
            }
            Console.Write("{0}与{1}之间所有被17整除的数有:",n1, m1);
            for (; n1<m1; n1++)
            {
                if (n1 % 17 == 0)
                {
                    Console.Write(" {0}", n1);
                    sum1 += n1;
                }
            }
            Console.WriteLine("和为:{0}", sum1);*/

3.do...while循环

1.基本结构

          /*  int num = 11;
            do               //不管后面while循环的条件满不满足都会先执行一次
            {
                Console.WriteLine(num);  //11
                num++;
            } while (num < 10);
            Console.WriteLine(num);  //12
*/

2.练习 1.image.png

            int a = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入一个正整数:");
            int n = Convert.ToInt32(Console.ReadLine());
            int i = 1;
            do
            {
                i = a * i;
                n--;
            } while (n>0);

           // Console.WriteLine("乘方{0}的{1}次方为{2}", a, n, i);
            Console.WriteLine(i);*/

2.image.png

            double h = Convert.ToDouble(Console.ReadLine());
            double sum = 0;  //经过的长度
            int i = 1;
           
            for(; i<=10; i++)
            {
                sum = sum + h;
                h = h / 2;
                sum = sum  + h;
            

            }
            Console.WriteLine("反弹的高度{0},经过{1}米",h, sum);
*/

3.image.png

            //水仙花数
            for (int i = 100; i < 1000; i++)
            {
                int a = i / 100;
                int b = i / 10 % 10;
                int c = i % 10;
                if(i == a * a * a + b * b * b + c * c * c)
                {
                    Console.WriteLine(i);
                }
               

            }

4.变量作用域

  1. 同一个作用域中的变量不能重名
  2. 父作用域与子作用域,可以访问父作用域里面的变量,但是父作用域不能访问子作用域中定义的变量

            /*int i = 1;
            for (; i<10; i++)  //1~9  9次     //先找自己的作用域,如没有会往外查找
            {
                for(int j = 10; j>0; j--)   //10~1   10次
                {
                    Console.WriteLine(j);
                }

                Console.WriteLine(i);
            }*/
            //Console.WriteLine(i);

5.循环中的break和continue

  1. break:跳出当前整个循环
  2. continue:跳出当前这一次循环,继续执行下一次循环的内容

6.嵌套循环练习

1.image.png

            /* Console.WriteLine("请输入n:");
             int n = Convert.ToInt32(Console.ReadLine());
             int i = 1;
             for (; i <= n; i++)
             {
                 for(int j = 1; j<=i; j++)
                 {
                     Console.Write("*");
                 }
                 Console.WriteLine(" ");
             }*/

2.image.png

            /* Console.WriteLine("请输入n:");
             int n = Convert.ToInt32(Console.ReadLine());
             int i = 1;
             for (; i <= n; i++)
             {
                 for (int j = 1; j <= n-i; j++)
                 {
                     Console.Write(" ");

                 }

                 for (int j = 1; j <= 2*i-1; j++)
                 {
                     Console.Write("*");

                 }

                 Console.WriteLine();
             }*/

3.image.png

            /* Console.WriteLine("请输入n:");
             int n = Convert.ToInt32(Console.ReadLine());
             int i = 1;
             for (; i <= n; i++)   //控制行数
             {
                 for (int j = 1; j <= n - i; j++)
                 {
                     Console.Write(" ");

                 }

                 for (int j = 1; j <= 2 * i - 1; j++)
                 {
                     Console.Write("*");

                 }

                 Console.WriteLine();
             }
             for (i = 1; i <= n-1; i++)
             {
                 for (int j = 1; j <= i; j++)
                 {
                     Console.Write(" ");

                 }

                 for (int j = 1; j <= 2 * (n-i) - 1; j++)            
                 {
                     Console.Write("*");

                 }

                 Console.WriteLine();
             }*/

4.对称乘法口诀image.png

            //int n = Convert.ToInt32(Console.ReadLine());
            /* int i = 1;
             for (; i <= 9; i++)   //控制行数
             {
                 for (int j = 1; j <= i; j++)
                 {
                     Console.Write(" {0}*{1}={2}\t", j, i, i*j);

                 }
                 Console.WriteLine();
             }

             for (i = 9; i >= 1; i--)   //控制行数
             {
                 for (int j = 1; j <= i; j++)
                 {
                     Console.Write(" {0}*{1}={2}\t", j, i, i * j);

                 }
                 Console.WriteLine();
             }*/

5.百文白鸡 image.png

            /*for(int g = 1; g<= (100/3); g++)
            {
                for(int m = 1; m<=(100/5); m++)
                {
                    for(int x = 1; x<=(100/2); x++)
                    {

                        if( (100 == 3 * g + 5 * m + 2*x) && (g+m+x<=100))
                        {
                            Console.WriteLine("公鸡有{0}, 母鸡有{1}, 小鸡有{2}", g, m, x);
                        }
                    }
                }
            }*/

6.求两数最大公因数

            /*Console.WriteLine("请输入数1:");
            int num1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入数2:");
            int num2 = Convert.ToInt32(Console.ReadLine());
            int min;
            if (num1 < num2)
            {
                min = num1;
                num1 = num2;
                num2 = min;
            }
            for(int i = num2; i>0; i--)
            {
                if(num1%i==0 && num2 % i == 0)
                {
                    Console.WriteLine("{0}和{1}的最大公因数为{2}", num1, num2, i);
                    break;
                }
            }
*/

7.猜数游戏:与计算猜数,猜大了,打印猜大了;猜小了,打印猜小了;猜对了,打印猜对了,并结束游戏,否则游戏继续直到猜对为止。

            int r = a.Next(1, 101);
          
            while (true)
            {
                Console.WriteLine("请输入数据1~100:");
                int num = Convert.ToInt32(Console.ReadLine());
                if (num > r)
                {
                    Console.WriteLine("猜大了!");

                }
                else if(num < r)
                {
                    Console.WriteLine("猜小了!");

                }
                else
                {
                    Console.WriteLine("猜中了!");
                    break;
                }
            }

补充:random

            //对象中会有一个方法next(a, b)  表示a到b-1的整数  不包括b
            //Random a = new Random();  //Random数据

            //int b = a.Next(1, 9);  //随机生成1-8
            //Console.WriteLine(b);