C#语言中各种循环的优缺点
从学习C#基础的那天起,我们就开始陆续接触各种循环语句,比如:if else循环、if-else if循环、while循环、do-while循环、switch-case循环和for循环等等。由于种类繁多,导致对各种循环理解不深,使用起来也犹豫不定。今天我就介绍一下每一种的优势与缺点,好让大家在以后的使用中得心应手。
1、if else循环
语法:
if(条件)
{ 语句块1;}
else
{ 语句块2;}
如果条件为true ,则执行if下的语句块1,跳过语句块2;如果条件为false,则执行else下语句块2.
实例:
static void Main(string[] args)
{
string username = “admin”;
string password = “888888”;
if (username == “admin” && password == “888888”)
{
Console.WriteLine(“登录成功!”);
}
else
{
Console.WriteLine(“登录失败”);
}
Console.ReadKey();
}
优势:if else适合用于逻辑判断简单,循环次数较少的程序中。
缺点:用于逻辑复杂的程序中,则比较麻烦,界面凌乱。
2、if -else if
语法:
在if-else if语句中,只有当上一个条件不成立时,才会执行else if语句并判断,如果结果为true,则执行else if所带的语句块,执行完成后,则跳出循环。如果所有的else if都不成立,则执行最后面的else语句块,如果没有则什么都不执行。
实例:输入直辖市代码,判断您住在哪一个市?
static void Main(string[] args)
{
//请用代码输入你所在在直辖市(北京-B,天津—T,上海-S,重庆-C)
Console.WriteLine(“请问您生活在哪一个直辖市?”);
string input = Console.ReadLine();
if (input==”B”)
{
Console.WriteLine(“您生活在北京!”);
}
else if (input==”T”)
{
Console.WriteLine(“您生活在天津!”);
}
else if (input ==”S”)
{
Console.WriteLine(“您生活在上海!”);
}
else if (input ==”C”)
{
Console.WriteLine(“您生活在重庆!”);
}
else
{
Console.WriteLine(“您生活在月球!”);
}
Console.ReadKey();
}
优势:适用于多重判断循环以及范围内比较
缺点:如果循环太多太精确的话,则不可用。
3、while循环
语法:
While(条件)
{
循环体
}
先判断条件是否成立,如果成立,则执行循环体,如果不成立,则跳出循环。程序结束。
实例:打印10遍”这篇课文我已经抄了N遍了“
static void Main(string[] args)
{
int i = 0;
while(i<10)
{
Console.WriteLine(“《背影》这篇课文我已经抄了第{0}遍了!”,i+1);
i++;
}
Console.ReadKey();
优势:适用于先判断,再执行的程序中。
缺点:局限性很大
4、do-while循环
语法:
Do
{
循环体
}
While(条件);
先执行循环体一次,然后判断while条件是否成立,如成立,则继续执行循环体,如不成立,则跳出循环。程序结束。
实例:编程实现小兰先表演一遍舞蹈后问老师满意吗?如不满意,则继续表演;如满意,则停止表演。
static void Main(string[] args)
{
string answer = “y”;
do
{
Console.WriteLine(“小兰表演了一遍舞蹈!”);
Console.WriteLine(“老师,你满意吗?y/n”);
answer = Console.ReadLine();
}while(answer==”n”);
Console.WriteLine(“表演的不错,可以回去休息了!”);
Console.ReadKey();
}
优势:一般用于先执行,再判断的程序中
缺点:局限性很大
5、switch-case循环
语法:
Switch(表达式)
{
Case值1;语句块1;
Break;
Case值2;语句块2;
Brea;
}
实例:输入一个年份和月份,判断这个月份的天数?
static void Main(string[] args)
{
Console.WriteLine(“请输入年份?”);
int year = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“请输入月份?”);
int month = Convert.ToInt32(Console.ReadLine());
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
Console.WriteLine(“31天”);
break;
case 2:
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
{
Console.WriteLine(“29天!”); //闰年
}
else
{
Console.WriteLine(“28天!”);//不是闰年
}
break;
default:
Console.WriteLine(“30天”);
break;
}
Console.ReadKey();
}
优势:一般只能用于等值比较
缺点:处理范围较小,还容易混乱
6、for循环
语法:
For(表达式1;表达式2;表达式3)
{
循环体;
}
实例:写一个九九乘法表(三角形)
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <=i; j++)
{
Console.Write(“{0}*{1}={2}\t”, i, j, i * j);//”\t”是对齐的作用
}
Console.WriteLine();//换行的作用
}
Console.ReadKey();
优势:一般用于已知循环次数的程序中和比较复杂的循环程序中。
缺点:不适用处理判断范围的程序
总结:其实有很多程序并不是靠单纯某个循环就能完成的,而是各个循环层层嵌套才实现的。所以学习循环的时候,不必拘谨于一种循环,尝试多种循环并用。效果会很好。谢谢大家。
本人才学浅薄,整理错误之处,还望指出,谢谢!