VR引擎程序设计基础——C#第三课

354 阅读1分钟

1.jpg

课前练习和复习

  1. 回顾if语句

98dc2761ab954dee8172ee32042b3fa6_tplv-k3u1fbpfcp-watermark.png

  1. 回顾switch语句

a51dcd6bec3842ea94ff1aba11f4f02c_tplv-k3u1fbpfcp-watermark.png

  1. 练习一

image.png

            Console.WriteLine("输入第一个整数:");
            int a = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入第二个整数:");
            int b = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入第三个整数:");
            int c = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入第四个整数:");
            int d = Convert.ToInt32(Console.ReadLine());
            int max = a;
            int min = a;
            if (max < b){max = b;}
            if (max < c){max = c;}
            if (max < d){max = d;}
            else {max = a;}
            if (min > b){min = b;}
            if (min > c){min = c;}
            if (min > d){min = d;}
            else {min = a;}
            Console.WriteLine(max);
            Console.WriteLine(min);

一、循环语句

1.while循环

(1)基本结构

image.png

(2) 如何控制循环次数

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

(3) ① 练习题一

image.png

            Console.WriteLine("输入一个整数:");
            int n = Convert.ToInt32(Console.ReadLine());
            int i = 1;
            int sum = 0;
            while (i < n)
            {
                sum = i + sum;
                i++;
            }             
            Console.WriteLine(sum+n);

② 练习题二

image.png

            int i = 1;
            int n = 100;
            while (i <= n)
            {
                i++;
                if (i % 2 == 0)
                {
                    Console.WriteLine(i);
                }   
            } 

③ 练习题三

image.png

            Console.WriteLine("输入一个自然数:");
            int i = Convert.ToInt32(Console.ReadLine());
            int n = 0; 
            while (i>1)
            {
                if (i % 2 == 1)
                {
                    i = 3 * i + 1;
                }
                else
                {
                    i = i / 2;
                }
                n++;
               
            }
            Console.WriteLine(n);

④ 练习题四

image.png

提示:

image.png

            Console.WriteLine("输入班级人数:");
            int n = Convert.ToInt32(Console.ReadLine());
            int a = 1;
            double average = 0;
            double sum = 0;
            while (a <= n)
            {
                Console.WriteLine("输入年纪:");
                double age = double.Parse(Console.ReadLine());
                sum = sum + age;
                a++;
             }
            average = sum / n;
            Console.WriteLine(Math.Round(average,2));

2.for循环

(1)基本结构

image.png

(2)①练习题一

image.png

            Console.WriteLine("输入第一个正整数:");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入第二个正整数:");
            int m = Convert.ToInt32(Console.ReadLine());
            int i = 0;
            int sum = 0;
            for (i=n ;i>=n&&i<=m ; i++)
            {
                if (i % 17 == 0)
                {                    
                    sum = i + sum;                    
                }                
            }
           Console.WriteLine(sum);
           
           
           //teacher
          /*Console.WriteLine("输入第一个正整数:");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入第二个正整数:");
            int m = Convert.ToInt32(Console.ReadLine());
            int i = 0;
            int sum = 0;
            if (n > m)
            {
                n = m;
                m = i;
            }
            for (; n<=m; n++)
            {
                if (n % 17 == 0)
                {
                    sum = n + sum;
                }
            }
            Console.WriteLine(sum);*/

3. do...while循环

(1) 基本结构

image.png

4.关于循环的其他题目

① 练习一

image.png

           Console.Write("请输入a的值:");
           int a=Convert.ToInt32(Console.ReadLine());
           Console.Write("请输入n的值:");
           int n=Convert.ToInt32(Console.ReadLine());
           int i, sum = 1;

           for(i=1;i<=n;i++)
           {
               if (n < 0)
               {
                   Console.WriteLine("输入的n的值不对请重新输入");
                   continue;
               }
               else
               {
                   sum = sum * a;
               }
           }
           Console.WriteLine("a的n次方为:"+sum);

② 练习二

image.png

            /*
            Console.WriteLine("请输入球的初始高度:");
            float ch = Convert.ToSingle(Console.ReadLine());
            float jh = ch * 2, sum = ch;
            for (int i = 0; i < 10; i++)
            {
                ch /= 2;

            }

            for (int k = 0; k < 9; k++)
            {
                jh /= 2;
                sum += jh;
            }

            Console.WriteLine("第十次后,经过{0}米,反弹{1}米", sum, ch);
            */
            
            //下面的好
            
            Console.Write("请输入初始高度i:");
            double i = Convert.ToDouble(Console.ReadLine());
            Console.Write("请输入计算反弹次数n:");
            int n = Convert.ToInt32(Console.ReadLine());
            int a;
            double sum=0;
            for(a=1;a<=n;a++)
            {
                sum = sum + i + i / 2;
                i = i / 2;
            }            
            Console.WriteLine("反弹{0}米经过了{1}米",i,sum);

③ 练习三

image.png

            for (int num = 100; num <= 999; num++)
            {
                int i = num % 10;  //取个位
                int j = (num / 10) % 10;  //取十位
                int k = num / 100;  //取百位
                if (i * i * i + j * j * j + k * k * k == num)
                {
                    Console.WriteLine(num);
                }
            }

5.变量作用域

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

6.循环中的break和continue

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

2.jpg

二、循环嵌套

