C#流程控制详解

目录
  • 流程控制语句分类
    • 1、if语句
    • 2、switch
    • 3、三位运算符
    • 4、迭代语句之while语句
      • 4.1 迭代语句概述
      • 4.2 while语句
    • 5、迭代语句之do……while
    • 6、迭代语句之for循环语句
    • 7、迭代语句之foreach
    • 8、跳转语句之break语句
    • 9、continue语句
    • 10、跳转语句之return
    • 11、跳转语句之goto
    • 12、任务实施

流程控制语句分类

  • 分支语句: if语句和switch语句
  • 迭代语句
  • 跳转语句

1、if语句

if (判断条件表达式){ 表达式结果为true时执行}else{表达式结果为false时执行}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace if语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //判断a变量与10的关系
            Console.WriteLine("请输入你要比较的第一个数字");
            int a=Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入你要比较的第而个数字");
            //int.parse 用于将屏幕输入的语句转换为整型
            int b = int.Parse(Console.ReadLine());
            if (a < b)
            {
                Console.WriteLine("您输入的第一个数字{0}小于第二个数字{1}", a,b);
            }
            else if (a == b)
            {
                Console.WriteLine("您输入的第一个数字{0}等于第二个数字{1}", a,b);
            }
            else {
                Console.WriteLine("您输入的第一个数字{0}大于第二个数字{1}", a,b);
            }
            Console.ReadKey();
        }
    }
}

2、switch

输入1显示为星期一,依次类推

swithc(条件表达式){
case 常量表达式:条件语句;
case 常量表达式:条件语句;
case 常量表达式:条件语句;
default:条件表达式
}

控件无法从最终用例标签(XX)脱离开关——程序无法判定为结束,所以必须加一个break;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace switch控制语句
{
    class Program
    {
        static void Main(string[] args)
        {
            // 输入一显示星期一,一次类推
            Console.WriteLine("请输入1-7的数字");
            int week = int.Parse(Console.ReadLine());
            switch (week) {
                case 1: Console.WriteLine("星期一"); break;  //结束当前代码体
                case 2: Console.WriteLine("星期二"); break;
                case 3: Console.WriteLine("星期三"); break;
                case 4: Console.WriteLine("星期四"); break;
                case 5: Console.WriteLine("星期五"); break;
                case 6: Console.WriteLine("星期六"); break;
                case 7: Console.WriteLine("星期日"); break;
                default: Console.WriteLine("您输入的数据错误"); break; //超出规定值设置相应提示
            }
            Console.ReadKey();

            //判断2020年每个月的天数, 1,3,5,7,8,10,12为31天,4,6,9,11位30天,二月29天
            Console.WriteLine("请输月份数");
            int month = int.Parse(Console.ReadLine());
            switch (month)
            {

                case 2: Console.WriteLine("您输入的{0}月份有28天",month); break;
                case 4:
                case 6:
                case 9:
                case 11:
                    Console.WriteLine("您输入的{0}月份有30天",month); break;
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    Console.WriteLine("您输入的{0}月份有31天", month); break;
                default: Console.WriteLine("您输入的{0}月份错误", month); break;
            }
            Console.ReadKey();
        }
    }
}

3、三位运算符

条件判断表达式?成立是执行的语句:不成立时执行的语句
三元运算符适用条件:只使用与判断具有两个结果的情况

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 三位运算符
{
    class Program
    {
        static void Main(string[] args)
        {
            // 判断输入述职与10的关系(<10 提示小于10, >=10提示大于等于10)
            Console.WriteLine("请输入您要比较的数据");
            int number = int.Parse(Console.ReadLine());
            //Console.WriteLine(number < 10 ? Console.WriteLine("小于10") : Console.WriteLine("大于等于10") );
            Console.WriteLine(number < 10 ? "小于10" : "大于等于10");
            Console.ReadKey();
        }
    }
}

4、迭代语句之while语句

4.1 迭代语句概述

迭代语句时程序中重复的执行,直到满足指定以条件才停止的一段代码。当用户想重复执行某些语句时,可依据当前不同的任务,

选择不同的循环依据使用,分别是:

  • while语句
  • do……while语句
  • for语句
  • foreach语句

4.2 while语句

while(条件表达式){
代码语句
}
while语句当条件满足时才执行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace while语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //输出1-50的数字到屏幕上
            int a = 1;
            while (a<=50){

                Console.WriteLine(a);
                a++;

            }
            Console.ReadKey();
        }
    }
}

