• 顺序结构

    就是从上到下 从左到右 有一定顺序性

    • 选择语句

    有选择效果的代码块 可嵌套
    1.if

    1. bool monsterState true;
    2. if (monsterState==true)
    3. {
    4. Console.WriteLine("攻击");
    5. }

    2.if else

     bool monsterState true;
    if (monsterState==true)
    {
        Console.WriteLine("攻击");
    }
    else
    {
        //不满足if的都进来
        Console.WriteLine("不攻击");
    }
    

    3.if,else if
    如果前面匹配成功后面不执行

    string character;
    if (character=="战士")
    {
        Console.WriteLine("装备刀");
    }
    else if (character=="法师")
    {
        Console.WriteLine("装备法杖");
    }
    else
    {
        //不满足if的都进来
        Console.WriteLine("只有拳头");
    }
    

    4.switch
    类似if else
    1.表达式/变量的值只能是整型、char、布尔、string、枚举
    1.不允许两个case拥有相同的值
    3.case必须对应常量

    switch (character)
    {
        //选择
        case "战士":
            Console.WriteLine("装备刀");
        break;//中断 不加就进入下一个
                case "法师":
                    Console.WriteLine("装备法杖");
                    break;
                default: 
                    Console.WriteLine("只有拳头");
                    break;
            }
    

    专题作业
    1.让用户输入一个月份,判断这个月是哪个季节?假定3到4月是春季,5到8月是夏季,9到10是秋季,11、12、1、2月是冬季。这道题必须用switch-case。
    2.让用户输入小强的语文、数学和英语成绩,输出以下判断是否正确,正确输出true,错误输出false
    a.语文、英语和数学成绩都大于85分;
    b.语文、英语和数学至少有一门大于95分;
    c.语文和英语至少有一门大于90分且数学不低于80分。
    3.使用switch语句完成一个简单的计算器程序,用户输入两个数字,用四则运算符计算结果并显示在控制台上。
    4.请用户输入两次,每次输入一个数字,如果用户输入的第一个数大就输出第一个数,如果用户输入的第二个数大就输出第二个数。
    5.请用户输入一个字符串,根据这个字符串的长度得出如下结果:
    String s = “1234”; 字符串的长度:s.Length
    长度:0-56之间: 输出:短消息
    长度:57-128之间: 输出:一般消息
    长度:129-192之间: 输出:长消息
    长度:193-256之间: 输出:超长消息
    长度:其他情况:长度超过可发送上限
    6.随机产生一个0-5之间的数:(switch)
    随机产生的数:0:输出:进入战斗
    随机产生的数:1:输出:捡到宝箱
    随机产生的数:2:输出:捡到武器
    随机产生的数:3:输出:捡到弹药
    随机产生的数:4:输出:踩到陷阱
    随机产生的数:5:输出:无事件
    7.老师问学生,这道题你会做了吗?如果学生答”会了(y)”,则可以放学.如果学生不会做(n),则老师再讲一遍
    8.提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁并且小于18,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户请查看,否则提示”退出,你放弃查看”。
    9.请用户输入自身的血压值(高压和低压) 请依据下面标准血压 判断出用户的血压是否正常 若正常 显示血压正常 否则显示用户血压不正常
    标准:成人:收缩压:90-140mmHg 舒张压:60-90mmHg
    10.某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

                    //1.让用户输入一个月份,判断这个月是哪个季节?
                    //假定3到4月是春季,5到8月是夏季,9到10是秋季,
                    //11、12、1、2月是冬季。这道题必须用switch-case。
                    //Console.WriteLine($"输入一个月份");
                    //string month = Console.ReadLine();
                    //switch (month)
                    //{
                    //    case "3":
                    //    case "4":
                    //        Console.WriteLine("春");
                    //        break;
                    //    case "5":
                    //    case "6":
                    //    case "7":
                    //    case "8":
                    //        Console.WriteLine("夏");
                    //        break;
                    //    case "9":
                    //    case "10":
                    //        Console.WriteLine("秋");
                    //        break;
                    //    case "11":
                    //    case "12":
                    //    case "1":
                    //    case "2":
                    //        Console.WriteLine("冬");
                    //        break;
                    //    default:
                    //        Console.WriteLine("月份不合法");
                    //        break;
                    //}
                    //2.让用户输入小强的语文、数学和英语成绩,
                    //输出以下判断是否正确,正确输出true,错误输出false
                    //a.语文、英语和数学成绩都大于85分;
                    //b.语文、英语和数学至少有一门大于95分;
                    //c.语文和英语至少有一门大于90分且数学不低于80分。
                    //Console.WriteLine("输入小强的语文、数学和英语成绩");
                    //int chineseScore = int.Parse(Console.ReadLine());
                    //int englishScore = int.Parse(Console.ReadLine());
                    //int mathScore = int.Parse(Console.ReadLine());
                    //if (chineseScore > 85 && englishScore > 85 && mathScore > 85) 
                    //{
                    //    Console.WriteLine("语文、英语和数学成绩都大于85分true");
                    //}
                    //else if (chineseScore > 95 || englishScore > 95 || mathScore > 95)
                    //{
                    //    Console.WriteLine("语文、英语和数学至少有一门大于95分true");
                    //}
                    //else if (chineseScore > 90 || englishScore > 90 && mathScore >= 80)
                    //{
                    //    Console.WriteLine("语文和英语至少有一门大于90分且数学不低于80分true");
                    //}
                    //else
                    //{
                    //    Console.WriteLine("false");
                    //}
                    //bool isOK = false;
                    //if (chineseScore > 85 && englishScore > 85 && mathScore > 85)
                    //    isOK = true;
                    //    Console.WriteLine($"语文、英语和数学成绩都大于85分{isOK}");
                    //if (chineseScore > 95 || englishScore > 95 || mathScore > 95)
                    //    isOK = true;
                    //    Console.WriteLine($"语文、英语和数学至少有一门大于95分{isOK}");
                    //if (chineseScore > 90 || englishScore > 90 && mathScore >= 80)           
                    //    isOK = true;
                    //    Console.WriteLine($"语文和英语至少有一门大于90分且数学不低于80分{isOK}");
    
                    //if(isOK==false)          
                    //    Console.WriteLine($"{isOK}");
    
                    //3.使用switch语句完成一个简单的计算器程序,用户输入两个数字,
                    //用四则运算符计算结果并显示在控制台上。
                    //+-*/
                    //Console.WriteLine("请分别输入两个数");
                    //int first = int.Parse(Console.ReadLine());
                    //int second = int.Parse(Console.ReadLine());
                    //Console.WriteLine("请输入运算符");
                    //string ope = Console.ReadLine();
                    //switch (ope)
                    //{
                    //    case "+":
                    //        Console.WriteLine(first + second);
                    //        break;
                    //    case "-":
                    //        Console.WriteLine(first - second);
                    //        break;
                    //    case "*":
                    //        Console.WriteLine(first * second);
                    //        break;
                    //    case "/":
                    //        Console.WriteLine(first / second);
                    //        break;
                    //}
    
                    //4.请用户输入两次,每次输入一个数字,
                    //如果用户输入的第一个数大就输出第一个数,
                    //如果用户输入的第二个数大就输出第二个数。
                    //Console.WriteLine("请分别输入两个数");
                    //int first = int.Parse(Console.ReadLine());
                    //int second = int.Parse(Console.ReadLine());
                    //Console.WriteLine(first > second ? first : second);
    
                    //5.请用户输入一个字符串,根据这个字符串的长度得出如下结果:
                    //String s = "1234"; 字符串的长度: s.Length
                    //长度:0 - 56之间: 输出:短消息
                    //长度:57 - 128之间: 输出:一般消息
                    //长度:129 - 192之间: 输出:长消息
                    //长度:193 - 256之间: 输出:超长消息
                    //长度:其他情况:长度超过可发送上限
                    //Console.WriteLine("请输入一个字符串");
                    //string first = Console.ReadLine();
                    //if (0 <= first.Length && first.Length <= 56)
                    //    Console.WriteLine("短消息");
                    //else if (57 <= first.Length && first.Length <= 128)
                    //    Console.WriteLine("一般消息");
                    //else if (129 <= first.Length && first.Length <= 192)
                    //    Console.WriteLine("长消息");
                    //else if (193 <= first.Length && first.Length <= 256)
                    //    Console.WriteLine("超长消息");
                    //else
                    //    Console.WriteLine("长度超过可发送上限");
    
                    //6.随机产生一个0 - 5之间的数:(switch)
                    //随机产生的数:0:输出:进入战斗
                    //随机产生的数:1:输出:捡到宝箱
                    //随机产生的数:2:输出:捡到武器
                    //随机产生的数:3:输出:捡到弹药
                    //随机产生的数:4:输出:踩到陷阱
                    //随机产生的数:5:输出:无事件
                    //Random r = new Random();
                    //switch (r.Next(0, 6))
                    //{
                    //    case 0:
                    //        Console.WriteLine("进入战斗");
                    //        break;
                    //    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;
                    //}
    
                    //7.老师问学生,这道题你会做了吗? 如果学生答"会了(y)",则可以放学.
                    //如果学生不会做(n),则老师再讲一遍
                    //Console.WriteLine("这道题你会做了吗?");
                    //string answer = Console.ReadLine();
                    //if (answer == "y" || answer == "会了")
                    //    Console.WriteLine("放学");
                    //else
                    //    Console.WriteLine("再讲一遍");
    
                    //8.提示用户输入年龄,如果大于等于18,则告知用户可以查看,
                    //如果小于10岁,则告知不允许查看,
                    //如果大于等于10岁并且小于18,则提示用户是否继续查看(yes、no),
                    //如果输入的是yes则提示用户请查看,否则提示"退出,你放弃查看"。
                    //Console.WriteLine("请输入年龄");
                    //int age = int.Parse(Console.ReadLine());
                    //if (18 <= age)
                    //    Console.WriteLine("可以查看");
                    //else if (age < 10)
                    //    Console.WriteLine("不允许查看");
                    //else if (18 > age && age > 10)
                    //{
                    //    Console.WriteLine("是否继续查看(yes、no)");
                    //    string answer = Console.ReadLine();
                    //    if (answer == "yes")
                    //        Console.WriteLine("请查看");
                    //    else
                    //        Console.WriteLine("退出,你放弃查看");
                    //}
    
                    //9.请用户输入自身的血压值(高压和低压) 请依据下面标准血压 
                    //判断出用户的血压是否正常 若正常 显示血压正常 
                    //否则显示用户血压不正常
                    //标准:成人:收缩压:90 - 140mmHg 舒张压:60 - 90mmHg
                    //Console.WriteLine("请依次输入自身的血压值(高压和低压)");
                    //int highMmHg = int.Parse(Console.ReadLine());
                    //int lowMmHg = int.Parse(Console.ReadLine());
                    //if (60 <= lowMmHg && lowMmHg <= 90 && 90 <= highMmHg && highMmHg <= 140)
                    //    Console.WriteLine("血压正常");
                    //else
                    //    Console.WriteLine("血压不正常");
    
                    //10.某商店T恤的价格为35元 / 件(2件9折,3件以上8折),
                    //裤子的价格为120元 / 条(2条以上9折).
                    //小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱 ?
                    //int t_shirtNum = 3;
                    //int pantsNum = 2;
                    //float money = 0;
    
                    //if (t_shirtNum == 1)
                    //    money += 35 * t_shirtNum;
                    //else if (t_shirtNum == 2)
                    //    money += 35 * t_shirtNum * 0.9F;
                    //else if (t_shirtNum >= 3)
                    //    money += 35 * t_shirtNum * 0.8F;
    
                    //if (pantsNum == 1)
                    //    money += 120 * pantsNum;
                    //else if (pantsNum >= 2)
                    //    money += 120 * pantsNum * 0.9F;
    
                    //Console.WriteLine($"{money}");
    
    • 循环语句

    1.do while
    先执行后判断 至少一次

    do
    {
        //先执行 在判断循环
        //true就是无线循环
        Console.WriteLine("挂机");
    } while (true);
    
    //求10的阶乘n! = n(n-1)(n-2).....2 * 1
    int n=10;
    int i = 0;
    int sum=1;
    do
    {
        sum *= n - i;
        i++;
    } while (i<n);
    Console.WriteLine(sum);
    

    2.while
    先判断再执行

    while (true)
    {
        Console.WriteLine("挂机");
    }
    
    //求1-100偶数的和
     int i = 0; 
    int sum=0;
    while (i<=100)
    {
        sum += i;
        i += 2;
    }
    Console.WriteLine(sum);
    

    3.for
    这个特别常用

    //i为起始值    i<8 第八个停止 i++自增
    for (int i = 0; i < 8; i++)
    {
        //这个和
        Console.WriteLine($"打第{i}个小怪");
        //Console.WriteLine("打第{0}个小怪",i);
    }
    
    //1.计算1-1000的和
    //int num = 0;
    //for (int i = 1; i <= 1000; i++)
    //{
    //    num += i;
    //}
    //Console.WriteLine(num);
    
    //(首项+末项)*项数/2
    //Console.WriteLine((1+1000)*1000*0.5F);
    
    //2.打印如下
    
    //**
    //****
    //******     
    //for (int i = 0; i <= 3; i++)//列
    //{
    //    //根据行的规则打印列
    //    for (int j = 0; j < i * 2+1; j++)//行    
    //    {
    //        Console.Write("*");
    //    }
    //    Console.WriteLine();
    //}
    
    //3.打印如下
    //*
    //***
    //*****
    //*******
    //for (int i = 0; i <= 3; i++)//列
    //{
    //    //根据行的规则打印列
    //    for (int j = 0; j < i * 2 + 1; j++)//行    
    //    {
    //        Console.Write("*");
    //    }
    //    Console.WriteLine();
    //}
    
    • 中断循环

    break: 退出当前循环 在循环或分支语句中,遇到break会立即退出并结束当前循环\分支
    continue:立即执行下一次循环 在循环中,遇到continue会立即执行下一次循环,后续语句会被忽略

    for (int i = 0; i < 8; i++)
    {
        if (i == 5) break;
        Console.WriteLine($"打第{i}个小怪");
    }
    
    for (int i = 0; i < 8; i++)
    {
        if (i == 5) continue;
        Console.WriteLine($"打第{i}个小怪");
    }
    
    //计算并输出100以内的所有素数(质数)。
    //素数:按照素数的定义,在大于1的自然数中,除了1和它自身以外,不能被其它数整除的数即为素数。
    for (int i = 1; i < 100; i++)
    {
        int j = 0;
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
                break;
        }
        if(i==j)
            Console.WriteLine(i);
    }
    //计算并输出100以内的所有合数
    //合数:指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数
    for (int i = 1; i < 100; i++)
    {
        int j = 0;
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                Console.WriteLine(i);
                break;
            }                     
        }                     
    }
    
    • 练习题目

    1.当变量x的值在[1,100]范围内时,下面的C#表达式返回值为“真”的是( )。
    (A)1<=x<=100
    (B)x>=1 || x<=100
    (C)x>1 && x<100
    (D)x>=1 && x<=100
    2.下面的C#表达式中,描述了数学关系x≥y≥z的是( )。
    (A)(x>=y) AND (y>=z)
    (B)(x>=y) && (y>=z)
    (C)(x>=y>=z)
    (D)(x>=y) & (y>=z)
    3.当变量x的值在[1,10]或[200,210]范围内时,下列C#表达式返回值为“真”的是( )。
    (A)(x>=1) && (x<=10) && (x> = 200) && (x<=210)
    (B)(x>=1) || (x<=10) || (x>=200) || (x<=210)
    (C)(x>=1) && (x<=10) || (x>= 200) && (x<=210)
    (D)(x>=1) || (x< =10) && (x> = 200) || (x<=210)
    4.设有C#语句:int a=5,b=4;,则下列表示条件的表达式中值为“假”的是( )。
    (A)(a>b)&&(b>0&&a>0)
    (B)(b>=0)&&(a<=b ? a+b:a-b)>0
    (C)a>0 && !(b>0)
    (D)(a<=0)||(a%b>0)
    5.执行C#语句序列:for (i = 0; i < 4; i++) 后,变量i的值是( )。
    (A)5 (B)4 (C)1 (D)0
    填空题
    1.
    程序设计中,一般用逻辑(与)运算表示某个数据对象的值(),而用逻辑(或)运算表示某个数据对象的值()。
    2.
    C#语言中规定:在包含了if语句嵌套结构的程序中,else子句与在它前面距它最近的且()if配对。
    3.
    C#应用程序中,在一个循环结构的循环体内又包含另外一个(),称为循环的 嵌套。
    4.
    break语句是一条限定转移语句,只能在()使用。
    5.
    continue语句是一条限定转移语句,只能在()使用。
    选项:
    (A)完整的循环结构
    (B)尚未匹配的
    (C)是否在给定范围之内
    (D)switch语句结构和循环结构中
    (E)完整的for结构
    (F)if结构或者while结构中
    (G)已经配对的
    (H)while结构中
    (I)是否在给定范围之外
    (J)循环结构的循环体中
    编程:
    (1)在窗体上输出100~500之间的所有奇数,并计算它们的和。
    (2)在窗体上输出100~200之间不能被3整除的所有数。
    (3)统计1~1000之内既能被5整除,也能被7整除的数的个数。
    (4)从300开始,找出连续100个既能被3整数又能被5整除的数。
    (5)计算s = 1! + 2! + 3! + …+ n! (其中n是用户输入的正整数)。
    (6)计算出不大于1000 的10个最大的素数。

    • 作业

    必做任务:
    任务1:
    让用户输入小茗的语文和数学成绩,输出以下判断是否正确,正确输出true,错误输出false
    a、小茗的语文和数学成绩都大于90分;
    b、语文和数学有一门是大于90分的。
    任务2:
    要求用户输入两个数a、b,如果 a 被 b 整除或者a加b大于100,则输出a的值,否则输出 b 的值。
    任务3:
    让用户输入学员的成绩,然后输出学员的结业考试成绩评测结果。
    成绩 >=90 : A
    90> 成绩 >=80 : B
    80> 成绩 >=70 : C
    70> 成绩 >=60 : D
    成绩 <60 : E
    任务4:
    提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“88888”,则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,如果用户名是admin则提示密码错误。
    任务5:
    提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“88888”,则提示正确,否则,提示用户“用户名或者密码错误”,但如果错误达到3次,则提示用户”您的账户已被冻结”,退出程序。
    任务6:
    求1-100间的所有奇数和。
    任务7:
    求1-100间的所有能被3整除的数的和。
    任务8:
    编程实现如下图列出的图形。

    **

    *
    *
    任务9:
    让用户输入一个数显示下面内容。
    *
    **
    *
    *




    任务10:
    编程实现如下图列出的图形。

    *

    *
    *
    任务11:
    编程实现如下图列出的图形。

    **

    *
    *
    *
    **

    任务12:
    鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?
    任务13:
    玩家进来以后要买筹码;
    在每次掷骰子前,
    要下注(50~手里剩余的筹码);
    接着要选择买大小;
    程序要模仿掷骰子,产生一个1~6的随机数
    根据掷骰子的结果,判断玩家的输赢,改变玩家的手里的筹码
    如果买大,4~6是赢,1~3是输
    如果小,1~3是赢,4~6是输
    如果赢了,玩家的筹码+=下注金额
    如果输了,玩家的筹码-=下注金额
    提示玩家是否要退出游戏
    玩家手里的筹码小于最小下注金额,要强制玩家退出
    注意 :先理清楚思路,从宏观上考虑流程,不要考虑每个步骤的细节。流程搞清楚以后,再琢磨每个步骤的细节。然后写代码。
    可选任务:
    1.一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几?
    2.在400—500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少?
    3.有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?
    4.编程求一个四位自然数ABCD,它乘以A后变成DCBA
    5.编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和.
    6.某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这 个自然数.
    7.有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来
    8.一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.
    9.把123456789这个数乘以一个什么数,能使它的结果不但不含零,而且仍然是 由1,2,3,4,5,6,7,8,9这九个数字组成的,只是顺序不同而已.
    10.验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.
    11.今有四个人,他们得年龄各不相同,他们年龄总和是129,而其中有三个人的年龄是平方数,若倒退15年,这四人中仍有三个人的年龄是平方数,求他们各自的年龄
    12.如果两个素数之差为2,这样的两个素数就叫作”孪生数”,找出100以内的所有”孪生数”.