1.练习一

image.png

            int n =Convert.ToInt32(Console.ReadLine());
            for (int i = 1; i <= n; i++)//循环每层
            {               
                //每一层里面都有星星
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();//循环一层星星空格一行
            }
            

2.练习二

image.png

            //星星和当前层号的关系:2n-1  1 3 5 7 9
            //空格个数  n-i  n减去当前层号
            int n = Convert.ToInt32(Console.ReadLine());
            for (int i = 1; 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

            int n = Convert.ToInt32(Console.ReadLine());
            for (int i = 1; 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 (int i =1;i<n;i++)
            {
                //循环出每一层的空格
                for (int j = 1; j <=i; j++)
                {
                    Console.Write(" ");//空格
                }
                //循环每一层的星星
                for (int j = 1; j <=2*(n-i)-1; j++)//2(n-i)-1
                {
                    Console.Write("*");
                }
                Console.WriteLine();//换行
            }

4.练习四 输出九九乘法表

image.png

           int n = Convert.ToInt32(Console.ReadLine());
            for (int i = 1; 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 (int i =1;i<n;i++)
            {
                //循环出每一层的空格
                for (int j = 1; j <=i; j++)
                {
                    Console.Write(" ");//空格
                }
                //循环每一层的星星
                for (int j = 1; j <=2*(n-i)-1; j++)//2(n-i)-1
                {
                    Console.Write("*");
                }
                Console.WriteLine();//换行
            }

5.练习五 百文买鸡问题:

image.png

            for (int i =1;i<34;i++)//公鸡个数
            {
                for(int j=1;j<21;j++)//母鸡个数
                {
                    for(int k=1;k<51;k++)//小鸡个数
                    {
                        if (i * 3 + j * 5 + k * 2 == 100)
                            Console.WriteLine("公鸡:{0},母鸡:{1},小鸡:{2}", i, j, k);
                    }
                }
            }

三、本节课部分源码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp12
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //while 循环
            /*while (循环判断的条件) 如果条件为真就会一直执行循环体重的代码*/
            /*
             while(true)
            {
                Console.WriteLine(1);
            }
            int i = 1;
            while(i<10)
            {
                Console.WriteLine(i);
                //让i增加 才有可能为假
                i++;
            }
            int j = 10;
            while(j<10)
            {
                j--;
                Console.WriteLine(j);
            }
            */
            /*
            int i = 1, sum=0;
            int n=Convert.ToInt32(Console.ReadLine());
            while(i<=n)
            {
                sum = sum + i;
                i++;
            }
            Console.WriteLine(sum);
            */
            /*
             *int i = 1;
            while(i<=100)
            {
                if(i%2==0)
                {
                    Console.Write(i);
                    Console.Write(" ");
                }
                i++;
            }
            */
            /*
            int i=Convert.ToInt32(Console.ReadLine());
            int j = 0;
            while(i!=1)
            {
                if(i%2==1)
                {
                    i = 3 * i + 1;
                }
                else
                {
                    i = i / 2;
                }
                j++;
            }
            Console.WriteLine(j);
            */


            /* 
             double num=1.23342;
             Console.WriteLine(num.ToString("0.000"));//保留三位小数*/
            /*int i = 0;
            double sum = 0;
            double average;
            int n=Convert.ToInt32(Console.ReadLine());
            while(i<n)
            {
                *//*int j = Convert.ToInt32(Console.ReadLine());
                sum = sum + j;*//*
                sum += Convert.ToInt32(Console.ReadLine());
                i++;
            }
            average = sum / i;
            Console.WriteLine(average.ToString("0.00"));
            */
            /*for(初始值;表达式;增量表达式)
            {
                    循环体
            }*/
            /* for(; ; )//表示死循环
             {
                 Console.WriteLine()
             }*/


            /* int n=Convert.ToInt32(Console.ReadLine());
             int m=Convert.ToInt32(Console.ReadLine());
              int i, sum = 0;
              int t;
              if(n>m)
              {
                  t = n;
                  n = m;
                  m = t;
              }
              for(i=n;i<m;i++)
              {
                  if(i%17==0)
                  {
                      sum += i;
                  }
              }
              Console.WriteLine(sum);*/
            /* do
             {

             } while (true);//不管条件真假,都会执行一次*/


            /*Console.Write("请输入a的值:");
            int a=Convert.ToInt32(Console.ReadLine());
            Console.Write("请输入n的值:");
            int n=Convert.ToInt32(Console.ReadLine());
            int i, sum = 1;
           
            for(i=1;i<=n;i++)
            {
                if (n < 0)
                {
                    Console.WriteLine("输入的n的值不对请重新输入");
                    continue;
                }
                else
                {
                    sum = sum * a;
                }
            }
            Console.Write("a的n次方为:");
            Console.WriteLine(sum);*/


            /*Console.Write("请输入初始高度i:");
            double i = Convert.ToDouble(Console.ReadLine());
            Console.Write("请输入计算反弹次数n:");
            int n = Convert.ToInt32(Console.ReadLine());
            int a;
            double sum=0;
            for(a=1;a<=n;a++)
            {
                sum = sum + i + i / 2;
                i = i / 2;
            }            
            Console.WriteLine("反弹{0}米经过了{1}米",i,sum);
           // Console.WriteLine(i.ToString("0.00"));*/


        }
    }
}