首页 > 代码库 > 第05天

第05天

 

1.     我们在使用while循环或者do-while循环的时候,

经常会忘记给循环变量自增,为了解决这个问题,我们有了更为简单的一种循环,

叫做for循环,for循环专门处理已知循环次数的循环。

 

for(表达式1;表达式2;表达式3)

{

       循环体;

}

表达式1:一般为声明一个循环变量,用来记录循环的次数

表达式2:一般为循环条件

表达式3:一般为能够改变循环条件的代码

执行过程:在第一次循环的时候,首先执行表达式1,再执行表达式2,然后跳过表达式3.直接执行循环体,

执行完循环体之后,执行表达式3,执行表达式2,循环体,表达式3,表达式2,循环体。。。。。

直到表达式2不成立之后,跳出for循环。

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace Demo01

{

    class Program

    {

        static void Main(string[] args)

        {

            int sum = 0;

            for (int i = 1; i <= 100; i += 2)

            {

                sum += i;

            }

            Console.WriteLine(sum);

 

            Console.ReadKey();

        }

    }

}

Demo01

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Demo02
{
    class Program
    {
        static void Main(string[] args)
        {
            //1-10
            for (int i = 1; i <=10 ; i++)
            {
                Console.WriteLine(i);
            }
            Console.ReadKey();
        }
    }
}

Demo02

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Demo03
{
    class Program
    {
        static void Main(string[] args)
        {
            //10-1
            for (int i = 10; i >= 1; i--)
            {
                Console.WriteLine(i);
            }
            Console.ReadKey();
        }
    }
}

Demo03

倒序for循环快捷键: forr+tab*2

 

mini-ex:   找出100-999间的水仙花数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex01
{
    class Program
    {
        static void Main(string[] args)
        {
            //水仙花数:100-999  
            //这个百位数字 百位的立方+十位的立方+个位的立方==当前这个百位数字
            //153  1+125+27 153  i   
            //百位:153/100
            //十位:153%100/10
            //个位:153%10
 
            for (int i = 100; i < 1000; i++)
            {
                int bai = i/100;
                int shi = i%100/10;
                int ge = i%10;
 
                if (bai*bai*bai + shi*shi*shi + ge*ge*ge == i)
                {
                    Console.WriteLine(i);
                }
            }
            Console.ReadLine();
        }
    }
}

ex01

 

 

demo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace _04_for循环的嵌套

{

    class Program

    {

        static void Main(string[] args)

        {

          //  int count = 0;

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

            {

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

                {

                    //count++;

                    Console.WriteLine("外面循环了{0}次,里面循环了{1}次",i,j);

                }

            }

            Console.ReadKey();

        }

    }

}

 

双层循环

 

ex: 输出九九乘法表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex02
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i < 10; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("{0}*{1}={2}\t",j,i,i*j);
                }
                Console.WriteLine();
            }
            Console.Read();
        }
    }
}
 
 
ex02

 

 

ex03:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex03
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please input a number:");
            int inputNumber = Convert.ToInt32(Console.ReadLine());
 
            for (int i = 0; i <= inputNumber; i++)
            {
                Console.WriteLine("{0}+{1}={2}", i, inputNumber-i,inputNumber);
            }
            Console.ReadLine();
        }
    }
}

ex03

 

 

2.     break只能够跳出当前循环,而不能跳出所有循环。

3.     int.TryParse();

尝试着将一个字符串转换成int类型,如果转换成功的话,返回一个true,并且将转换成功后的值

赋值给一个int类型的参数,如果转换失败的话,返回一个false,并且给这个int类型的参数赋值为0

 

ex:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex04
{
    class Program
    {
        static void Main(string[] args)
        {
            int inputAge = 0;
            int sumAge = 0;
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Please enter your age:");
                inputAge = Convert.ToInt32(Console.ReadLine());
                if (inputAge < 0 || inputAge > 100)
                {
                    break;
                }
                sumAge += inputAge;
            }
            Console.WriteLine("Average age is {0}", sumAge/5);
            Console.Read();
        }
    }
}

ex04

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex05
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("Please enter your username:");
                string username = Console.ReadLine();
                Console.WriteLine("Please enter your password:");
                string password = Console.ReadLine();
 
                if (username == "admin" && password == "88888")
                {
                    Console.WriteLine("Success Login");
                    break;
                }
                else
                {
                    continue;
                    
                }
            }
            Console.ReadLine();
        }
    }
}

