循环语句

203 阅读3分钟

1.while循环

主要是通过判断条件决定是否跳出循环体,当循环内容已经达到我们想要的结果,我们可以改变改变判断条件来决定循环的走向

image.png

image.png

例子: 1.输入一个整数n,计算1+2+3+....n的值

            int a = Convert.ToInt32(Console.ReadLine());
            int i = 0;
            int sum = 0;
            while (i <= a) //i大于输入值跳出
            {
                sum = sum + i; //累加
                i++;
            }
            Console.WriteLine(sum);

2.输出1-100之间的偶数

            while (i <= 100) //遍历1-100,当大于100跳出循环
            {
                if (i % 2 == 0) //判断取模2是不是等于0
                {
                    Console.WriteLine(i);
                }
                i++;
            }

3.3n+1问题,输入任意大于1的自然数,偶数/2,奇数3n+1

        int num = Convert.ToInt32(Console.ReadLine()); //输入一个整数
        int i = 0;
        while (num != 1)
        {
            if (num % 2 == 0)
            {
                num = num / 2;
            }
            else
            {
                num = num * 3 + 1;
            }
            i++;
        }
        Console.WriteLine("变换的次数为,{0}", i);
        

4.输入学生个数,输入学生年龄。结果输出平均年龄,保留到小数点后两位

           Console.WriteLine("请输入学生的个数");
        int num = Convert.ToInt32(Console.ReadLine());
        int i = 0;
        double aver_age = 0;
        while (i < num)
        {
            Console.WriteLine("请输入学生的年龄");
            int age = Convert.ToInt32(Console.ReadLine());
            //平均年龄
            aver_age = age + aver_age;//累加年龄
            i++; //自增判断年龄
        }
        
        

2.do while循环

先进入循环体,就是多执行一次while循环的执行

例1:输入一个整数a,和一个正整数n,计算乘方a的n次方

    Console.WriteLine("请输入一个整数");
        int a = Convert.ToInt32(Console.ReadLine()); // n=3,sum=a*a*a
        Console.WriteLine("请再输入一个正整数"); //
        int n = Convert.ToInt32(Console.ReadLine());
        int sum = 1; //容纳乘方的和
        int num = 1; //自增
        do
        {
            sum = sum * a;
            num++;
        } while (num <= n);
        Console.WriteLine(sum);

3.for循环

for循环三个表达式是用;隔开的,比较常用于循环嵌套

例子:输入整数n,输出n层三角形

        Console.WriteLine("请输入一个整数n:");
        int n = Convert.ToInt32(Console.ReadLine());
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                Console.Write('*');
            }
            Console.WriteLine('\n');
        }
        

