循环语句 (一)

语句:
1、顺序语句
2、分支语句
3、循环语句

三种循环语句:
for
while
foreach

循环四要素:
初始条件,循环条件,循环体,状态改变

for(初始条件;循环条件;状态改变)
{
循环体;
}

基本结构:
for (int i = 1; i <= 10; i++)
初始条件; 循环条件; 状态改变
{
Console.WriteLine("hello world!" + i);
循环体;
}

最容易晕的地方:
1、到低循环几遍
起始条件为第一遍循环,若循环条件为“<=”,则比循环条件“<”多循环一遍。

2、循环条件表达式的写法 :
"i < 某一值" 或"i > 某一值"或"i <= 某一值"或"i >= 某一值";
不可写作"i == 某一值"或"i = 某一值"
----------------------------------------------------------------------------------------------

死循环:

for(;;)
{

}

while(循环条件true)
{

}

跳转语句:
break; 只要程序在循环中看到这句话,就会立刻终止循环并且跳出循环;
continue; 只要程序在循环中看到这句话,就会立刻终止此次循环;
return;//用在函数里

while循环的写法

循环初始条件
while(循环条件)
{
循环体
状态改变
}

----------------------------------------------------------------------------------------------
练习题:
1、
用户输入一个整数;然后计算从1 — n的总和;
例如输入了一个5,结果就是1+2+3+4+5;

            //1、接收用户输入进来的数
            Console.Write("请输入一个整数:");
            int a = Convert.ToInt32(Console.ReadLine());
            int sum = 0;
            
            //2、累加求和
            for (int i = 1; i <= a; i++)
            {
                sum += i;
            }

            //3、打印
            Console.WriteLine(sum);
Console.ReadLine(),

2、
让用户循环操作,用户输入一个正整数(0-20),
如果小于0或大于20都提示输入错误,
如果输入的是0-20之间的数,那么就打印从0到这个数的累加求和,
一共需要用户输入3遍,输入错误不计入这3遍操作当中

            int count = 0;

            for (; ; )//不知道用户该输入多少次,所以用死循环
            {
                //1、接收用户输入的值
                Console.Write("请输入一个0-20的整数:");
                int a = Convert.ToInt32(Console.ReadLine());
                int sum = 0;

                //2、判断值是否输入有误
                if (a < 0 || a > 20)
                {
                    Console.Write("输入有误!");
                }
                else
                {
                    //3、如果输入没有错,那么就进行累加求和并打印
                    //记录打印的次数,如果到了3次,就跳出循环

                    for (int i = 0; i <= a; i++)
                    {
                        sum += i;
                    }

                    Console.WriteLine(sum);
                    count++;
                    Console.WriteLine("当前执行第" + count + "次。");
                    if (count == 3)
                    {
                        break;
                    }
                }
            }
            Console.ReadLine();

 

 

3、
打印 你好 20遍,
格式为:
1、你好 2、你好 3、你好 .... 20、你好

            for (int i = 1; i <= 20; i++)
            {
                Console.WriteLine(i + "" + "你好");
            }
            Console.ReadLine();

4、
闯关:(一共100关)
前20关,每一关都是自己的分数;
21-50关,都是20分;
51-100关,都是30分。
求:
最后100关都闯过后的总分数。

            int s = 0;
            //1、循环100关
            for (int i = 1; i <= 100; i++)//起始条件为第一遍循环,若循环条件为“<=”,则比循环条件“<”多循环一遍。
            {
                //2、累加某一关卡数的总得分
                if (i <= 20)//1—20关的分数
                {
                    s += i;
                }
                else if (i <= 50)//21—50关的分数
                {
                    s += 20;
                }
                else //51—100关的分数
                {
                    s += 30;
                }
            }
            Console.WriteLine(s);
            Console.ReadKey();


5、
打印 10遍 “你好”
要求:
使用 “i--”的循环状态

            for (int i = 10; i > 0; i--)
            {
                Console.WriteLine(i + "你好");
            }
            Console.ReadKey();

6、
用户输入姓名,然后打印此人的年龄,从1岁-18岁,每一岁占一行;
打印内容为:
“我今年xxx岁了!”;
当6岁时增加打印“我上小学了!”;
当11岁时增加打印“我上初中了!”;
当15岁时增加打印“我上高中了!”;

当18岁时增加打印“我成年了!考上了北大!”;

            //1、接收用户输入的姓名信息
            Console.Write("请输入姓名:");
            Console.ReadLine();

            //2、循环
            for (int i = 1; i <= 18; i++)
            {
                if (i == 6)//判断年龄是不是6岁
                {
                    Console.WriteLine("我今年" + i + "岁了。我上小学了!");
                }
                else if (i == 11)//判断年龄是不是11岁
                {
                    Console.WriteLine("我今年" + i + "岁了。我上初中了!");
                }
                else if (i == 15)//判断年龄是不是15岁
                {
                    Console.WriteLine("我今年" + i + "岁了。我上高中了!");
                }
                else if (i == 18)//判断年龄是不是18岁
                {
                    Console.WriteLine("我今年" + i + "岁了。我成年了,我上北大了!");
                }
                else
                {
                    Console.WriteLine("我今年" + i + "岁了。");
                }
            }
            Console.ReadKey();

 

7、

随机抽取一个手机号

            //1、提示用户,按空格键开始随机选号码;
            Console.Write("请输入随机抽奖的秒数:");
            int s = int.Parse(Console.ReadLine());
            int ss = 0;//已经执行的秒数

            Console.WriteLine("按空格键开始抽奖!");
            ConsoleKeyInfo info = Console.ReadKey();

            if (info.Key.ToString() == "Spacebar")
            {
                Random r = new Random();
                //2、持续滚动手机号码;
                for (; ; )
                {
                    Thread.Sleep(100);
                    string phone = "1";

                    phone += r.Next(10000, 99999);
                    phone += r.Next(10000, 99999);

                    Console.Clear();
                    Console.WriteLine(phone);
ss += 100; if (ss == s * 1000) {break; } } } Console.ReadLine();

8、

用户输入一个字母,打印从A到这个英文字母之间的全部字母,包含用户输入的字母

 

char a ='a';
                for (int i = 1; i <= 26; i++)
                {
                    Console.WriteLine(a);
                    b++;
                 }
Console.ReadKey();

 9、

用户输入一个字母,如D,那么就打印 ABCDCBA

            //1、接收用户输入的字母
            Console.Write("请输入一个字母:");
            char a = Convert.ToChar(Console.ReadLine());
            char b = 'a';
            bool isok = true; //判断b是该++还是--

            //2、拼接要打印的内容
            for (int i = 0; i < 26; i++)
            {
                Console.Write(b);
                if (b == a)
                {
                    isok = false;
                }
                if (isok)
                {
                    b++;
                }
                else
                {
                    b--;
                    if (b == 'a' || b == 'A')
                    {
                        Console.Write(b);
                        break;
                    }
                }
            }

            //3、打印
            Console.ReadLine();

10、

一张纸,对折几次可以达到珠穆朗玛峰的高度?
一张纸为3微米,10微米为1毫米,珠峰高度为8848米
需要折多少次,折完之后这张纸的厚度是多少米

            long page = 3; //单位是微米
            long feng = 8848000000;
            int count = 0;//记录折的次数

            while (true)
            {
                page *= 2;
                count++;

                if (page >= feng)
                {
                    Console.WriteLine(page);
                    Console.WriteLine(feng);
                    Console.WriteLine(count);
                    break;
                }

            }
            Console.ReadLine();

posted @ 2016-05-22 20:32  露西&哈特菲利亚  阅读(204)  评论(0编辑  收藏  举报