ex05

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex06
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1;
            int sum = 0;
            while (true)
            {
                sum += i;
                if (sum > 20)
                {
                    break;
                }
                i++;
            }
            Console.WriteLine(i);
            Console.ReadLine();
        }
    }
}

ex06

 

 

4.     continue

在循环中,如果遇到break,则跳出当前循环。

如果遇到continue,则立即停止本次循环,回到循环条件进行判断,如果循环条件成立,则继续执行循环。

如果不成立,则跳出循环。

单独把continue放到循环中没有意义,一般也跟着if语句配合着使用。

mini-ex:

//练习1:用 while continue实现计算1到100(含)之间的除了能被7整除之外所有整数的和。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex07
{
    class Program
    {
        static void Main(string[] args)
        {
            //练习1:用 while continue实现计算1到100(含)之间的除了能被7整除之外所有整数的和。
            int i = 0;
            int sum = 0;
            while (i<=100)
            {
                i++;
                if (i % 7 == 0)
                {
                    continue;
                }
                sum += i;
                
            }
            Console.WriteLine(sum);
            Console.ReadLine();
        }
    }
}

ex07

 

 

mini-ex:

//打印1-100之间所有的质数

//质数:只能被1和自身整除的数字 叫做质数

//判断一个整数是否是质数:让这个整数从2开始除,除到自己的前一位

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
 
namespace ex08
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 2; i <= 100; i++)
            {
                bool flag = true;
                for (int j = 2; j < i; j++)
                {
                    if (i % j == 0)
                    {
                        flag = false;
                        break;
                    }
                }
                if (flag)
                {
                    Console.WriteLine(i);
                }
            }
            Console.ReadLine();
        }
    }
}

ex08

 

 

5.     三元表达式

表达式1?表达式2:表达式3;

表达式1一般为一个关系表达式,如果关系表达式1的结果为true,那么表达式2的值就是整个三元表达式的值,

否则,表达式3就是整个三元表达式的值。

要求:表达式2和表达式3的结果类型必须一致,并且也要和整个三元表达式的结果类型一致,

       demo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace _12产生随机数

{

    class Program

    {

        static void Main(string[] args)

        {

            //随机数 没有规律的数字

            //产生随机数:

            //1、创建一个能够产生随机数的对象

            while (true)

            {

                Random r = new Random();

 

                int rNumber = r.Next(1, 10);

 

                Console.WriteLine(rNumber);

                Console.ReadKey();

            }

          

        }

    }

}

 

 

6.     常量

语法:

const 常量类型  常量名称=值;

 

7.     枚举

语法:

[public] enum 枚举名

{

值1,

值2,

值3,

........

}

public:访问修饰符。访问的权限,公开的,公共的,谁都能访问。

enum:表示声明枚举的关键字

枚举名:必须要Pascal命名规范。每个单词的首字母都要大写。

 

枚举类型和int类型互相兼容,所以两种类型可以通过强制类型转换的语法互相转换。枚举类型的值默认是从0开始的。

 

不管是将字符串类型的数字转换成枚举类型还是将int类型转换成枚举类型,结果都不会抛异常。但是,如果要转换的字符串,

在枚举中,并没有所对应的值,这个时候会抛异常。

 

demo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace _15枚举

{

    public enum Gender

    {

        男,

        女

    }

 

    public enum Sesons

    {

        春,

        夏,

        秋,

        冬

    }

 

    class Program

    {

 

        static void Main(string[] args)

        {

            //int number=10;

            Gender gender = Gender.女;

            Sesons seson = Sesons.春;

        }

    }

}

 

 

demo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace demo04
{
    public enum QQState
    {
        OnLine = 1,
        OffLine,
        Leave,
        Busy,
        QMe
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            //枚举类型和int类型互相兼容
            int n1 = (int)QQState.OnLine;
            Console.WriteLine(n1);
            Console.WriteLine((int)QQState.OffLine);
            Console.WriteLine((int)QQState.Leave);
            Console.WriteLine((int)QQState.Busy);
            Console.WriteLine((int)QQState.QMe);
            Console.ReadKey();
        }
    }
}

 