5、迭代语句之do……while

do{
循环体语句
}while();
do……while语句至少执行一次,即使条件不成立也会执行一次

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace do__while
{
    class Program
    {
        static void Main(string[] args)
        {
            //输出1-50的数字到屏幕上
            int num = 0;
            do {
                num++;
                Console.WriteLine(num);

            } while (num < 50);
            // 计算现金存入银行多长时间才可以答案到我们的预期收益(均按一年期定期存款,到期后自动转存)
            // 分析题目需要的变量  :本金, 目标收益,利率  时间(年)
            // 一年的收益: 本金*(1+利率)*1年
            double Balace = 0;
            double Rate = 0;
            int Year = 0;
            double TargetBalace = 0;
            Console.WriteLine("请输入您的本金");
            Balace = double.Parse(Console.ReadLine());
            Console.WriteLine("请输入您的当前利率百分比");
            Rate = double.Parse(Console.ReadLine())/100;
            Console.WriteLine("请输入您的目标收益");
            do {
                TargetBalace = double.Parse(Console.ReadLine());
                if (TargetBalace<Balace) {
                    Console.WriteLine("恭喜您现在已经拥有了{0}元,请输入一个更大的目标",TargetBalace);
                }
            } while (TargetBalace<Balace);
            do
            {
                Balace *= (Rate + 1);
                Year++;
            } while (Balace < TargetBalace);
            Console.WriteLine("您将在{0}年内,获得{1}元的收益",Year,Balace);
            Console.ReadKey();
        }
    }
}

6、迭代语句之for循环语句

for循环可以循环次数的限定,并维护自己的计时器;
有时候我们会省略初始条件,判断条件,循环条件,但两个分号不能省略

for(初始条件;判断条件;循环条件){
循环语句
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace for循环语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //求输入数据的阶乘
            // 1!=1  2!=2x1;  3!=3x2x1
            Console.WriteLine("请输入你要计算的阶乘数");

            for (;;) {
            int num = int.Parse(Console.ReadLine());
            int result = 1;
            for (int i=num; i!=0; i--) {
                result *= i;

            };
            Console.WriteLine("{0}的阶乘结果是{1}", num, result);
            };
            //Console.ReadKey();

        }
    }
}

for循环嵌套(九九乘法表)
循环嵌套就是一个循环中嵌套着另一个循环
使用for循环时,一般在for循环语句进行声明循环计数次的变量

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace for循环语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //九九乘法表
            Console.WriteLine("==================九九乘法口诀=========================");
            for (int i = 1; i < 10; i++) {
                for (int j=1; j<= i; j++) {
                    Console.Write("{0}X{1}={2}\t", j, i, j * i);
                }
                Console.WriteLine();
            }
            Console.ReadKey();

        }
    }
}

7、迭代语句之foreach

foreach提供了一个for语句的捷径,而且还存进了集合类更为一致

foreach(类型;变量;in 集合){
代码体
}

string类型(字符串)可以看成是char类型(字符)的一个集合
char.IsWhiteSpace© 判断字符是不是空格
foreach每执行一内含代码,循环变量就会一次读取集合中的一个元素,向当时循环便利
此处循环变量只是一个只读型的局部变量,这个值如果被修改编译会报错

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @foreach
{
    class Program
    {
        static void Main(string[] args)
        {
            //将语句识别为单词,并逐行输出
            //语句用string类型,字母用char
            Console.WriteLine("请输入一句英文语句");
            string sentence = Console.ReadLine();
            foreach (char word in sentence)
            {
                if (char.IsWhiteSpace(word))
                {
                    Console.WriteLine();
                }
                else
                {
                    Console.Write(word);
                    //word='t';  //foreach语句的迭代变量不允许重新赋值
                }
            }
            Console.ReadLine();

        }
    }
}

8、跳转语句之break语句

跳转语句是程序运行到某一位置时,可以跳转到程序中另一行代码的语句

  • break:1)switch语句中用于从case语句中跳出,结束switch分支语句。2)用于跳出迭代语句结束当前训话
  • continute语句
  • goto语句
  • return语句

