c#入门之循环语句使用详解(for循环、do/while)

 更新时间:2014年04月15日 11:12:42   作者:  
这篇文章主要介绍了c#入门之循环语句使用详解,有for循环和do/while的示例,需要的朋友可以参考下

记得第一次学编程的时候,就听说过一句话:“新手学习和掌握一门编程语言是很容易的,但是如果你学会了某种编程语言,再去学习新的语言,就很难掌握了”,现在深深地感受到了这方面的阻力。

其实流程控制、循环,包括面向对象这些知识,基本所有语言都是相通的,唯一的区别就在于书写时的格式、规范不一致。而这些方面的差异,又是比较细微的,所以往往在学的时候依靠经验能很快理解,但过后却发现并未能使(掌)用(握)。

do / while

循环的意义,其实就是重复执行语句,当然,还会有相应的条件判断,不然就成死循环了。do循环其实和while循环的区别:do循环会先执行一次循环体,才继续判断;而while循环会先判断,再决定是否执行循环体:

复制代码 代码如下:

double benJ, liV, muB, liX;
int needY = 0;
Console.WriteLine("请输入您的存款数额:");
benJ = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入存款利率:");
// +1,计算后的结果则为本金+利息,如只需要利息,则去掉+1。学好数学很重要啊
liX = Convert.ToDouble(Console.ReadLine()) / 100.0;
liV = 1 + liX;
liX = benJ * liX;
Console.WriteLine("请输入预期收益额:");
do
{
    muB = Convert.ToDouble(Console.ReadLine());
    if (muB <= benJ)
    {
        Console.WriteLine("预期收益额低于本金,请输入高于本金的收益额:");
    }
} while (muB <= benJ);
while (benJ < muB)
{
    benJ *= liV;
    ++needY;
}
Console.WriteLine("每年利息 {3},存入 {0} year{4},您的本金和利息之和 {1} 能够达到预期的目标 {2}。", needY, benJ, muB, liX, needY > 1 ? "s" : "");
if (needY == 0) Console.WriteLine("高起点,低目标,其实,您根本没必要存款到银行~");
Console.ReadKey();

这儿遇到个很不错的do循环的应用场景:使用do循环判断用户输入的内容是否满足条件,如果没有,则重复执行,直到满足条件才退出循环(do循环的while结尾处需要添加 ; 号)。示例还应用了前面学习的三元运算符 ? ,根据条件判断结果,格式前面的字符串。

for

for循环比较适合于指定次数的应用,在使用时,需初始化一个作为计数器的变量值(可放在for语句中声明,但在循环体外就不能访问该计数器变量了):

复制代码 代码如下:

for (int i = 1; i <= 10; i++)
{
    Console.WriteLine("{0}", i);
}

声明了for的计数器变量后,使用 ; 号隔开,接着添加条件判断的表达式(应涉及计数器变量) i <= 10,继续使用 ; 号隔开,添加对计数器变量的操作 i++(不用 ; 号结尾)。尝试把i++去掉,放在循环体内,也是可行的。

书上举了一个例子,用for循环打印出mandelbrot集,呵呵,虽然看懂代码的逻辑结构了,但是算法完全看不懂,就不贴上来了。不过,还是延伸阅读了一下mandelbrot集的创始人:本华·曼德博,以及一个数学构造:碎形(fractal)。花了点时间阅读了一些资料,感谢前人,致敬。

当然,示例的重要性不言而喻,试着回想当年学basic写的《九九乘法表》,在C#中简单做了一个。原理是相同的,主要注意细节:

复制代码 代码如下:

int i, k;
for(i = 1; i < 10; i++)
{
    Console.Write("{0}: ", i);
    for(k = 1;k <= i; k++)
    {
        Console.Write("{0}x{1}={2} " ,k, i, i * k);
    }
    Console.WriteLine("\n");
}
Console.ReadKey();

这种for循环嵌套的方式,在实现横、纵向循环(输出、控制)是很有用的,之前在做excel VBA的时候,经常会用到。

循环的中断
以前一直没记住,倒底是该用break还是用continue,不过下面这个例子,倒是很形象地描述清楚了:

复制代码 代码如下:

int i = 1;
while (i <= 10)
{
    if (i == 6)
        break;
    Console.WriteLine("{0}", i++);
}
for (i = 1; i <= 10; i++)
{
    if ( i % 2 == 0)
        continue;
    Console.WriteLine("{0}",i);
}
Console.ReadKey();

其实两个都可以叫中断,只不过:break是中断当前的循环体(退出循环体),而continue是中断循环体的当次循环(不会退出循环体)。

相关文章

  • C#的File类实现文件操作实例详解

    C#的File类实现文件操作实例详解

    这篇文章主要介绍了C#的File类实现文件操作的方法,非常实用,需要的朋友可以参考下
    2014-07-07
  • c#计算某段代码的执行时间实例方法

    c#计算某段代码的执行时间实例方法

    在本篇文章里我们给大家整理了关于c#计算某段代码的执行时间的方法和经验,有兴趣的朋友们学习下。
    2019-02-02
  • C#中TransactionScope的使用小结

    C#中TransactionScope的使用小结

    本篇文章主要是对C#中TransactionScope的使用方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • C#利用GDI+给图片添加文字(文字自适应矩形区域)

    C#利用GDI+给图片添加文字(文字自适应矩形区域)

    这篇文章主要给大家介绍了关于C#利用GDI+给图片添加文字(文字自适应矩形区域)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2018-04-04
  • C#实现上位机与欧姆龙PLC通讯(FINS)

    C#实现上位机与欧姆龙PLC通讯(FINS)

    这篇文章主要介绍了C#实现上位机与欧姆龙PLC通讯(FINS)方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • C#读取文本文件到listbox组件的方法

    C#读取文本文件到listbox组件的方法

    这篇文章主要介绍了C#读取文本文件到listbox组件的方法,涉及C#操作文本文件及listbox组件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C#利用WebClient实现两种方式下载文件

    C#利用WebClient实现两种方式下载文件

    本篇文章主要介绍了C#利用WebClient 两种方式下载文件,详细的介绍了两种方式,非常具有实用价值,需要的朋友可以参考下。
    2017-02-02
  • C#实现简单的计算器功能

    C#实现简单的计算器功能

    这篇文章主要为大家详细介绍了C#实现简单的计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 使用C#实现一个简单的绘图工具

    使用C#实现一个简单的绘图工具

    这篇文章主要为大家详细介绍了如何使用C#开发的简单绘图工具,可以将签名简单绘图后的效果以图片的形式导出,有需要的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)

    C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)

    这篇文章主要介绍了C#操作SQLite数据库方法,包括针对SQLite数据库的创建,连接,插入,查询,删除等操作,并提供了一个SQLite的封装类,需要的朋友可以参考下
    2016-07-07

最新评论