demo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace demo04
{
    public enum QQState
    {
        OnLine = 1,
        OffLine,
        Leave,
        Busy,
        QMe
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            int n1 = 10;
            QQState s1 = (QQState)n1;
            Console.WriteLine(s1);
            Console.ReadKey();
        }
    }
}

 

demo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace demo04
{
    public enum QQState
    {
        OnLine = 1,
        OffLine,
        Leave,
        Busy,
        QMe
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            QQState s = QQState.OnLine;
            Console.WriteLine(s.ToString());
            Console.ReadKey();
        }
    }
}

 

demo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace demo04
{
    public enum QQState
    {
        OnLine = 1,
        OffLine,
        Leave,
        Busy,
        QMe
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            QQState s1 = (QQState)Enum.Parse(typeof(QQState), "1");
            Console.WriteLine(s1);
            Console.ReadKey();
        }
    }
}

 

demo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace demo04
{
    public enum QQState
    {
        OnLine = 1,
        OffLine,
        Leave,
        Busy,
        QMe
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请选择您的qq在线状态  1--OnLine,2--OffLine 3--Leave 4--Busy 5--QMe ");
            string input = Console.ReadLine();//1-5
 
            switch (input)
            {
                case "1": QQState s1 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择在线状态是{0}", s1);
                    break;
                case "2": QQState s2 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择在线状态是{0}", s2);
                    break;
 
                case "3": QQState s3 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择在线状态是{0}", s3);
                    break;
                case "4": QQState s4 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择在线状态是{0}", s4);
                    break;
                case "5": QQState s5 = (QQState)Enum.Parse(typeof(QQState), input);
                    Console.WriteLine("您选择在线状态是{0}", s5);
                    break;
            }
            Console.ReadKey();
        }
    }
}

 

 

8.     结构:一次性声明多个不同类型的变量

语法:

[public] struct 结构名

{

结构成员;

}

字段跟变量有一个本质的区别:字段可以存储多个值,而变量只能存储一个值。

       demo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace _18结构类型

{

    public struct Person

    {

        public string _name;

        public int _age;

        public Gender _gender;

    }

 

    public enum Gender

    {

        男,

        女

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            //首先声明一个结构类型的变量

            Person zsPerson;

            zsPerson._name = "张三";

            zsPerson._age = 19;

            zsPerson._gender = Gender.男;

            Person lsPerson;

            lsPerson._name = "李四";

            lsPerson._age = 20;

            lsPerson._gender = Gender.女;

 

            ////大学管理系统 姓名 性别 年龄

            //string name1 = "张三";

            //char gender1 = ‘男‘;

            //int age1 = 15;

        }

    }

}

 

 

mini-ex:

定义一个结构叫MyColor,有三个成员,分别定义为int类型的red,green,blue

声明一个 MyColor类型的变量,并对其成员赋值.使MyColor可以表示成一个红色.

codes:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex09
{
    struct MyColor
    {
        public int _red;
        public int _green;
        public int _blue;
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            MyColor color;
            color._red = 255;
            color._green = 0;
            color._blue = 0;
        }
    }
}

ex09

mini-ex:

定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄 性别用枚举类型

声明两个Person类型的变量,分别表示 张三 男  18岁/ 小兰 女 16岁

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ex10
{
    struct Person
    {
        public string _name;
        public int _age;
        public Gender _gender;
    }
 
    public enum Gender
    {
        Male,
        Female
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person p1;
            p1._name = "张三";
            p1._age = 18;
            p1._gender = Gender.Male;
 
            Person p2;
            p2._name = "小兰";
            p2._age = 16;
            p2._gender = Gender.Female;
        }
    }
}

ex10

 

 

9.     数组

数组类型[] 数组名=new 数组类型[数组长度];

注意:数组的长度一旦声明了,就不能再被改变了。

 

数组的4种声明方式:

int[] nums = new int[10];这种声明数组的方式只是确定了数组的类型和长度,并没有赋值

int[] nums = { 1, 2, 3, 4, 5 };这种声明数组的方式在声明的时候 就给数组赋值了

int[] nums = new int[4] { 1, 2, 3, 4 };

int[] nums = new int[] { 1, 2, 3, 4 };

 

第05天