面向对象程序设计第8讲二维指针结构体-28页PPT资料
C语言程序设计教程PPT完整全套教学课件
联合体定义和使用场景分析
联合体定义
使用`union`关键字定义联合体类型,指定联合体名 称和成员列表。
内存共享
联合体的所有成员共享同一块内存空间。
使用场景
适用于多种数据类型但只需存储其中一种的场景, 如混合类型的数据存储和处理。
枚举类型定义及应用举例
枚举类型定义
使用`enum`关键字定义枚举类型,指定枚举名称和枚举常量列表。
01
跳转语句的概念和 特点
改变程序执行流程,实现程序的 跳转。
02
跳转语句的语法和 示例
break语句、continue语句、 goto语句等。
03
跳转语句的应用场 景
适用于需要中断循环、跳过某些 操作等特殊情况。
04
函数与模块化设计
函数定义和调用
函数定义的基本语法
返回类型 函数名(参数列表) { 函数体 }
将数组元素作为实参传递给形参,形参和实参类型必须一致;
数组名作为函数参数
将数组名作为实参传递给形参,形参和实参类型可以不一致,但形 参数组的大小必须大于等于实参数组的大小;
多维数组作为函数参数
多维数组可以作为函数参数传递,但需要注意多维数组的传递方式 和一维数组的传递方式不同。
06
指针与动态内存管理
02
数据类型、运算符与表达式
基本数据类型
01
整型(int)
02
浮点型(float、 double)
字符型(char)
03
04
布尔型(bool)
常量与变量
常量
在程序运行过程中,其值不能被改变 的量。
变量
在程序运行过程中,其值可以被改变 的量。
运算符和表达式
C语言程序设计全套教学教程完整版电子课件最全ppt电子教案
上一页 下一页
目录
8.1 指针的概念、定义和引用 8.1.1 指针的概念 8.1.2 指针变量的定义 8.1.3 指针变量的引用 8.2 指针与函数 8.2.1 指针变量作函数参数 8.2.2 返回值为指针的函数 8.2.3 通过指针调用函数
上一页 下一页
Hale Waihona Puke 目录8.3 指针与数组 8.3.1 指针与数组的关系 8.3.2 数组名作函数参数的指针解释 8.3.3 指针数组 8.3.4 多级指针 8.4 指针与字符串 8.4.1 字符串的表示形式 8.4.2 字符串指针作函数参数
2.汇编语言
汇编语言的指令与机器语言的指令基本上保持了一一对应的关系。与 机器语言比起来,汇编语言易记、易读、易检查、易修改,但却不能 被计算机直接识别和执行,必须由翻译程序翻译成机器语言程序后才 能执行。汇编语言仍然是面向特定计算机的语言,也仍然是低级语言
下一页
返回
1.1 程序设计语言概述
3.高级语言 高级语言是接近人类自然语言和数学语言的程序设计语言,具有以下
上一页 下一页
目录
5.2 do-while语句 5.3 for语句 5.4 break和continue语句 5.5 多重循环 5.6 综合应用举例 第6章 数组 6.1 数组概述 6.2 一维数组
上一页 下一页
目录
6.2.1 一维数组的定义 6.2.2 一维数组的引用 6.2.3 一维数组的初始化 6.2.4 一维数组的程序举例 6.3 二维数组 6.3.1 二维数组的定义 6.3.2 二维数组的引用 6.2.3 二维数组的初始化
翻译成目标程序,然后执行该目标程序。解释方式是把源程序逐句翻
上一页 下一页 返回
1.1 程序设计语言概述
Java程序设计ppt课件(完整版)
式中。注意圆括号可以嵌套,但需要严格配对使用。 • 方括号([]):用于声明数组,引用数组的元素值。 • 花括号({}):用于定义一个语句块,一个语句块是零条或多
1.2.4 知识总结
❖ 6.Java数据类型
▪ (1)基本数据类型
• 整数类型:byte,short,int,long。 • 浮点类型:float,double。 • 字符类型:char。 • 布尔类型:boolean。
▪ (2)引用数据类型
• 类类型:class,String,Double等。 • 接口类型:Interface • 数组类型:基本数据类型数组,对象型数组。
❖ 当主菜单与子菜单的连接成功之后, 若要保证菜单的重 复使用,则需要在主菜单及子菜单中添加循环控制语句来 实现,Java语言中的循环有while循环,do while循 环,for循环等。
1.3.3 解决方案
▪ 1、打开Eclipse。
▪ 2、添加一个包,名为com.esms,并复制Menus类到包中。
目录
第一章 Java与程序逻辑 第二章 面向对象程序设计基础 第三章 面向对象基本特性 第四章 常用对象使用 第五章 异常处理 第六章 I/O操作 第七章 多线程编程 第八章 Java的GUI可视界面编程
目录
第一章 Java与程序逻辑 第二章 面向对象程序设计基础 第三章 面向对象基本特性 第四章 常用对象使用 第五章 异常处理 第六章 I/O操作 第七章 多线程编程 第八章 Java的GUI可视界面编程
❖ 3.Java的开发环境
▪ 对于开发人员来说,除了需要上述的运行环境以外, 还需要开发环境的支持,Java的开发环境主要由以下 两部分组成。
PPT讲义
第1章 程序设计基本概念 §1.1 程序和程序设计 §1.2 算法 §1.3 结构化程序设计和模块化结构 第2章 C程序设计的初步认识 §2.1 简单C语言程序的构成和格式 §2.2 标识符、常量和变量 §2.3 整型数据 §2.4 实型数据 §2.5 字符型数据
§2.6 算术表达式 §2.7 赋值表达式 §2.8 自增、自减运算符和逗号运算符 §2.9 关系运算符、逻辑运算符及条件运算符 §2.10 位运算 第3章 顺序结构 §3.1 基本语句 §3.2 数据输出 §3.3 数据输入 顺序结构程序设计示例
C语言的主要特点
(1) 简洁紧凑、灵活方便 共有32个关键字,9种控制语句,程序书写自 由,主要用小写字母表示。 (2) 运算符丰富 运算符包含的范围很广泛,共有34种运算符。 C语言把括号、赋值、强制类型转换等都作为 运算符处理。 (3) 数据结构丰富 整型、实型、字符型、数组类型、指针类型、 结构体 类型、共用体类型等,能用来实现各种 复杂的数据类型的运算。
第9章 指针 §9.1 地址和指针的概念 §9.2 指针变量 §9.3 数组与指针 §9.4 字符串与指针 §9.5 指针数组与指向指针的指针 §9.6 指针与函数 第10章 结构体、共用体 §10.1 结构体类型与结构体变量
§10.2 结构体数组与结构指针 §10.3 用指针处理链表 §10.4 共用体 §10.5 枚举类型 §10.6 用typedef定义类型 第11章 文件 §11.1 文件概述 §11.2 文件的打开与关闭 §11.3 文件的读写 §11.4 文件的定位
3. 特点:有穷性、确定性、可行性(有效性)、 有零个或多个输入、有一个或多个输出。 4. 表示方法 (1) 流程图: 开始或终止框、 输入输出框、 判断框、 处理框、 流程线、 连接点、 注释框。 (2) 伪代码 (3) 计算机语言-C语言
面向对象程序设计完整版
Object- Oriented ProgrammingC++主讲成长生东华大学计算机科学与技术学院第一章概述§1.1 面向对象程序设计的基本思想C++是基于C语言发展的, 又冲破C语言局限的面向对象的程序设计语言。
它与Java语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。
要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的( Pascal( 或C) ) 结构化程序设计方法及其设计思想、程序结构及特点。
SP(Structure Programming)是60年代诞生的针对当时爆发的所谓”软件危机”, 为此发展形成了现代软件工程学的基础。
SP的总的设计思想是:.自顶向下、层次化.逐步求精、精细化程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。
因此SP的程序的基本特点是:.按层次组织模块( 战略上划分战役).每一模块只有一个入口, 一个出口.代码和数据分离( 程序=数据结构+算法)归纳得到: SP把数据和过程( 代码、函数) 分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信息; 程序代码则用来处理加工这些数据。
程序员在编程时, 必须时刻考虑所要处理的数据结构和类型。
对不同的数据格式即使要作同样的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序( 如两个整型数和两个浮点数相加) 。
这样的编程方法, 即传统的SP方法设计出来的程序或系统其可重用的成分很少。
其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员的一个沉重的负担。
在开发一个大型软件课题中, 当工程进入到后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击, 使其前功尽弃。
为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object -Oriented Programming――OOP。
《面向对象设计》PPT课件
类及其依赖性
② 运行时继承依赖性
下图举例说明了在一棵继承树中涉及客户对象访问类服务的运行时 继承依赖性。图中类B的do1( )方法是从父类A继承来的,因此Test与 B没有运行时继承依赖性,只是一个静态依赖性,通过从Test到A的关 联来表明。如果在doTest方法中调用的是do2( )方法,或者在B中覆盖 了A的do1( )方法,则从Test到A和B就会存在运行时依赖性。
接口及其依赖性
2.实现依赖性
一个类可以实现多个接口,由类实现的接口集合称为该 类的供给接口。在UML2.0中,将一个类和该类实现的接口 之间的依赖性称为实现依赖性。
右图所示为实现依赖性的 UML符号,在箭头末端的类 实现了箭头所指向的接口。 从图中可以看到,Class1实 现了Interface1接口和 Interface2接口,而Class2 只实现了Interface2接口。
包及其依赖性
1. 包
包(package)又可称为层或子系统,是表示组织类的一 种方式,用于划分应用程序的逻辑模型。包是高度相关的类 的聚合,这些类本身是内聚的,但相对于其他聚合来说又是 松散耦合的。
包可以嵌套。外层包可以直接访问包括在它的嵌套包中的 任何类。包还可以导入其他包,例如,在包A中导入了包B, 这意味着包A或者包A的元素可以引用包B或者包B的元素。 因此,虽然一个类只属于一个包,但是它可以被导入其他包。 包的导入操作会引入包之间的依赖性以及它们的元素之间的 依赖性。
类及其依赖性
(2)无多态继承 使用继承最简单的方式是子类不覆盖从父类继承来的方法,
这样就不存在多态性继承问题。虽然无多态的继承有时并不 是十分有用,但理解和管理起来是最容易的。 (3)扩展继承和约束继承
面向对象程序设计(Java)PPT课件
<BODY> <APPLET CODE= "J_HelloApplet.class" WIDTH= 300 HEIGHT= 80> </APPLET>
</BODY>
</HTML>
2020/3/25
23
第1章 绪论
编译源文件 &运行小应用程序
J_HelloApplet.java
J_HelloApplet.class
•{
• public void paint(Graphics g)
•{
•
g.drawString("Hello Applet.", 25, 25);
•
g.drawString("您好, 今天是:"+new Date(), 50, 50);
• } // End of method: paint
• } // End of class: J_HelloApplet
第1章 绪论
面向对象程序设计(Java)
2020/3/25
1
第1章 绪论
第 1 章 绪论
• 第1部分: • 第2部分: • 第3部分:
Java简介 开发环境的建立 我会写 Java程序
2020/3/25
2
第1章 绪论
为什么选择学习Java?
识时务者为俊杰
全球市场调查显示:
• 已经有25亿部电子设备采用Java技术,Java智 能卡发行量已经达到10亿张;
结束
MacOS 工作台
2020/3/25
25
第1章 绪论
Java的基本语法
面向对象程序设计(谭浩强版)
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
P5 P6 P4 P3 P2 P1
O5 O4 O3 O2 O1
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
O5 O4 O3 O2 O1
二、抽象在面向对象中的作用
Ⅰ、抽象的概念 抽象代表着一个对象的本质特征,这个特征将 这个对象与所有其他种类的对象区别开来; 抽象是通过从特定的实例中抽取共同的性质以 形成一般化的概念的过程; 抽象具有层次;
在计算机语言发展史上具有划时代的意义, 引入了许多程序设计概念。如变量、数组、循环、 分支等。
20世纪50年代中期,Algol语言 提出块(Begin…End)思想,对数据进行保护, 是一种初级封装。
1.1 从C到C++
20世纪60年代中期,Simula 67语言 面向对象语言的鼻祖,提出了对象、类的概 念,并支持类的继承。 20世纪70年代中期,Ada语言
1.2 最简单的C++程序
例1.3:输入两个数x和y,求两数中的大者。
#include<iostream> using namespace std; 函数声明 int main() { int max(int x,int y); int a,b,c; cin>>a>>b; c=max(a,b);//函数调用 cout<<"max="<<c<<endl; return 0; } int max(int x,int y) {int z; if(x>y) z=x; else
注意其两面性
1.1先研究事物,而后才能研究过程。必须 先知道一个事物是什么,而后才能觉察这个事物 中所发生的变化。 《路德维希· 费尔巴哈和德国古典文学的终结》
《面向对象的》课件
多态
允许一个接口多种形态存 在,即一个接口可以有多 个实现方式,增强了代码 的灵活性和可扩展性。
面向对象与面向过程的区别
面向对象强调的是对象之间的交互和关系,注重的是系统的整体性和复用性;而面 向过程则更注重程序的执行流程和算法的实现。
面向对象编程将数据和操作封装在一起,形成具有特定属性和行为的对象,更符合 人类的思维习惯;而面向过程编程则更注重功能模块的划分和调用。
C#
总结词
C#是一种面向对象的编程语言,由微软公司开发,具有语法严谨、易于上手的特点。
详细描述
C#语言支持类和对象的概念,提供了丰富的API和库,广泛应用于Windows桌面应用程序开发、游戏 开发等领域。C#还支持跨平台开发,可以在其他操作系统上运行。
04
面向对象的应用领域
游戏开发
游戏策划
面向对象编程有助于更好地设计和组 织游戏策划,将游戏的各种元素(如 角色、物品、关卡等)视为对象,便 于管理和扩展。
详细描述
继承是面向对象编程中的重要概念,它允许创建分等级的类。基类(也称为父类 )定义了共享的属性和方法,派生类(也称为子类)继承这些属性和方法,并可用变量来引用子类对象,调用子类 重写的方法。
详细描述
多态允许一个接口被多个类实现,一个接口引用变量可以指 向任何实现该接口的类的对象。当通过接口引用变量调用方 法时,将根据实际对象的类型来决定调用哪个实现类的方法 。
面向对象编程通过类和对象的概念实现代码的重用和扩展,提高了软件的可维护性 和可复用性;而面向过程编程则更注重程序的执行效率和算法的优化。
02
面向对象的主要技术
类与对象
总结词
类是对象的抽象,对象是类的实 例。
详细描述
Java基础课件-面向对象程序设计PPT
Set接口
无序、不可重复的集合, HashSet、TreeSet等实现类
Map接口
键值对形式的集合, HashMap、Hashtable等实现 类
迭代器和遍历集合
1
增强fo r循环
2
简化集合遍历的语法,遍历数组和集
合
3
迭代器模式
通过迭代器访问集合元素,实现集合 的遍历
集合遍历算法
Java 8引入的Stream API提供丰富的 集合遍历和处理方法
多线程编程
多线程编程可以提高程序的效率和响应性。我们将探索Java提供的多线程机 制,学习线程的创建、同步和互斥等关键概念。
Java基础课件-面向对象程 序设计PPT
本课件旨在介绍Java基础知识和面向对象程序设计的概念。我们将深入讨论 Java类与对象、封装、继承、多态,以及其他关键主题,一起来学习吧!
Java基础概述
1 Java语言特点
简洁、面向对象、可移 植、高性能
2 开发环境准备
JDK安装、IDE选择、 环境变量配置
代码分析、编译器指令、 配置文件生成等
通过元注解为注解添加 元数据和其他信息
Java字符串和日期时间处理
字符串处理
字符串连接、分割、截取等常 用操作
日期时间处理
日期格式化、获取时间戳、计 算日期差等
正ห้องสมุดไป่ตู้表达式
文本模式匹配和替换的强大工 具
Java集合框架
List接口
有序、可重复的集合, ArrayList、LinkedList等实现 类
构造方法
对象实例化时执行的特殊方法
成员变量和成员方法
1
成员变量
在类中定义的属性,代表对象的状态
四川大学《c语言程序设计》课件-第8章 结构体与共用体
90 83 72 82
2 林平之
男 1999
78 92 88 78
3 岳灵珊
女 1999
89 72 98 66
4 任盈盈
女 1999
78 95 87 90
结构体的解决方法
struct STUDENT
{ int studentID;
/*每个学生的序号*/
char studentName[10];/*每个学生的姓名*/
};
结构体变量的指针
struct STUDENT
{
int
studentID;
char
studentName[10];
char
studentSex[4];
struct date timeOfEnter;
int
scoreComputer;
int
scoreEnglish;
int
scoreMath;
int
结构体的内存占用
double 占用内存字节数 = 8 struct 类型用内存字节数 = ? 是所有成员变量的内存总和吗?
用运算符sizeof获得结构体大小 sizeof(变量或表达式) sizeof(类型)
struct number
{ short i; char ch;
float f;
};
printf("%d\n", sizeof(struct number));
struct STUDENT *pStu; /*定义结构体指针*/
pStu = &stu;
通过stu和成员运算符访问结构体成员
– stu. studentID = 1;
通过pStu和指向运算符访问结构体成员
面向对象程序设计(共13张PPT)
对象的使用主要体现在对其成员的引用上,对 象只能访问公有成员,一般格式为:
<对象名> . <公有成员数据名>
<对象名> . <公有成员函数名>(<参数表>)
prev
next
back
第5页,共13页。
9.2 类的使用
9.2.2 对象的使用
成员选择运算符 这里的符号“.”称为 对象数组的元素通过缺省构造函数而得到初始化。
4. 一个类的对象可作为另一个类的成员,
prev
称为对象成员。
next
back
第7页,共13页。
9.2 类的使用
9.2.3 对象数组和对象指针
定义一维对象数组的一般格式为:
《存储类型》<类名> <对象数组名>[<常量表达式
>];
对象数组中的每个元素可以象一般的对 象使用。
注意,在说明对象数组时,不能对它进 行初始化。对象数组的元素通过缺省构
第12页,共13页。
9.2 类的使用
9.2.5 类实现数据的封装
对象的封装性是指将对象的属性(成员数据)和 作用于这些属性上的操作(成员函数)封装在一 起,对象的使用者只能通过提供给它的接口
(公有成员函数)使用这个对象。
类通过对其成员设计不同的访问权限实现数据的
封装。公有成员是类的外部表现(在类外可以对 其进行访问和修改),而私有和保护成员则被 隐藏了。
prev
在定义类时,通常将该类的所有属性(成员数
据)和只供内部调用的操作(成员函数)定义为私
next
有成员或保护成员。
例9.5
back
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/3/29
10.3 指针与数组
5
10.3.1 指向数组的指针
2. 二维数组的指针
a[0]+1 a[0]+2 a[0]+3
a[0]数组 0 1 2 3 a[1]数组 10 11 12 13 a[2]数组 20 21 22 23
⑵ 二维数组元素的地址
a[2]+1 a[2]+2 a[2]+3
a[0]、a[1]、a[2]是一维数组名, 所以a[i]+j是数组元素的地址。 数组元素a[i][j]的地址可以表示为下列形式:
a+2 a[2]
20 21 22 23
⑴ 二维数组的地址
例如:int a[3][4];
① 二维数组名a是数组的首地址。
② 二维数组a包含三个行元素:a[0]、a[1]、a[2] 。
三个行元素的地址分别是:a、a+1、a+2。
而a[0]、a[1]、a[2]也是地址量,是一维数组名,
即*(a+0)、*(a+1)、*(a+2)是一维数组首个元素地址。
lp++;
lp
q++;
2000H 2019H 2019H 200cH 2019H 2019H
cannot convert from 'int [2][3]' to 'int *'
7
x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2]
2020/3/29
10.3 指针与数组
➢ 指针数组就是数组中的每个元素均
1. 指针数组的定义 为指针类型
指针数组定义的一般形式:
数据类型标识符 *数组名[元素个数];
在这个定义中由于“[ ]”比“*”的优先级高,所 以数组名先与“[元素个数]”结合,形成数组的定义 形式,“*”表示数组中每个元素是指针类型,“数据类 型标识符”说明指针的目标变量的数据类型。例如:
int a[2][4], (*p)[4]=a; 则调用abc函数时可用
abc(a) 或 abc(p)
11
2020/3/29
7.2.4 二维数组应用举例(续)
12
【作业2】有一个N×M矩阵,编程序求出其中最大 的那个元素的值及其所在的行、列位置。
} 程序输出结果: s1<s2
思考:若有语句 if (s1= =s2) printf("s1=s2");比较的是什么?
2020/3/29
二维数组可看作是一种特殊的一维数组
3
例如,可以把x数组看作是包含二个元素的一维数组, 每个元素又是一个含有三个元素一维数组。 x为行指针,x[0]为元素指针
x[0]---- x[0][0],x[0][1],x[0][2]
int *ip[10];
char *cp[5];
2020/3/29
10
例如:P191
char c[4][8]={"Fortran","COBOL","BASIC","Pascal "};
char *cp[4]={c[0],c[1],c[2],c[3]};
char *str[5]={"int","long","char","float","double"};
作业
1
写出程序运行结果。
用行指针操作二维数组,找出最大值。
void main()
本周上 { int a[2][3]={1,2,9,4,5,6}; 机测试 cout<<print(a,2,3)<<endl;
} P167自测题7.5
结构体
P164例7.5
2020/3/29
2
例如:比较两个字符串的大小。写出运算结果
x[0]是数组名,是元素x[0][0]的地址
x[1]---- x[1][0],x[1][1],x[1][2]
x[1]是数组名, 是元素x[1][0]的地址
2020/3/29
10.3 指针与数组
4
10.3.1 指向数组的指针
2. 二维数组的指针
a a[0] a 0 1 2 3
a+1 a[1]
10 11 12 13
8
10.3.1 指向数组的指针
lp a 0 1 2 3
2. 二维数组的指针
lp
10 11 12 13
lp
20 21 22 23
【例10.6】用指向一维数组的指针变量输出lp数组元素。
#include <iostream.h>
void main( )
{ int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}};
&a[i][j]、a[i]+j 、*(a+i)+j
2020/3/29
10.3 指向数组的指针
指向一维数组的指针变量的定义形式: 数据类型标识符 (*变量名)[元素个数]
int x[2][3]={{0,1,2},{10,11,12}};
int (*lp)[3],*q; lp
lp=x;
q
q
q=x[0];
int (*lp)[4], j;
for (lp=a; lp<a+3; lp++) { for (j=0; j<4; j++) cout<<*(*lp+j)<<" ";
0123 10 11 12 13
cout<<endl;
20 21 22 23
}
2020/3/29
10.7 指针与数组
9
10.7 指针数组
#include <iostream.h> #include <string.h> void main( ) { char s1[ ]= "aBC",s2[ ]= "abc";
if (strcmp(s1,s2)==0) cout<<"s1=s2"; else if (strcmp(s1,s2)>0) cout<<"s1>s2"; else cout<<"s1<s2";
2020/3/29
8.3 指针与函数
8.3.3 指针变量作函数参数 2. 数组的指针作函数参数 ⑵ 二维二数维组数的组行的指指针针作作函函数数参参数数 例如被调函数abc的定义形式有以下三种: void abc(int b[2][4]) { …… } void abc(int b[ ][4]) { …… } void abc(int (*b)[4]) { …… } 在主调函数有如下定义:
str[0] cp csptr[[01]] csptr[[12]] cstpr[[23]] cstpr[[34]]
Ci 数n 组t \0 Fl oo r n t g r \0a n \0 Cc Oh Ba Or L \0\0 Bf Al So I a C t\0 \0 Pd ao su c b a ll e\0 \0