通过迭代语句,准备输出1~500这500个数,每行输出10个数。当输出的值同时是2、3、4、5、6】7的倍数是,跳出for迭代语句。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace break语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //通过迭代语句,准备输出1~500这500个数,每行输出10个数。当输出的值同时是2、3、4、5、6、7的倍数是,跳出for迭代语句。
            Console.WriteLine("输出1~500这500个数,每行输出10个数");
            for (int i=1;i<501;i++) {
                if (i % 2 == 0 && i % 3 == 0 && i % 4 == 0 && i % 5 == 0 && i % 6 == 0 && i % 7 == 0) {
                    Console.WriteLine();
                    Console.WriteLine("2、3、4、5、6、7的最小公倍数倍数是"+i);

                    break;
                }
                if (i % 10 == 0)
                {
                    Console.WriteLine(i);
                }
                else Console.Write(i + "\t");
            }
            Console.ReadKey();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace break语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //通过迭代语句,准备输出1~500这500个数,每行输出10个数。当输出的值同时是2、3、4、5、6、7的倍数是,跳出for迭代语句。
            Console.WriteLine("输出1~500这500个数,每行输出10个数");
            for (int i=1;i<501;i++) {
                if (i % 2 == 0 && i % 3 == 0 && i % 4 == 0 && i % 5 == 0 && i % 6 == 0 && i % 7 == 0) break;
                //{
                //    Console.WriteLine();
                //    Console.WriteLine("2、3、4、5、6、7的最小公倍数倍数是"+i);

                //    break;
                //}
                if (i % 10 == 0)
                {
                    Console.WriteLine(i);
                }
                else Console.Write(i + "\t");
            }
            Console.ReadKey();
        }
    }
}

9、continue语句

用于停止当前的迭代语句,结束本次循环,进入下一次循环(本次循环中continue后面的语句不执行)。breack是直接结束循环
只能用于迭代语句中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace continute语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //实现50以内的奇数输出,利用continue
            Console.WriteLine("请输入一个数,会自动显示小于次数的所有奇数");
            int num = int.Parse(Console.ReadLine());
            for (int i = 1; i < num+1; i++)
            {
                if (i % 2 == 0) continue;  //满足条件时跳出此次循环,进入下一个循环;且本次循环continute后的语句不执行
                Console.WriteLine(i);

            }
            Console.ReadLine();
        }
    }
}

10、跳转语句之return

return语句使用时,一般有两种格式:1)return; 2)return 表达式;
return语句只能出现在方法当中,当调佣方法时,执行到return语句时;直接跳转到main()函数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace continute语句
{
    class Program
    {
        static void Main(string[] args)
        {
            //实现50以内的奇数输出,利用continue
            Console.WriteLine("请输入一个数,会自动显示小于次数的所有奇数");
            int num = int.Parse(Console.ReadLine());
            for (int i = 1; i < num+1; i++)
            {
                if (i % 2 == 0) continue;  //满足条件时跳出此次循环,进入下一个循环;且本次循环continute后的语句不执行
                Console.WriteLine(i);

            }
            Console.ReadLine();
        }
    }
}

使用方法实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace @return
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入三个整数,按回车键确认每个数的输入");
            int a = int.Parse(Console.ReadLine());
            int b = int.Parse(Console.ReadLine());
            int c = int.Parse(Console.ReadLine());
            //double averageresult = (a + b + c) / 3;
            double averageresult = average(a,b,c);
            Console.WriteLine("您输入的三个数{0}、{1}、{2}的平均数是{3}",a,b,c, averageresult);
            Console.ReadKey();
        }

        static double average(int a, int b, int c) {
            return (a + b + c) / 3;
        }
    }
}

11、跳转语句之goto

格式:goto 标标识符;
标识符标识程序位置的方法
标识方法——标识符+“:”

作用:当程序执行到goto语句时,程序会直接跳转到标识符所表示的程序位置。继续执行
goto的使用会使代码的易读性下降,在编写程序的时候尽量少用goto语句

任务:利用goto语句实现选择题:

5!=?
1、5!=5
2、5!=10
3、5!=20
4、5!=60

