nullnull第5章 循 环 控 制
5.1 程序中的循环结构
循环语句可以实现一个程序模块的重复执行,对于简化程序,更好地组织算法有着重要的意义。
一般有两种循环:nullC#支持4种循环结构:
while语句;
do-while语句;
for语句;
foreach语句。
基本语法与C语言类似。null5.2 while循环
5.2.1 while循环语句的语法格式
while(表达式)
{
语句或语句序列(循环体);
}
while循环的执行过程为:
① 首先计算<表达式>,如果表达式的值为“真”,执行②;否则,转至④。
② 执行花括号对中的语句或语句序列。
③ 转回①。
④ 执行while循环结构之后的其他语句。
While循环是当型循环。null【例5-1】编写程序,从键盘输入一个整数n,使用while循环计算n!,并输出结果。
static void Main(string[] args)
{
long x, i, p;
Console .Write ("请输入一个整数:");
x=Convert.ToInt64(Console .ReadLine ());
p = 1; i = 1;
while (i <= x)
{
p = p * i; //连乘
i++;
}
Console.WriteLine("{0}!={1}",x,p);
Console.Read();
}null5.3 do循环
5.3.1 do循环语句的语法格式
do{
语句或语句序列(循环体);
} while(表达式);
do循环的执行过程为:
① 执行花括号对中的语句或语句序列。
② 计算<表达式>,如果表达式的值为“真”,转至① ;否则,转至③ 。
③ 执行while循环结构之后的其他语句。
do循环是直到型循环。null5.3.2 do循环语句的应用
【例5-3】从键盘输入一个整数n,使用do-while循环结构计算n!,并输出结果。
static void Main(string[] args)
{
long x, i, p;
Console .Write ("请输入一个整数:");
x=Convert.ToInt64(Console .ReadLine ());
p = 1; i = 1;
do
{
p=p*i;
i++;
}while(i<=x);
}
null【例5-4】输入任意一个小于等于20的整数,求从该整数累加到20的和。
(1)用while型语句实现
static void Main(string[] args)
{
int n, sum;
sum = 0;
Console.Write ("请输入一个小于20的整数: ");
n=Convert.ToInt32 (Console.ReadLine ());
while (n <= 20)
sum = sum + n++;
Console.WriteLine("n+...+20={0}",sum);
Console.Read();
}null(2)用do-while型语句实现
static void Main(string[] args)
{
int n, sum;
sum = 0;
Console .Write ("请输入一个小于20的整数: ");
n=Convert.ToInt32 (Console .ReadLine ());
do
{
sum = sum + n++;
} while (n <= 20);
Console.WriteLine("n+......+20={0}",sum);
}
缺点:n>20时,也执行一次循环体语句。null5.4 for循环
5.4.1 for循环语句的语法格式:
for(表达式1; 表达式2; 表达式3)
{
语句或语句序列(循环体);
}
for循环的执行过程为:
① 计算<表达式1>的值。
② 计算<表达式2>,如果表达式的值为“真”,转至③;否则,转至⑤。
③ 执行花括号对中的语句或语句序列。
④ 求解<表达式3>,转至②。
⑤ 执行for循环结构之后的其他语句。
for循环语句属于当型循环。null【例5-5】编写程序,从键盘输入一个整数n,使用for循环结构计算n!并输出结果。
static void Main(string[] args)
{
long x, i, p;
Console .Write ("请输入一个整数:");
x=Convert.ToInt64(Console .ReadLine ());
p = 1;
for (i = 1; i <= x; i++)
p = p * i;
Console.WriteLine("{0}!={1}", x, p);
}null5.5 循环的嵌套
若一个循环(称为“外循环”)的循环语句序列内包含另一个循环(称为“内循环”),称为循环的嵌套.
这种语句结构又称为多重循环结构。
内循环中还可以包含循环结构,形成多层循环的嵌套。
前面讲的三种循环语句(while循环、do-while循环和for循环)都可以相互嵌套。
理解有循环嵌套的程序的最好办法是绘制程序的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图。
或者在IDE环境中单步调试程序,观察程序走向。null【例5-13】打印水仙花数。
所谓“水仙花数”,是指一个三位数,其各个数字的立方和等于该数本身。如153是一个“水仙花数”,因为153等于1的三次方,加上5的三次方,再加上3的三次方。
分析:对于一个任意的三位整数而言,其百位数a的范围为1~9,十位数b的范围为0~9,个位数c的范围为0~9,由此可以形成一个三重循环。
这种解法体现的是“穷举法”(又称“枚举法”)的算法思想,即将可能的各种情况一一测试,判断是否满足条件。
null源程序代码如下:
三位数:abc
static void Main(string[] args)
{
int x,a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
x=100*a+10*b+c;
if (a * a * a + b * b * b + c * c * c == x)
Console .Write (" {0}", x);
}
}null5.6 循环的中断
在某些情况下,为了提高程序效率,需要强制跳出循环,则可以使用C#提供的各种跳转语句。
C#语言中的跳转语句包括
break;
continue;
goto。
5.6.1 break语句
break语句用于停止语句的执行。
在switch语句结构中,break语句用于中断选择分支的语句运行。
同样地,break语句也可用于终止while循环、do~while循环和for循环语句的执行。当程序遇到这一语句后,立即结束循环,执行紧接在循环结构后面的语句。null【例5-16】终止计数器。
using System;
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 100; i++)
{
if (i == 5) break;
Console.WriteLine(i);
}
}
}
i=5时,结束循环,实际只执行了4次循环。null5.6.2 continue语句
continue语句也可以改变循环的执行。其语法格式为:continue;
【例5-17】continue语句使用举例。
static void Main(string[] args)
{
for (int i = 1; i <= 10; i++)
{
if (i <9) continue ;
Console.WriteLine(i);
}
}
终止当次循环,提前进行下次循环。
第1~8次循环都被提前结束,第9~10次循环得以全部执行。null5.6.3 goto语句
goto语句即转移控制语句,也能用来跳出循环结构。它无条件地转移程序的执行控制,其转移目的地是一标号,因此要求标号与goto语句处在同一
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
中。null【例5-19】使用goto语句跳出循环。
static void Main(string[] args)
{
for(int i=0;i<=4;i++)
for(int j=1;j<=2;j++)
{
Console .WriteLine (“i is {0}, j is {1}”,i,j);
if ((i + j) > 4)
goto a;
}
a:
Console .WriteLine ("\n End!");
Console .Read ();
}
当i+j>4时,结束全部循环。