A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔晓聪 中级黑马   /  2012-11-18 16:51  /  2162 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

while循环语句:先判断再执行

int i=0;
while(i<1000)
{
Console.WriteLine("下次考试一定要细心");
i++;
}


1、输入全部人数,和每个人的分数,求全班人总成绩和平均成绩:

Console.WriteLine("请输入人数:");
            int studentcount = Convert.ToInt32(Console.ReadLine());
            int i = 0;
            double score = 0;
            double sum = 0;
            while (i < studentcount)
            {
                Console.WriteLine("请输入第{0}个人成绩为:", i + 1);
                score = Convert.ToDouble(Console.ReadLine());
                sum += score;
                i++;
            }
            Console.WriteLine("总成绩为:{0}", sum);
            Console.WriteLine("平均成绩为:{0}", sum / studentcount);



放学问题:
2、老师问学生,这道题会做了吗?如果学生答“会了(y)”,则可以放学。如果学生不会做(n),则老师再讲一遍,再问学生是否会做了....
直到学生会为止或者老师给他讲了10遍还不会,都要放学。

            Console.WriteLine("这道题你会了吗?(y/n)");
            string answer = Console.ReadLine();
            int i = 0;
            while(answer=="n"&&i<10)
            {
                Console.WriteLine("老师讲一遍题!");
                Console.WriteLine("这道题你会了吗?(y/n)");
                answer = Console.ReadLine();
                while(answer!="y"&&answer!="n")
                {
                     Console.WriteLine("只能输入y或者n,请重新输入!");
                     answer=Console.ReadLine();
                }
                i++;
            }
            Console.WriteLine("放学吧!");






do-while 语法:先执行,后判断
do{循环体;}
while(条件);
执行过程:
1、执行循环体。 2、判断条件是否成立,如果条件为true,则转向1 如果条件为false,则转向3。 3、跳出循环,循环结束。

假如循环条件一开始就不成立,对于while循环,一次都不会执行。对于do-while循环体执行一次。所以do-while循环体会执行一次。所以,do-while的循环体一般至少会被执行一次。
【总结】while先判断(条件)后执行(循环体),do-while 先执行(循环体)后判断(条件)

明天小兰就要登台演出了,老师说再把明天的舞蹈表演一遍,如果满意,小兰就可以回家了。否则就需要再练习一遍,直到老师满意为止。

string answer="";
do
{
Console.WriteLine("表演");
Console.WriteLine("满意吗?(yes/no)");
answer=Console.ReadLine();
}
while(answer=="no");
Console.While("恩,可以你回去吧!");


【练习】不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入end的时候显示刚才输入的数字中的最大值。和求所有数的和

            string s="";
            int sum=0;
            int i=0;
            int a = 0;
            do
            {
                Console.WriteLine("输入数字:");
                s = Console.ReadLine();
                if (s != "end")
                {
                 try
                 {
                    i = Convert.ToInt32(s);
                    sum = sum + i;
                    if (a < i)
                    {
                        a = i;
                    }
                  }
                  catch{
                      Console.WriteLine("输入错误,请输入数字或者end!");
                  }
                }
            } while (s != "end");
            Console.WriteLine("上面输入的数字之和为{0},其中最大的为{1}",sum,a);


程序调试:
1)设置断点
2)单步运行
3)观察变量


for 循环:一般用于已知次数
for(表达式1;表达式2;表达式3)
{
循环体;
}
一般情况:
表达式1,用于定义循环变量和对循环变量赋初值
表达式2,循环条件
表达式3,用于改变循环变量的值。
执行过程:
第一步:计算表达式1,转向第2步
第二步:计算表达式2(循环条件),如果表达式2的值为true(执行循环体)转向第三步,如果表达式2的值为false,跳出循环
第三步:执行循环体,转向第4步。
第四步:执行表达式3,转向第2步。
第五步:循环结束。


水仙花数为:假设一个三位数:abc 则a*a*a+b*b*b=a*b*c成立

【练习】找出100-999间的水仙花数?
for (int i = 100; i <= 999; i++)
            {
                int a = i % 10;
                int b = i / 10 % 10;
                int c = i / 100;
                if (i == a * a * a + b * b * b + c * c * c)
                {
                    Console.WriteLine(i);
                }
            }