如果选择真确,提示:恭喜你,答对了!
如果选择错误,提示:很遗憾,你答错了
如果选择的选项不是1、2、3、4,提示:你所选的选项不存在

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace goto语句
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            Console.WriteLine("请选择5的阶乘正确答案,输入选项编号回车键确认");
            Console.WriteLine("1. 5!=5\n2. 5!=10\n3. 5!=20\n4. 5!=60\n");

        error:
            {
                a++;  //第一次执行时 a=1;因此不执行,当goto跳转到此语句时,再次自加1,a=2此时执行下面语句
                if (a > 1) Console.WriteLine("很遗憾,您打错了,请重新输入答案");  // 加入a判断条件原因是,避免在第一次执行是输出此提示
            }
        input:  int result = int.Parse(Console.ReadLine());

            switch (result) {
                case 1:
                case 2:
                case 3: goto error;
                case 4: goto right;
                default:
                    Console.WriteLine("您的选项{0}不存在,请重新输入",result);
                    goto input;
            }
        right:
            {
                Console.WriteLine("恭喜你答对了!");
            }
            Console.ReadKey();

        }
    }
}

12、任务实施

接受a\b\c三个整数,然后输出三个数中居中的那个数,并输出其阶乘

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 任务实施
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入三个整数");
            int a = Convert.ToInt32(Console.ReadLine());
            int b = Convert.ToInt32(Console.ReadLine());
            int c = Convert.ToInt32(Console.ReadLine());
            //判断中间变量
            ///如果a是中间值,那么有两种情况,b是最大值或b是最小值
            int temp = 0;
            int jc = 1;
            if ((a>=b && a<=c) || (a>=c && a<=b)) {
                Console.WriteLine(a + "是中间值");
                temp = a;
                Console.WriteLine("错误");
            }
            if (b >= a && b <= c || b >= c && b <= a)
            {
                Console.WriteLine(b + "是中间值");
                temp = b;
            }
            if (c >= a && c <= b || c >= b && c <= a)
            {
                Console.WriteLine(c + "是中间值");
                temp = c;
            }
            for (int i = 1; i < b+1; i++)
            {
                jc *= i;
            }
            Console.WriteLine("中间数{0}阶乘结果是{1}",temp,jc);
            Console.ReadKey();
        }
    }
}

