C# 流程控制语句

一 结构化程序设计的三种基本流程

1 顺序 分支 循环

在这里插入图片描述

2 简单语句

最简单的语句:方法调用语句及赋值语句
后面有个分号
如:

System.Console.Write("Hello World");
b=a>0?a:-a;
s=TextBox1.Text;
d=int.Parse(s);

注意:没有表达式语句一说
2+3;不能称为一个语句;

3 分支语句

if(条件表达式)
语句块
else
语句块

3 示例

LeapYear.cs

if((year%4==0&&year%100!=0)||(year%400==0))
   Console.WriteLine(year+"是润年");
 else
   Console.WriteLine(year+"不是闰年");

小技巧
注意书写格式,特别是缩进;
将后面的花括号去掉,再重新输一下,就会自动排版;
也可以按Ctrl+E+D(格式文档)
或 Ctrl+E+F(格式化选中部分)

屏幕保护源代码:
Winform窗体无边框属性 Font->FormBorderStyle改位None,WindowState 改为Maximized;
添加timer label 控件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 屏幕保护
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int deltX = 10;
        int deltY = 8;

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            Application.Exit();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            this.label1.Left += deltX;
            this.label1.Top += deltY;
            if (this.label1.Top < 0 ||
                this.label1.Top + this.label1.Height > this.Height)
                deltY = -deltY;
            if (this.label1.Left < 0 ||
                this.label1.Left + this.label1.Width > this.Width)
                deltX = -deltX;
        }
    }
}

二 多分支语句-----switch语句

switch (exp)
{
    case const1:
    statement1;
    break;
    case const2:
    statement2;
    brek;
    .....
    case constN:
    statementN;
    break;
    default:
    statement_dafault;
    break;
}

Switch 语句与C++不同之处
① 变量处理整型、枚举型、还可以用字符串;
② 不能随便贯穿,必须有break;(除非几个case连起来,中间没有别的语句);

出题判分:button、label、textBox、listBox控件组成
在这里插入图片描述

源代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 自动出题并判分
{
    public partial class Form1 : Form
    {
        int a, b;
        string op;
        int result;

        Random rnd = new Random();
        /// <summary>
        /// 出题
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            a = rnd.Next(9) + 1;
            b = rnd.Next(9) + 1;
            int c = rnd.Next(4);
            switch(c)
            {
                case 0:op = "+";result = a + b;break;
                case 1:op = "-";result = a - b;break;
                case 2:op = "*";result = a * b;break;
                case 3:op = "/";result = a / b;break;
            }
            label1.Text = a.ToString();
            label3.Text = b.ToString();
            label2.Text = op;
            textBox1.Text = "";
        }
        /// <summary>
        /// 判断
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            string str = textBox1.Text;
            double d = double.Parse(str);
            string disp = " " + a + op + b + "=" + str + " ";
            if (d == result)
                disp += "☆";
            else
                disp += "╳";
            listBox1.Items.Add(disp);
        }

        public Form1()
        {
            InitializeComponent();
        }
    }
}

三 循环语句

1 循环语句功能

句的在循环条件满足的情况下,反复执行特定代码;

2 循环五要素

① 初始化部分(init_statement);
② 循环条件部分(test_exp);
③ 循环体部分(body_statement);
④ 迭代部分(alter_statement)称为“循环改变”;
⑤ “结束后处理”;

s=0for(int i=1;i<=100;i++)s+=i;
Console.Write(s);

3 循环语句分类

for循环、while循环、do-while循环
在这里插入图片描述
① for循环语句
语法格式

for(init_statement;test_exp;alter_statement)
{
   body_statement;
}

应用举例

int result=0;
for(int i=0;i<=100;i++)
{
   result+=1;
}
System.Console.Write("result="+result);

② while 循环语句
语法格式

[init_statement]
while(test_exp)
{
    body_statement;
    [alter_statement;]
}

应用举例

int result=0;
int i=1;
while(i<=100)
{
    result+=i;
    i++;
}
System.Console.Write("result"+result);

③ do/while循环语句
至少执行一次
语法格式:

[init_statement]
do
{
    body_statement;
    [alter_statement;]
} while (test_exp);

应用举例

int result=0;int i=1;
do{
    result+=i;
    i++;
}while(i<=100)
System.Console.Write("result"+result);

4 跳转语句

常用的跳转语句:
① break语句
结束循环(相当于VB中的Exit Do,Exit For)
② continue语句
进入下一次循环;
③ goto语句
跳转到某个语句标号;
④ try{}catch{}语句
异常的捕获;

5 GOTo语句及其弊端

有关Goto语句的争论
C# 中的goto语句:
可以从内层跳到外层;
标号的写法:标识符加个冒号(😃

示例:
角谷猜想

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

namespace 角谷猜想
{
    internal class Program
    {
       public  static void Main(string[] args)
        {
            for(int n=1;n<=100;n++)
            {
                int a = n;
                while(a!=1)
                {
                    Console.Write(" " + a);
                    if (a % 2 == 1) a = a * 3 + 1;
                    else
                        a /= 2;
                }
                Console.WriteLine(" " + a);
            }
            Console.ReadKey();
        }
    }
}

画许多圆(使用循环与绘图)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 画许多圆
{
    public partial class Form1 : Form
    {
        Random random = new Random();
        public Form1()
        {
            InitializeComponent();
        }

        Color getRandomColor()
        {
            return Color.FromArgb(
                random.Next(256),
                random.Next(256),
                random.Next(256));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();

            int x0 = this.Width / 2;
            int y0 = this.Height / 2;

            for(int r=0;r<this.Height/2;r++)
            {
                g.DrawEllipse(
                    new Pen(getRandomColor(), 1),
                    x0 - r, y0 - r, r * 2, r * 2);
            }
            g.Dispose();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值