【乘法表】
正方形:
           int sum = 0;
            for (int i = 1; i <= 9; i++)
            {
                //外层循环控制行数 即i代表行号
                for (int j = 1; j <= 9; j++)
                {
                    //第i行的第j个式子
                    sum = i * j;
                    Console.Write("{0}*{1}={2:00} ", i, j, sum);
                }
                Console.WriteLine();
            }
梯形:
            int sum = 0;
            for (int i = 1; i <= 9; i++)
            {
                //外层循环控制行数 即i代表行号
                for (int j = 1; j <= i; j++)
                {
                    //第i行的第j个式子
                    sum = i * j;
                    Console.Write("{0}*{1}={2:00} ", i, j, sum);
                }
                Console.WriteLine();
            }


例子:

           int number = 0;
            bool isNumber=false;
            while (isNumber == false)
            {
                try
                {
                    number = Convert.ToInt32(Console.ReadLine());
                    isNumber = true;
                }
                catch
                {
                    Console.WriteLine("你刚刚输入的不是数字!");
                    isNumber = false;
                }
            }
            for (int i = 0; i < number+1; i++)
            {
                Console.WriteLine("{0}+{1}={2}",i,number-i,number);

            }




break 用于循环中,退出当前循环:
1)可以用于switch-case 判断中,用于跳出switch
2)用在循环中,用于立即跳出(终止)循环

while(...)
{
....
....
....
break;//直接跳出循环,不再执行后面内容
...
...
}

for(int i=0;i<5;i++)
{
Console.WriteLine("输入年龄:");
int s=
if(s>100||s<0)
break;
}


在while中用break实现要求用户一直输入用户名和密码,只要不是admin、88888就一直提示要求重新输入,如果正确则提示登录成功。

while(true)
{
Console.WriteLine("请输入用户名:");
string usename=Console.ReadLine();
Console.WriteLine("请输入密码:");
string password=Console.ReadLine();
if(usename=="admin"&&password=="88888")
{
break;
}
Console.WriteLine("输入的用户名或者密码有误,请重新输入!");
}
Console.WriteLine("登录成功!");


1~100之间的整数相加,得到累加值大于20的前数

int i=1;
int sum=0;
for(i=1;i<=100;i++)
{
sum+=i;
if(sum>=20){break;}

}
Console.WriteLine(i);




continue (结束本次循环)

执行过程: 用于循环中,程序一旦执行到continue语句,立即结十分(就是不再执行循环体重continue下面的语句了),直接进行下次循环。(do-while/while 直接进行下一次循环条件的判断,如果成立,则再次进入循环。对于for循环,先执行表达式3,再判断循环条件是否成功!)

【例子】用while-continue实现求能被7整除的之外所有数的和;
方法一:
int i=1,sum=0;
while (i<=100)
{

if(i%7==0)
{
i++;
continue;
}
sum+=i;
i++;
}
Console.WriteLine(sum);

方法2:
int sum=0;int =0;
while(i<100)
{
i++;
if(i%7==0)
{
continue;
}
sum=sum+i;
}
Console.WriteLine(“和是:”+sum);
Console.ReadLine();


三元表达式:

表1?表2:表3

执行过程:
    首先执行表达式1,表达式1应该是一个能够计算成bool类型的值,如果表达式1的值为true,则表达式2的值作为整个表达式的值,如果表达式1的值为false,则表达式3的值做为整个表达式的值。
    表达式2和表达式3的值类型必须相兼容

            int a = 10, b = 20;
            int max = a > b ? a : b;
            Console.WriteLine(max);


【小节】
顺序结构:语句顺序执行
分支结构:语句在满足条件下执行
if, if-else ,if-else if ,switch-case, 表1?表2:表3(三元表达式)
循环结构:语句在满足条件下循环执行多次
while ,do-while,for
跳转语句:
break,continue,goto


评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

2 个回复

倒序浏览
写的太好了,值得学习
回复 使用道具 举报
陈辉 发表于 2012-11-18 16:57
写的太好了,值得学习

:handshake 大家一起好好学习,呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马