到此这篇关于C#流程控制详解的文章就介绍到这了,更多相关C#流程控制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#编程自学之流程控制语句

    在前面的文章中我们不难看出来,我们程序的执行顺序是从上到下顺序执行的,那么有时候我们需要程序在某个条件成立时,执行指定的代码片段,那么怎么样来控制这样流程呢?这个就是我们今天这篇文章所需要讨论的.那么开始吧! 一.if esle 语句 1.关系型运算符 说到分支语句必定会牵扯到条件,例如当满足一个条件的时候去执行指定的代码段,那么如何构建条件?这个时候我们就需要先了解一下运算符中的<关系型运算符>!请看下表: 看完表格后我们来介绍下什么是关系型运算符,关系型运算符就是对我们程序中的数据进行比较

  • 解析C#中断言与异常的应用方式及异常处理的流程控制

    断言与异常(Assertion Vs Exception) 在日常编程实践中,断言与异常的界限不是很明显,这也使得它们常常没有被正确的使用.我也在不断的与这个模糊的怪兽搏斗,仅写此文和大家分享一下我的个人看法.我想我们还可以从很多角度来区别断言和异常的使用场景,欢迎大家的意见和建议. 异常的使用场景:用于捕获外部的可能错误 断言的使用场景:用于捕获内部的不可能错误 我们可以先仔细分析一下我们在.net中已经存在的异常. System.IO.FileLoadException SqlExcepti

  • Python中的流程控制详解

    流程控制无非就是if else之类的控制语句,今天我们来看一下Python中的流程控制会有什么不太一样的地方. while语句 python中的while语句和其他语言没有什么不一样,我使用while语句来编写一个斐波拉赫数列: In [56]: while x < 10 : ...: print(x) ...: x, y = y, x+y ...: 0 1 1 2 3 5 8 if 语句 python中的 if 可以和 elif 或者 else 配合使用: >>> x = int

  • C#流程控制详解

    目录 流程控制语句分类 1.if语句 2.switch 3.三位运算符 4.迭代语句之while语句 4.1 迭代语句概述 4.2 while语句 5.迭代语句之do……while 6.迭代语句之for循环语句 7.迭代语句之foreach 8.跳转语句之break语句 9.continue语句 10.跳转语句之return 11.跳转语句之goto 12.任务实施 流程控制语句分类 分支语句: if语句和switch语句 迭代语句 跳转语句 1.if语句 if (判断条件表达式){ 表达式结果

  • Go语言实战学习之流程控制详解

    目录 1. 前言 2. if分支 3. for及for-range循环 4. switch-case-fallthrough分支 5. goto 6. break和continue 7. 跳出嵌套循环 8. 最后 1. 前言 这里还是再总结一下流程控制,和其它语言相比做了一些优化,比如相比c增加了迭代器类型的for循环,switch针对c中容易出问题的地方做了一些修改,避免出现缺少break时存在的常见问题,此外,和Java类似也存在跳出循环和多层嵌套的方法,C中容易造成使用不当的goto也同样

  • Javascript基础:运算符与流程控制详解

    目录 1. 运算符(操作符) 1.1 算数运算符 1.2 递增和递减运算符 1.3 比较运算符 1.4 逻辑运算符 1.5 赋值运算符 1.6 运算符优先级 2. 流程控制 2.1 if 的语法结构 2.2 if else双分支语句 2.3 if else if语句(多选1) 2.4 三元表达式 2.5 switch分支流程控制 总结 1. 运算符(操作符) 「运算符」是用于实现赋值.比较和执行算数运算等功能的符号.常用运算符分类如下 算数运算符 递增和递减运算符 比较运算符 逻辑运算符 赋值运

  • python学习 流程控制语句详解

    ###################### 分支语句 python3.5 ################ #代码的缩进格式很重要 建议4个空格来控制 #根据逻辑值(True,Flase)判断程序的运行方向 # Ture:表示非空的量(String,tuple元组 .list.set.dictonary),所有非零的数字 # False:0,None .空的量 #逻辑表达式 可以包含 逻辑运算符 and or not if: ##################################

  • 关于多线程常用方法以及对锁的控制(详解)

    1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据.注意该方法要捕获异常 比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完成后,低优先级的线程才能执行:但当高优先级的线程sleep(5000)后,低优先级就有机会执行了. 总之

  • Python流程控制语句详解

    目录 1.if判断 1.1 if语句 1.2 else语句 1.3 elif语句 2.循环 2.1 while循环 2.2 for循环 2.3 break和continue语句 3.其他 1.if判断 1.1 if语句 if 表达式: 语句1 语句2 …… 1.“if”后的条件测试不止支持布尔型,也可以使用数字. 2.如果条件测试的内容是字符串,则只有字符串是空字符串时,条件测试的结果才为“False”. 3.不仅仅是字符串,条件测试中空列表.空元组.空字典也是“False”. 4.当if条件为

  • Linux进程控制详解及实例

    Linux进程控制详解及实例 常用函数: fork() 通过复制调用进程来建立新的进程,是最基本的进程建立操作. exec   包括一系列的系统调用,其中每个系统调用都完成相同的功能,即通过用一个新的程序覆盖原内存空间,来实现进程的转变.各种exec系统调用之间的区别仅在于它们的参数构造不同. wait() 它提供了初级的进程同步措施,能使一个进程等待,直到另一个进程结束为止. exit()  常用来终止一个进程的运行. 进程的建立 如果fork()调用成功,就会使内核建立一个新的进程,所建的新

  • Python入门_条件控制(详解)

    条件控制其实就是if...else...(如果...条件是成立的,就做...:反之,就做...)的使用,其基本结构是: 具体看下面这个例子: def account_login(): # 定义函数 password = input('请输入密码:') # 输入密码 if password == '12345': # 如果输入密码是12345,则登录成功 print('登录成功') else: print('密码有误,请重新输入') # 否则提示密码有误,请重新输入 account_login()

  • ThinkPHP实现微信支付(jsapi支付)流程教程详解

    之前写过一篇文章讲了PHP实现微信支付(jsapi支付)流程 ,详见文章:PHP实现微信支付(jsapi支付)流程. 当时的环境是没有使用框架的,直接在一个域名指向的目录下边新建目录之后访问该目录实现的,但应用到框架中,还是有一些问题,在ThinkPHP中,由于路由规则与支付授权目录有出入,所以会报错.本篇讲讲在TP中集成微信支付的流程. 鹅厂出的SDK和文档,就是让你看不懂,使劲绕,这酸爽用了就知道.文档和SDK不是应该越简单通俗易懂越好么?难道只有使劲重构才能显示出鹅厂程序猿技术的高超咩?额

随机推荐