C#语言程序设计.ppt_第1页
C#语言程序设计.ppt_第2页
C#语言程序设计.ppt_第3页
C#语言程序设计.ppt_第4页
C#语言程序设计.ppt_第5页
已阅读5页,还剩357页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言程序设计C LanguagePrograming 杜进 EnterduTELnterdu 课程简介 信息素养教育是大学生通识教育的重要内容之一 C 是一种优秀的面向对象语言 它继承了C 和Java等语言的优点 并与现代软件工程相适应 C 语言利用 NET作为运行平台 使得它在Windows图形用户界面 Web应用 数据库等方面有强大的功能 本课程的目标是 学习和掌握C 语言的原理和方法 以及C 在常见的各类信息的处理以及企业信息化的应用 以此来提高信息意识和信息化素养 更深入地理通过程序设计来处理信息的原理和方法 更自如地应用计算机来为专业工作服务 为服务于企业信息化打下基础 本课程要求在先修课程 大学计算机基础 下 或 VFP数据库 中已经有程序设计的基础知识 C 语言程序设计 2 课程目录 第0章C 语言学习前的准备第1章VisualC 简介第2章C 简单程序编写第3章C 程序设计基础第4章C 控制语句第5章数组和集合第6章面向对象程序设计第7章继承和接口设计第8章Windows窗体应用程序设计第9章用户界面设计 3 C 语言程序设计 第0章C 语言学习前的准备 计算机基础知识测试题 将下列项目归类为硬件或软件 CPU 编译器 输入单元 字处理程序 Java程序填空题 计算机编程语言包括 机器语言 和 计算机只能直接理解其本身的语言 这种语言是由1和0构成的 计算机处理数据时由一组指令控制 这组指令称为计算机 将高级语言程序变成机器语言的程序称为 4 C 语言程序设计 第0章C 语言学习前的准备 计算机基础知识测试题 写出计算机网络相关缩略语的全称 W3C HTML XML HTTP SOAP 5 C 语言程序设计 可以开始进入C 课程学习了 课程的重点 难点重点 C 应用程序的架构 程序调试 数据类型 值类型 引用类型 流程控制语句 条件分支语句 循环语句 异常处理 常用类操作和数据处理 封装 继承 多态 接口难点 C 应用程序的架构 应用类型 循环语句 异常处理 面向对象的程序设计 继承 接口课时安排总课时 48 课内 32 课外 周课时 2 课堂 1 实验 2 课后 C 语言程序设计 6 可以开始进入C 课程学习了 参考资料ftp dzsw dzsw 221 232 141 195书籍 P J Deital等著 VisualC 2008大学教程 第3版 电子工业出版社karliWatson等著 C 入门经典 第4版 清华大学出版社网络 www mono Mono开源项目创建Linux Windows与MacOSX平台上的 NET程序 www ecma international org publications standards Ecma 334 htmECMA 334标准 C 语言规范 C 语言程序设计 7 第1章VisualC 简介 本章目录运行一个运用C 编写的应用程序实例C C Java VisualC OOP 面向对象编程 技术 NET框架与CLR 公共语言运行环境 VisualStudioIDE介绍 8 C 语言程序设计 第1章VisualC 简介 一个应用程序实例Examples ch01 AdvancedPainter exe C 语言程序设计 9 第1章VisualC 简介 C C Java VisualC 发展历史C语言1973年由贝尔实验室的DennisRitchie开发的 最初作为UNIX操作系统的开发语言 C 20世纪80年代初由贝尔实验室的BjarneStroustrup开发的 在C语言的基础上提供了面向对象编程的特性 人们需要迅速地 正确地 经济地建立软件 部分可以利用对象 来复用软件组件 C 语言程序设计 10 第1章VisualC 简介 C C Java VisualC 发展历史JavaSun于1991年开始的一个内部公司研究项目 开发一个基于C 的语言 即Java Sun于1995年正式推出Java 由于Java可用在Web页面中增加动态内容 即交互性 动画等 因此一经推出 立刻引起了企业界的兴趣 C 语言程序设计 11 第1章VisualC 简介 C C Java VisualC 发展历史C 2000年微软推出 由AndersHejlsberg和ScottWilramuth领导的小组开发 为什么要开发C 呢 C 语言程序设计 12 第1章VisualC 简介 OOP 面向对象编程 技术对象 object 对象技术是一种包装机制 可以创建有意义的软件单元 对象具有属性 property或attribute 对象要进行操作 也称为行为或方法 类 class 是一类相关对象 类指定对象的一般格式 对象的属性与操作取决于所属的类 C 语言程序设计 13 第1章VisualC 简介 NET框架与CLR 公共语言运行环境 C 语言程序设计 14 第1章VisualC 简介 VisualStudioIDE介绍VSIDE界面介绍VSIDE可视化编程程序示例 C 语言程序设计 15 第1章VisualC 简介 小节本章专业术语CLR CommonLanguageRuntime 公共语言运行环境GUI GraphicalUserInterface 图形用户界面IDE IntegratedDevelopmentEnvironment 集成开发环境OOP Object OrientedProgramming 面向对象编程练习题练习把工具箱中的控件放到窗体上 熟悉每个控件的模样 记事本GUI 日历与提醒GUI 计算器GUI 闹钟GUI 收音机GUI C 语言程序设计 16 第1章结束 C 语言程序设计 17 THANKS Seeyounexttime 第2章C 简单程序编写 本章目录代码遍历 一个C 控制台程序程序解读C 程序创建一个Windows程序示例 C 语言程序设计 18 第2章C 简单程序编写 代码遍历 一个C 控制台程序 C 语言程序设计 19 第2章C 简单程序编写 程序解读注释 用来说明程序和提高程序的可读性 单行注释语句 界定注释可以跨多行 Thisisadelimitedcomment Itcanbesplitovermanylines using指令 注意大小写 帮助编译器找到程序使用的类 C 有丰富的预定义类 这些类组织成名字空间 namespace 即相关类的集合 NET的名字空间统称为 NET的框架类库 FCL 对使用的每个新 NET类 要指定类所在的名字空间 C 语言程序设计 20 第2章C 简单程序编写 程序解读用户定义类每个程序至少要有一个用户定义类 即程序员定义的类 注意 class关键字要小写 C 中的关键字 保留字 都必须小写 但所有类名都是以大写字母开头 即Pascal规则 Main方法Main后面的括号是个程序块 被称为方法 在每个程序 类中有一个Main方法 否则这个程序无法执行 C 语言程序设计 21 第2章C 简单程序编写 程序解读Console类Console类提供标准输入 输出功能 使程序可以在执行时读取和现实文本 Console WriteLine WelcometoC Programming Console Read WriteLine方法用来在控制台输出变量 Read方法用来在控制台输入信息 是每个语句结束的符号 C 语言程序设计 22 第2章C 简单程序编写 C 程序创建IDE的代码颜色模式IDE使用过的代码颜色模式为语法颜色高亮度显示 有助于区别不同程序元素 例如 关键字显示为蓝色 注释文本显示为绿色 行号利于程序阅读和修改 Tools Options对话框 TextEditor LineNumbers C 语言程序设计 23 第2章C 简单程序编写 C 程序创建代码缩进将代码缩进设置为每层3格 也可以使用Tab键 程序文件名程序默认的文件名是Program cs 可以在属性窗口中修改 IntelliSense特性IntelliSense 智能感应 可在输入程序时列出类的成员和方法名 方便输入 C 语言程序设计 24 第2章C 简单程序编写 C 程序创建程序保存 编译与运行F5 启动调试常见编程错误注意留意常见的错误 一个错误可能产生多个错误消息 C 语言程序设计 25 第2章C 简单程序编写 C 程序创建良好编程习惯习惯上 类名应该以大写字母开头 其中每个单词首字母用大写 习惯上 包含一个公用类的文件命名时应于类同名 包括拼写和大小写 这样命名有助于程序员确定程序的类所在的位置 在分隔类体的左右括号之间将内容缩进一级 这种格式有利于显示类声明结构 增加可读性 设置缩进量 采用一致的习惯 和类一样 在定义方法时体的左右括号之间将每个方法声明的整体缩进一层 C 语言程序设计 26 第2章C 简单程序编写 一个Windows程序示例 C 语言程序设计 27 第2章C 简单程序编写 小节本章专业术语 NETFCL NETFrameworkClassLibrary NET框架类库练习题按照例子2 1编写并运行控制台程序将例子2 1的代码故意 破坏 如缺括号或将关键字拼写错误 看看编译器产生语法错误的消息 并分析错误消息产生的原因 C 语言程序设计 28 第2章结束 C 语言程序设计 29 THANKS Seeyounexttime 第3章C 程序设计基础 本章目录标识符C 中数据类型C 中的变量和常量结构类型和枚举类型C 运算符和表达式C 中常用类和结构 C 语言程序设计 30 3 1标识符 C 的标识符名称必须遵守以下规则 1 所有的标识符只能由字母 数字和下划线这3类字符组成 且第一个字符必须为字母或下划线 2 标识符中不能包含空格 标点符号 运算符等其他符号 3 标识符严格区分大小写 4 标识符不能与C 关键字名相同 5 标识符不能与C 中的类库名相同 a12 c 1abc 3 2C 中数据类型 C 中数据类型分类图 3 2 1值类型值类型的变量内含变量值本身 C 的值类型可以分为简单类型 结构类型和枚举类型 下面仅介绍简单类型 1 整数类型 2 实数类型 3字符类型 例如 可以采用如下方式字符变量赋值 charc H 字符Hcharc x0048 字符H 十六进制转义符 前缀为 x charc u0048 字符H Unicode表示形式 前缀为 u charc r 回车 转义字符在表示一个字符常数时 单引号内的有效字符数量必须且只能是一个 而且不能是单引号或者反斜杠 4 布尔类型布尔类型数据用于表示逻辑真和逻辑假 布尔类型的类型标识符是bool 3 2 2引用类型引用类型也称为参考类型 和值类型相比 引用类型的变量不直接存储所包含的值 而是指向它所要存储的值 类似C中的指针 1 object类object是C 中所有类型 包括所有的值类型和引用类型 的基类 C 中的所有类型都直接或间接地从object类中继承而来 因此 对一个object的变量可以赋予任何类型的值 floatf 1 23 objectobj1 定义obj1对象obj1 f objectobj2 China 定义obj2对象并赋初值 2 string类C 还定义了一个string类 表示一个Unicode字符序列 专门用于对字符串的操作 同样 这个类也是在 NETFramework的命名空间System中定义的 是类System String的别名 字符串在实际中应用非常广泛 利用string类中封装的各种内部操作 可以很容易完成对字符串处理 例如 stringstr1 123 abc 运算符用于连接字符串charc HelloWorld 2 运算符可以访问string中的单个字符 c e stringstr2 China stringstr3 China 字符串的另一种表示形式 用 引起来 boolb str2 str3 运算符用于两个字符串比较 b true 3 2 3类型转换数据类型在一定条件下是可以相互转换的 如将int型数据转换成double型数据 C 允许使用两种转换的方式 隐式转换和显式转换 1 隐式转换隐式转换是系统默认的 不需要加以声明就可以进行的转换 2 显式转换显式转换又叫强制类型转换 与隐式转换相反 显式转换需要用户明确地指定转换类型 一般在不存在该类型的隐式转换时才使用 格式如下 类型标识符 表达式其作用是将 表达式 值的类型转换为 类型标识符 的类型 例如 int 1 23 把double类型的1 23转换成int类型 结果为1需要提醒注意以下几点 1 显式转换可能会导致错误 进行这种转换时编译器将对转换进行溢出检测 如果有溢出说明转换失败 就表明源类型不是一个合法的目标类型 转换就无法进行 2 对于从float double decimal到整型数据的转换 将通过舍入得到最接近的整型值 如果这个整型值超出目标类型的范围 则出现转换异常 例3 1 设计一个控制台程序说明类型转换的应用 usingSystem namespaceProj3 1 classProgram staticvoidMain string args inti 65 i1 i2 doubled 66 3456 d1 d2 charc A c1 c2 Console WriteLine i 0 d5 d 1 f c 2 i d c i1 int d 强制类型转换d1 i 隐式类型转换c1 char i 强制类型转换Console WriteLine i1 0 d5 d1 1 f c1 2 i1 d1 c1 i2 c 隐式类型转换d2 int d 强制类型转换 转换成整数后再隐式转为double类型c2 char d 强制类型转换Console WriteLine i2 0 d5 d2 1 f c2 2 i2 d2 c2 3 2 4装箱和拆箱1 装箱转换装箱转换是指将一个值类型的数据隐式地转换成一个对象类型的数据 例如 下面语句就执行了装箱转换 inti 8 objectobj i 或objectobj object i 2 拆箱转换拆箱转换是指将一个对象类型的数据显式地转换成一个值类型数据 例如 下面语句就执行了拆箱转换 objectobj 2 inti int obj 拆箱转换需要 而且必须 执行显式转换 这是它与装箱转换的不同之处 3 3C 中的变量和常量3 3 1变量1 变量定义在C 程序里使用某个变量之前 必须要告诉编译器它是一个什么样的变量 因此要对变量进行定义 定义变量的方法如下 访问修饰符 数据类型变量名 初始值 例如 stringname 王华 intage 20 也可以同时声明一个或多个给定类型的变量 例如 inta 1 b 2 c 3 2 理解值类型的变量如果一个变量的值是普通的类型 那么这个C 变量就是值类型的变量 值类型的变量直接把值存放在变量名标记的存储位置上 当定义一个值类型变量并且给它赋值的时候 这个变量只能存储相同类型的数据 所以 一个int类型的变量就只能存放int类型的数据 另外 当把值赋给某个值类型的变量时 C 会首先创建这个值的一个拷贝 然后把这个拷贝放在变量名所标记的存储位置上 例如 intx inty 2 x y 3 理解引用类型的变量引用表示所使用的是变量或对象的地址而不是变量或对象本身 当声明引用类型变量时 程序只是分配了存放这个引用的存储空间 要想创建对象并把对象的存储地址赋给该变量 就需要使用new操作符 例如 MyClassvar MyClass是已定义的类或类型var newMyClass 数组示例 int a newint 3 1 2 3 for inti 0 i 3 i Console Write 0 a i 3 3 2常量1 直接常量直接常量是指把程序中不变的量直接硬编码为数值或字符串值 例如 以下都是直接常量 100 整型直接常量1 23e5 浮点型直接常量 2 符号常量符号常量是通过关键字const声明的常量 包括常量的名称和它的值 常量声明的格式如下 const数据类型常量名 初始值 其中 常量名 必须是C 的合法标识符 在程序中通过常量名来访问该常量 类型标识符 指示了所定义的常量的数据类型 而 初始值 是所定义的常量的值 例如 constdoublePI 3 14159265 3 4结构类型和枚举类型3 4 1结构类型1 结构类型的声明结构类型由若干 成员 组成的 数据成员称为字段 每个字段都有自已的数据类型 声明结构类型的一般格式如下 struct结构类型名称 字段访问修饰符 数据类型字段1 字段访问修饰符 数据类型字段2 字段访问修饰符 数据类型字段n 例如 以下声明一个具有姓名和年龄的结构体类型Student structStudent 声明结构类型Student publicintxh 学号publicstringxm 姓名publicstringxb 性别publicintnl 年龄publicstringbh 班号 2 结构类型变量的定义声明一个结构类型后 可以定义该结构类型的变量 简称为结构变量 定义结构变量的一般格式如下 结构类型结构变量 例如 在前面的结构类型Student声明后 定义它的两个变量如下 Students1 s2 3 结构变量的使用1 访问结构变量字段访问结构变量字段的一般格式如下 结构变量名 字段名例如 s1 xh表示结构变量s1的学号 s2 xm表示结构变量s2的姓名 结构体变量的字段可以在程序中单独使用 与普通变量完全相同 2 结构变量的赋值结构变量的赋值有两种方式 结构变量的字段赋值 使用方法与普通变量相同 结构变量之间赋值 要求赋值的两个结构变量必须类型相同 例如 s1 s2 这样s2的所有字段值赋给s1的对应字段 例3 2 设计一个控制台程序说明结构类型的应用 usingSystem namespaceProj3 2 classProgram structStudent 结构类型声明应放在Main函数的外面 publicintxh 学号publicstringxm 姓名publicstringxb 性别publicintnl 年龄publicstringbh 班号 staticvoidMain string args Students1 s2 定义两个结构类型变量s1 xh 101 s1 xm 李明 s1 xb 男 s1 nl 20 s1 bh 07001 Console WriteLine 学号 0 姓名 1 性别 2 年龄 3 班号 4 s1 xh s1 xm s1 xb s1 nl s1 bh s2 s1 将结构变量s1赋给s2s2 xh 108 s2 xm 王华 Console WriteLine 学号 0 姓名 1 性别 2 年龄 3 班号 4 s2 xh s2 xm s2 xb s2 nl s2 bh 3 4 2枚举类型枚举类型也是一种自定义数据类型 它允许用符号代表数据 枚举是指程序中某个变量具有一组确定的值 通过 枚举 可以将其值一一列出来 1 枚举类型的声明枚举类型使用enum关键字声明 其一般语法形式如下 enum枚举名 枚举成员1 枚举成员2 其中 enum是结构类型的关键字 例如 以下声明一个名称为color的表示颜色的枚举类型 enumColor Red Green Blue White Black 在声明枚举类型后 可以通过枚举名来访问枚举成员 其使用语法如下 枚举名 枚举成员 2 枚举成员的赋值在声明的枚举类型中 每一个枚举成员都有一个相对应的常量值 默认情况下C 规定第1个枚举成员的值取0 它后面的每一个枚举成员的值按加1递增 例如 前面Color中 Red值为0 Green值为1 Blue值为2 依次类推 可以为一个或多个枚举成员赋整型值 当某个枚举成员赋值后 其后的枚举成员没有赋值的话 自动在前一个枚举成员值之上加1作为其值 例如 enumColor Red 0 Green Blue 3 White Black 1 则这些枚举成员的值分别为0 1 3 4 1 3 枚举类型变量的定义声明一个枚举类型后 可以定义该枚举类型的变量 简称为枚举变量 定义枚举变量的一般格式如下 枚举类型枚举变量 例如 在前面的枚举类型Color声明后 定义它的两个变量如下 Colorc1 c2 1 枚举变量的赋值枚举变量赋值的语法格式如下 枚举变量 枚举名 枚举成员例如 c1 Color Red 2 枚举变量的访问枚举变量像普通变量一样直接访问 3 5C 运算符和表达式 3 5 1算术运算符 3 5 2字符串运算符字符串运算符只有一个 就是加号 它除了作为算术运算符之外 还可以将字符串连接起来 变成合并的新字符串 例如 strings Hello s s World Console WriteLine s 输出 Hello World 3 5 3赋值运算符赋值运算符 用于改变变量的值 它先求出右侧表达式的结果 然后再将结果赋给左侧的变量 3 5 4关系运算符 3 5 5逻辑运算符 3 5 6位运算符 3 5 7条件运算符条件运算符是一个三元运算符 每个操作数同时又是表达式的值 由条件运算符构成的表达式称为条件表达式 条件运算符的使用格式如下 表达式1 表达式2 表达式3它的计算方式为 先计算 表达式1 必须为布尔值 的值 如果其值true 则 表达式2 的值作为整个表达式的最终结果 否则 表达式3 的值作为整个表达式的值 例如 以下表达式返回a和b中的最大值 max a b a b计算过程是 当a b max a 否则max b 3 5 9运算符的优先级运算符的优先级是指在表达式中哪一个运算符应该首先计算 C 根据运算符的优先级确定表达式的求值顺序 优先级高的运算先做 优先级低的操作后做 相同优先级的操作从左到右依次做 同时用小括号控制运算顺序 任何在小括号内的运算最优先进行 3 6C 中常用类和结构 C 中一切都是对象 3 6 1String类 string类型是 NETFramework中的String类的别名 string类型定义了相等运算符 和 用于比较两个string对象 叧外 运算符用于连接字符串 运算符可以用来访问string中的各个字符 例3 7 设计一个控制台程序求用户输入的子串在主串中位置 usingSystem namespaceProj3 6 classProgram staticvoidMain string args Stringmstr sstr Console Write 输入主串 mstr Console ReadLine Console Write 输入子串 sstr Console ReadLine Console WriteLine 主串长度 0 子串长度 1 mstr Length sstr Length if String Compare mstr sstr 0 使用静态方法Console WriteLine 位置 0 mstr IndexOf sstr elseConsole WriteLine 两个字符串相同 3 6 2Math类Math类位于System命名空间中 它包含了实现C 中常用算术运算功能的方法 这些方法都是静态方法 可通过 Math 方法名 参数 来使用 3 6 3Convert类Convert类位于System命名空间中 用于将一个值类型转换成另一个值类型 这些方法都是静态方法 可通过 Convert 方法名 参数 来使用 3 6 4DateTime结构DateTime结构类位于System命名空间中 DateTime值类型表示值范围在公元0001年1月1日午夜12 00 00到公元9999年12月31日晚上11 59 59之间的日期和时间 可以通过以下语法格式定义一个日期时间变量 DateTime日期时间变量 newDateTime 年 月 日 时 分 秒 例如 以下语句定义了2个日期时间变量 DateTimed1 newDateTime 2009 10 1 DateTimed2 newDateTime 2009 10 1 8 15 20 其中 d1的值为2009年10月1日零点零分零秒 d2的值为2009年10月1日8点15分20秒 例3 8 设计一个控制台程序说明DataTime结构的使用 usingSystem namespaceProj3 7 classProgram staticvoidMain string args DateTimed1 DateTime Now 定义当前日期时间变量DateTimed2 newDateTime 2009 10 1 定义一个日期时间变量Console WriteLine d1 0 d1 inti d1 Year 求d1的年intj d1 Month 求d1的月intk d1 Day 求d1的日inth d1 Hour 求d1的时intm d1 Minute 求d1的分ints d1 Second 求d1的秒 Console WriteLine d1 0 年 1 月 2 日 3 时 4 分 5 秒 i j k h m s Console WriteLine d2 0 d2 Console WriteLine 相距时间 0 d2 d1 DateTimed3 d1 AddDays 100 d3为d1的100天后的日期Console WriteLine d3 0 d3 Console WriteLine DateTime IsLeapYear i 静态方法调用Console WriteLine DateTime IsLeapYear d2 Year 第3章C 程序设计基础 小节本章专业术语练习题课后练习 C 语言程序设计 77 第3章结束 C 语言程序设计 78 THANKS Seeyounexttime 第4章C 控制语句 本章目录选择语句循环语句跳转语句 C 语言程序设计 79 4 1选择控制语句 4 1 1if语句基本语法格式如下 if 条件表达式 语句 其中 条件表达式 是一个关系表达式或逻辑表达式 当 条件表达式 为true时 执行后面的 语句 4 1 2if else语句语法形式如下 if 条件表达式 语句1 else语句2 其中的 条件表达式 是一个关系表达式或逻辑表达式 当 条件表达式 为true时执行 语句1 当 条件表达式 为false时执行 语句2 4 1 3if elseif语句if elseif语句用于进行多重判断 其语法形式如下 if 条件表达式1 语句1 elseif 条件表达式2 语句2 elseif 条件表达式n 语句n else语句n 1 例4 4 编写一个程序 将用户输入的分数转换成等级 usingSystem namespaceProj4 4 classProgram staticvoidMain string args floatx Console Write 分数 x float Parse Console ReadLine if x 90 Console WriteLine 等级为A elseif x 80 Console WriteLine 等级为B elseif x 70 Console WriteLine 等级为C elseif x 60 Console WriteLine 等级为D elseConsole WriteLine 等级为E 4 1 4switch语句switch语句也称为开关语句 用于有多重选择的场合测试某一个变量具有多个值时所执行的动作 switch语句的语法形式为 switch 表达式 case常量表达式1 语句1 case常量表达式2 语句2 case常量表达式n 语句n default 语句n 1 例4 5 编写一个程序 要求输入课程后显示相应的学分 数学 代号为m 8学分 物理 代号为p 5学分 化学 代号为c 5学分 语文 代号为w 8学分 英语 代号为e 6学分 usingSystem namespaceProj4 5 classProgram staticvoidMain string args charch Console Write 课程代号 ch char Console Read switch ch case m case M case w case W Console WriteLine 8学分 break case p case P case c case C Console WriteLine 5学分 break case e case E Console WriteLine 6学分 break default Console WriteLine 输入的课程代号不正确 break 4 2循环控制语句 4 2 1while语句while语句的一般语法格式如下 while 条件表达式 语句 例4 6 编写一个程序 将用户输入的整数反向显示出来 usingSystem namespaceProj4 6 classProgram staticvoidMain string args intdigit num Console Write 输入一个整数 num int Parse Console ReadLine Console Write 反向显示结果 while num 0 digit num 10 依次求个位 十位 上的数字digitnum num 10 Console Write digit Console WriteLine 4 2 2do while语句do while语句的一般语法格式如下 do语句 while 条件表达式 例4 7 采用do while语句重新编写例4 6的程序 usingSystem namespaceProj4 7 classProgram staticvoidMain string args intdigit num Console Write 输入一个整数 num int Parse Console ReadLine Console Write 反向显示结果 do digit num 10 num num 10 Console Write digit while num 0 Console WriteLine 4 2 3for语句for语句通常用于预先知道循环次数的情况 其一般语法格式如下 for 表达式1 表达式2 表达式3 语句 例4 8 编写一个程序 输出如图4 12所示的乘法表 usingSystem namespaceProj4 8 classProgram staticvoidMain string args inti j for i 1 i 9 i for j 1 j i j Console Write 0 1 2 i j i j Console WriteLine 4 3跳转语句4 3 1break语句break语句使程序从当前的循环语句 do while和for 内跳转出来 接着执行循环语句后面的语句 例4 9 编写一个程序 判断从键盘输入的大于3的正整数是否为素数 usingSystem namespaceProj4 9 classProgram staticvoidMain string args intn i boolprime true Console Write 输入一个大于3的正整数 n int Parse Console ReadLine for i 3 i Math Sqrt n i if n i 0 prime false break if prime Console WriteLine 0 是素数 n elseConsole WriteLine 0 不是素数 n 4 3 2continue语句continue语句也用于循环语句 它类似于break 但它不是结束循环 而是结束循环语句的当前一次循环 接着执行下一次循环 在while和do while循环结构中 执行控制权转至对 条件表达式 的判断 在for结构中 转去执行 表达式2 例4 10 编写一个程序 对用户输入的所有正数求和 如果输入的是负数 则忽略该数 程序每读入一个数 判断它的正负 如果为负 则利用continue语句结束当前一次循环 继续下一次循环 否则将该数加到总数上去 usingSystem namespaceProj4 10 classProgram staticvoidMain string args intsum 0 n 1 while n 0 循环 Console Write 输入一个整数 以0表示结束 n int Parse Console ReadLine if n 0 continue 开始下一次循环sum n Console WriteLine 所有正数之和 0 sum 4 3 3goto语句goto语句也可以跳出循环和switch语句 goto语句用于无条件转移程序的执行控制 它总是与一个标号相匹配 其形式为 goto标号 标号 是一个用户自定义的标识符 它可以处于goto语句的前面 也可以处于其后面 但是标号必须与goto语句处于同一个函数中 定义标号时 由一个标识符后面跟一冒号组成 通常不要使用goto语句 第4章C 控制语句 小节本章专业术语练习题课后练习 C 语言程序设计 99 第4章结束 C 语言程序设计 100 THANKS Seeyounexttime 第5章数组和集合 本章目录一维数组二维数组Array类交错数组ArrayList类List类 C 语言程序设计 101 5 1一维数组 5 1 1一维数组的定义定义一维数组的语法格式如下 数组类型 数组名 例如 以下定义了3个一维数组 即整型数组a 双精度数组b和字符串数组c int a double b string c 在定义数组后 必须对其进行初始化才能使用 初始化数组有两种方法 动态初始化和静态初始化 5 1 2一维数组的动态初始化动态初始化需要借助new运算符 为数组元素分配内存空间 并为数组元素赋初值 数值类型初始化为0 布尔类型初始化为false 字符串类型初始化为null 动态初始化数组的格式如下 数组类型 数组名 new数据类型 n 元素值0 元素值1 元素值n 1 其中 数组类型 是数组中数据元素的数据类型 n为 数组长度 可以是整型常量或变量 后面一层大括号里为初始值部分 1 不给定初始值的情况如果不给出初始值部分 各元素取默认值 例如 int a newint 10 该数组在内存中各数组元素均取默认值0 2 给定初始值的情况如果给出初始值部分 各元素取相应的初值 而且给出的初值个数与 数组长度 相等 此时可以省略 数组长度 因为后面的大括号中已列出了数组中的全部元素 例如 int a newint 10 1 2 3 4 5 6 7 8 9 10 或int a newint 1 2 3 4 5 6 7 8 9 10 在这种情况下 不允许 数组长度 为变量 例如 intn 5 定义变量nint myarr newint n 1 2 3 4 5 错误如果给出 数组长度 则初始值的个数应与 数组长度 相等 否则出错 例如 int mya newint 2 1 2 正确int mya newint 2 1 2 3 错误int mya newint 2 1 错误 5 1 3一维数组的静态初始化静态初始化数组时 必须与数组定义结合在一起 否则会出错 静态初始化数组的格式如下 数据类型 数组名 元素值0 元素值1 元素值n 1 用这种方法对数组进行初始化时 无需说明数组元素的个数 只需按顺序列出数组中的全部元素即可 系统会自动计算并分配数组所需的内存空间 例如 以下是对整型数组myarr的静态初始化 int myarr 1 2 3 4 5 在这种情况下 不能将数组定义和静态初始化分开 例如 以下是错误的 int myarr myarr 1 2 3 4 5 错误的数组的静态初始化 5 1 4访问一维数组中的元素访问一维数组中的某个元素 名称 下标或索引 所有元素下标从0开始 到数组长度减1为止 例如 以下语句输出数组myarr的所有元素值 for i 0 i 5 i Console Write 0 a i Console WriteLine C 还提供foreach语句 该语句提供一种简单 明了的方法来循环访问数组的元素 例如 以下代码定义一个名称为mya的数组 并用foreach语句循环访问该数组 int mya 1 2 3 4 5 6 foreach intiinmya System Console Write 0 i Console WriteLine 输出为 123456 5 1 5一组数组的越界若有如下语句定义并初始化数组ca int ca newint 10 1 2 3 4 5 6 7 8 7 9 10 数组ca的合法下标为0 9 如果程序中使用ca 10 或ca 50 则超过了数组规定的下标 因此越界了 C 系统会提示以下出错信息 未处理的异常 Syatem IndexOutOfRangeException 索引超出了数组界限 例5 1 设计一个控制台应用程序 采用二分查找方法在给定的有序数组a中查找用户输入的值 并提示相应的查找结果 usingSystem namespaceProj5 1 classProgram staticvoidMain string args double a newdouble 10 0 1 2 2 5 3 1 4 6 5 0 6 7 7 6 8 2 9 8 doublek intlow 0 high 9 mid Console Write k k double Parse Console ReadLine while lowk high mid 1 elselow mid 1 Console WriteLine 未找到 0 k 5 2二维数组 5 2 1二维数组的定义定义二维数组的语法格式如下 数组类型 数组名 其中 数据类型 为C 中合法的数据类型 数组名 为C 中合法的标识符 例如 以下语句定义了3个二维数组 即整型数组x 双精度数组y和字符串数组z int x double y string z 对于多维数组 可以作类似的推广 例如 以下语句定义了一个三维数组p int p 5 2 2二维数组的动态初始化动态初始化二维数组的格式如下 数据类型 数组名 new数据类型 m n 元素值0 0 元素值0 1 元素值0 n 1 元素值1 0 元素值1 1 元素值1 n 1 元素值m 1 0 元素值m 1 1 元素值m 1 n 1 其中 数组类型 是数组中数据元素的数据类型 m n分别为行数和列数 即各维的长度 可以是整型常量或变量 1 不给定初始值的情况如果不给出初始值部分 各元素取默认值 例如 int x newint 2 3 该数组各数组元素均取默认值0 2 给定初始值的情况如果给出初始值部分 各元素取相应的初值 而且给出的初值个数与对应的 数组长度 相等 此时可以省略 数组长度 因为后面的大括号中已列出了数组中的全部元素 例如 int x newint 2 3 1 2 3 4 5 6 或int x newint 1 2 3 4 5 6 5 2 3二维数组的静态初始化静态初始化数组时 必须与数组定义结合在一起 否则会出错 静态初始化数组的格式如下 数据类型 数组名 元素值0 0 元素值0 1 元素值0 n 1 元素值1 0 元素值1 1 元素值1 n 1 元素值m 1 0 元素值m 1 1 元素值m 1 n 1 例如 以下语句是对整型数组myarr的静态初始化 int myarr 1 2 3 4 5 6 5 2 4访问二维数组中的元素为了访问二维数组中的某个元素 需指定数组名称和数组中该元素的行下标和列下标 例如 以下语句输出数组myarr的所有元素值 for i 0 i 2 i for j 0 j 3 j Console Write 0 myarr i j Console WriteLine 对于多维数组 也可以使用foreach语句来循环访问每一个元素 例如 int myb newint 3 2 1 2 3 4 5 6 foreach intiinmyb Console Write 0 i Console WriteLine 其输出为 123456 例5 2 设计一个控制台应用程序 输出九行杨辉三角形 usingSystem namespaceProj5 2 classProgram constintN 10 staticvoidMain string args inti j int a newint N N for i 1 i N i 1列和对角线元素均为1 a i i 1 a i 1 1 for i 3 i N i 求第3 N行的元素值for j 2 j i 1 j a i j a i 1 j 1 a i 1 j for i 1 i N i 输出数序 for j 1 j i j Console Write 0 2 a i j Console WriteLine 5 3Array类 Array类是所有数组类型的抽象基类型 例5 3 设计一个控制台应用程序 产生10个0 19的随机整数 对其递增排序并输出 usingSystem namespaceProj5 3 classProgram staticvoidMain string args inti k int myarr newint 10 定义一个一维数组Randomrandobj newRandom 定义一个随机对象for i myarr GetLowerBound 0 i myarr GetUpperBound 0 i k randobj Next 20 返回一个0 19的正整数myarr SetValue k i 给数组元素赋值 Console Write 随机数序 for i myarr GetLowerBound 0 i myarr GetUpperBound 0 i Console Write 0 myarr GetValue i Console WriteLine Array Sort myarr 数组排序Console Write 排序数序 for i myarr GetLowerBound 0 i myarr GetUpperBound 0 i Console Write 0 myarr GetValue i Console WriteLine 5 4交错数组 交错数组 元素为数组的数组 元素的维度和大小可以不同 多维数组 元素的维度和大小的均相同 5 4 1交错数组的定义和初始化以下语句定义了一个由3个元素组成的一维数组 其中每个元素都是一个一维整数数组 int arrj newint 3 必须初始化arrj的元素后才可以使用它 可以如下所示初始化该元素 arrj 0 newint 5 arrj 1 newint 4 arrj 2 newint 2 5 4 2访问交错数组中的元素交错数组元素的访问方式与多维数组类似 通常使用Length方法返回包含在交错数组中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论