最小公倍数如下

            //假设最大值是最小公倍数
            Console.WriteLine("请输入第一个数");
            int m = Convert.ToInt32(Console.ReadLine());//输入两个数
            Console.WriteLine("请输入第二个数");
            int n = Convert.ToInt32(Console.ReadLine());
            int num = 0;
            //先拿到最大值  Math.Max(num1,num2);
            int maxNum = Math.Max(m, n);
            for (; ; )
            {
                if (maxNum % n == 0 && maxNum % m == 0)
                {
                    Console.WriteLine("{0}和{1}的最小公倍数是{2}", n, m, maxNum);
                    break;
                }
                maxNum += num;

4.随机数

** 生成一个随机数对象,里面会有一个方法 Next(a,b)方法从a取到b-1,不包括b ** 猜数字游戏,直接找到输入的数字然后输出成功

            int num = r.Next(1, 100);
            Console.WriteLine("猜数字游戏:");
            while (true)
            {
                //Console.WriteLine("猜猜我的数字是什么:");
                int num1 = Convert.ToInt32(Console.ReadLine());
                if (num1 > num)
                {
                    Console.WriteLine("数字大了");
                }
                else if (num1 < num)
                {
                    Console.WriteLine("数字小了");
                }
                else
                {
                    Console.WriteLine("猜中了");
                    break;
                }
            }

5.数组

        //数组  比如要录入一个学生系统信息  要录入10个学生的年龄  创建10个变量
        //使用一个大的盒子来存一组数据  数组  引用类型
        //和普通的数据类型内存中存的位置不一样,存在堆中
        //int[] year = { 1, 2, 3, 4, 5, 6,7}; //数组用的大括号
        ////Console.WriteLine(year.Length);
        ////第二种定义方式  限定长度
        //int[] IdCard; //初始化声明
        //IdCard = new int[5] {1,2,3,4,5 };  //生成一个数组,数组的长度是10,有默认的值是0
        ////怎么读取数组中的值  通过下标去读取 数组中是有编号的从0开始
        //Console.WriteLine(IdCard[0]);

遍历数组

方法一

//for(int i = 0;i<year.Length;i++)
        //{
        //    Console.WriteLine(year[i]);
        //}

方法二

    //foreach(int temp in year) //会取遍历数组,然后每次获取的值会给temp变量
        //{
        //    Console.WriteLine(temp);
        //}

数组实例

实例1:

            //Console.WriteLine("请输入一个字符串:");
            //string str = Console.ReadLine(); //获取一组数据
            //Boolean isleagal = false;
            ////循环遍历每个字符
            //for (int i = 0; i < str.Length; i++)
            //{
            //    if (48 <= str[i] && str[i] <= 57 || 65 <= str[i] && str[i] <= 90 || 97 <= str[i] && str[i] <= 122)
            //    {
            //        if (i == 0 && 48 <= str[i] && str[i] <= 57)
            //        {
            //            break;
            //        }
            //        isleagal = true;
            //    }
            //    else
            //    {
            //        isleagal = false;//只要有一个不合法就退出
            //        break;
            //    }
            //}
            //    //根据isleagal判断是否合法
            //    if(isleagal)
            //    {
            //        Console.WriteLine("这是一个合法的标识符");
            //    }
            //    else
            //    {
            //        Console.WriteLine("不合法标识符");
            //    }

实例2:

            //先输入一个字符串
            //Console.WriteLine("请输入一个字符串,判断是否是回文:");
            //string str = Console.ReadLine(); //输入字符串
            ////先定义一个变量来记录是否是回文串
            //Boolean isPalindrome = true;
            ////循环字符串
            //for (int i = 0; i < str.Length/2; i++)
            //{
            //    if (str[i] != str[str.Length -i - 1])
            //    {
            //        isPalindrome = false;
            //        break;
            //    }
            //}
            //if(isPalindrome)
            //{
            //    Console.WriteLine("是回文串");
            //}
            //else
            //{
            //    Console.WriteLine("不是回文串");
            //}

实例3

        //妈妈每个月给小明300块,不过百就不存,过百给妈妈整百,逐渐超出预算,输出超出月份和负数
        //先定义一个变量来存预算
        //string str = Console.ReadLine();
        //string[] strArray = str.Split(" ");
        //int[] budget = new int[strArray.Length];
        ////定义一个变量表示每个月给妈妈的钱
        //int mom = 0;
        ////定义一个变量表示小明每个月自己剩下的钱
        //int self = 0;
        ////定义一个变量表示小明最终剩下的钱,包括妈妈那边的
        //int all = 0;
        ////定义一个变量  表示有没有超出预算 默认没有
        //Boolean isOut = false;
        //int m = 1;//定义一个变量记录,
        ////赋值
        //for(int i = 0; i < strArray.Length; i++)
        //{
        //    budget[i] = Convert.ToInt32(strArray[i]);
        //}

        ////遍历数组
        //for(int i = 0; i < budget.Length; i++)
        //{
        //    mom += ((300 + self - budget[i]) / 100) * 100;//到目前月份给妈妈的钱
        //    //当前月份剩下的钱
        //    self = 300 + self - budget[i] - ((300 + self - budget[i]) / 100) * 100;
        //    if(self<0)
        //    {
        //        isOut = true;
        //        m = i + 1;
        //        break;
        //    }
        //}
        ////判断有没有超出预算
        //if(isOut)
        //{
        //    Console.WriteLine(-m);
        //}
        //else
        //{
        //    Console.WriteLine("小明目前实际总的钱为{0}元", self + mom * 1.2);
        //}