C# 流程控制语句

news2024/12/24 8:39:21

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

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();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot简单优雅实现图片上传功能(超详细)

文章目录前言技术栈项目目录前端实现index.htmlscript.js后端实现MultipartFile 介绍配置文件实体类ControllerMapperService拦截器测试结果展示前言 最近有一个需求需要实现图片上传&#xff0c;因此&#xff0c;本人找到了一个可以快速实现该功能的插件mini-upload-form。在…

CAS:2374782-03-1,NOTA-FAPI-4化学试剂供应

试剂描述 NOTA-FAPI-4是FAPI-4的类似物和成纤维细胞活化蛋白&#xff08;FAP&#xff09;抑制剂。NOTA-FAPI-4可作为PET示踪剂用于检测与成纤维细胞活化蛋白相关的紊乱。 试剂基本信息 1、名称&#xff1a;NOTA-FAPI-4 2、CAS编号&#xff1a;2374782-03-1 3、分子式&#x…

Seata模式

爬虫组件分析目录概述需求&#xff1a;设计思路实现思路分析1.一、AT 模式参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survi…

_4LeetCode代码随想录算法训练营第四天-C++

_4LeetCode代码随想录算法训练营第四天-C 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II 24.两两交换链表中的节点 整体思路 不是简单地交换值&#xff0c;而是交换指针地指向。 终止条件为&#xff1a; cur->next ! nul…

偏微分方程重要的前置知识

现在觉得很dog 开学期末考试正好美赛。无法评论&#xff0c;无法评论。乐淘淘&#xff0c;乐淘淘。期末考试不要延迟&#xff0c;求求了或者不安排在下学期第一周也可以。。。。反正求求了&#xff0c;美赛机会难得当然&#xff0c;如果是偏微分方程的问题的话&#xff0c;其实…

springboot连接Oracle的注意点(数据库信息配置、主键精度问题、OJDBC jar包、Oracle主键自增问题)

开篇废话&#xff1a;&#xff08;前段时间因为太忙没有坚持写博客&#xff0c;导致很久没有更新&#xff0c;今天终于忙里偷闲写上一篇&#xff09; 最近做了一个项目&#xff0c;数据库用的是Oracle&#xff0c;由于之前一直用的是MySQL&#xff0c;所以在一些细节配置上不是…

详细教你用NPS搭建内网穿透服务

文章目录 前言一、NPS概述 NPS的原理 二、NPS服务器搭建 1、下载软件2、云服务器配置 2.1、防火墙配置2.2、用WinSCP远程上传服务文件2.3、使用SSH终端安装启动2.4、修改配置文件 三、客户端连接总结 前言 相信大家外出旅游或者出差都是背着轻薄本&#xff0c;如果空闲之余想…

【Dubbo3高级特性】「实战开发」适配日志框架并支持运行时动态切换使用的日志框架开发实战

日志框架适配及运行时管理 本节内容主要是针对于如何在Dubbo中适配日志框架并支持运行时动态切换使用的日志框架&#xff0c;首先前提是需要进行启动我们Dubbo服务的Qos服务&#xff0c;它主要用于作为我们的操作对应的日志切换的功能实现机制 特性说明 日志框架适配&#x…

MATLB|基于matpower优化调度的风力模型预测

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

T6300A 网络综合测试仪 以太网数据 千兆以太网测试仪

一款功能强大、便携式、方便使用、价格便宜的高性价比手持式以太网测试仪是企业中网络管理和维护人员的刚需仪器。好的以太网测试仪可以帮助工作人员迅速解决网络不通、网速慢、丢包、延迟等问题。 当今以太网测试仪市场参差不齐&#xff0c;说的功能一个比一个强&#xff0c;…

【轻松掌握C语言】动态内存管理

目录 一、为什么存在动态内存分配 二、动态内存函数 1、malloc函数 (1)函数的用途 (2)函数的使用 2、free函数 (1)函数的用途 (2)函数的使用 3、calloc函数 (1)函数的用途 (2)函数的使用 4、realloc函数 (1)函数的用途 (2)函数的使用 三、常见的动态内存错误 1、对NULL指针的解…

【小f的刷题笔记】(JS)链表 - 单链表的倒数第 k 个节点 LeetCode19 单链表的中点 LeetCode876

【链表】 一、单链表的倒数第 k 个节点&#xff1a; ✔ 要求&#xff1a;只遍历一遍&#xff0c;链表有多长未知 LeetCode19 链接&#xff1a; 19.删除链表的倒数第N个结点 题目&#xff1a; 思路&#xff1a; 因为没有给头结点&#xff0c;我们就先定义一个哑结点&#…

从对称加密和非对称加密讲解HTTP到HTTPS的发展思路

一、传统的HTTP协议 传统的http在进行网络数据传输时&#xff0c;数据信息都是明文的&#xff0c;因此就很容易出现数据在网络的传输过程&#xff08;中间路由过程&#xff09;数据被监听或者窃取、替换的危险。因此http是一种不安全的传输协议。 那么就需要对数据进行加密。…

网络编程与通信原理

总感觉这个概念&#xff0c;和研发有点脱节&#xff1b; 一、基础概念 不同设备之间通过网络进行数据传输&#xff0c;并且基于通用的网络协议作为多种设备的兼容标准&#xff0c;称为网络通信&#xff1b; 以C/S架构来看&#xff0c;在一次请求当中&#xff0c;客户端和服务端…

物联网开发笔记(59)- 使用Micropython开发ESP32开发板之控制合宙4g Air724U模块

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制合宙4g Air724U模块。 二、环境 ESP32 合宙4g Air724U模块 Thonny IDE 几根杜邦线 接线方法&#xff1a; 注意连接方式&#xff1a; ESP32的RX2----->4G模块的TX ESP32的TX2----->4G模块的RX 三、介绍 1&…

JSP ssh机房学生上机管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP SSH机房学生上机管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采 用B/S模式开发。开发环境为TOMCA…

SpringBoot 注解方式快速整合Mybatis

序言&#xff1a;使用MyBatis3提供的注解可以逐步取代XML&#xff0c;例如使用Select注解直接编写SQL完成数据查询&#xff0c;使用SelectProvider高级注解还可以编写动态SQL&#xff0c;以应对复杂的业务需求。 一. 基础注解 MyBatis 主要提供了以下CRUD注解&#xff1a; Se…

Spring Cloud Alibaba Nacos Config - - - >@RefreshScope动态获取刷新后的配置内容

初学者不知道有没有这个疑惑&#xff1a;我明明已经在 SpringBoot 应用的 bootstrap.yml 配置文件中&#xff0c;通过 spring.cloud.nacos.config.refresh-enabledtrue 开启配置文件动态刷新了&#xff0c;为什么在 Controller 控制类中使用 Value 注解无法获取到配置文件修改后…

猿如意中的【取色器】效率工具详情介绍

目录 一、工具名称 二、下载安装渠道 2.1 什么是猿如意&#xff1f; 2.2 如何下载猿如意&#xff1f; 2.3 如何在猿如意中下载取色器&#xff1f; 三、取色器介绍 四、软件安装过程 五、软件界面 六、取色器功能特点介绍 七、取色器使用/体验感受 一、工具名称…

Typescript学习(第三弹)

泛型 定义 不预先确定的数据类型&#xff0c;具体的类型在使用的时候才确定&#xff0c;把泛型理解为代表类型的参数 泛型函数 泛型函数类型 泛型接口 引用泛型接口要指定一个类型&#xff0c;否则会报错 或者在泛型接口里指定一个默认类型 泛型类 泛型放在类的后面这样…