excelvbarange对象基本操作应用示例

Excel VBA Range对象基本操作应用示例

[示例01] 赋值给某单元格

[示例01-01]

Sub test1()

Worksheets("Sheet1").Range("A5").Value = 22 MsgBox "工作表Sheet1内单元格A5中的值为" _ & Worksheets("Sheet1").Range("A5").Value

End Sub

[示例01-02]

Sub test2()

Worksheets("Sheet1").Range("A1").Value = _ Worksheets("Sheet1").Range("A5").Value MsgBox "现在A1单元格中的值也为" & _ Worksheets("Sheet1").Range("A5").Value

End Sub

[示例01-03]

Sub test3()

MsgBox "用公式填充单元格,本例为随机数公式" Range("A1:H8").Formula = "=Rand()"

End Sub

[示例01-04]

Sub test4()

Worksheets(1).Cells(1, 1).Value = 24

MsgBox "现在单元格A1的值为24"

End Sub

[示例01-05]

Sub test5()

MsgBox "给单元格设置公式,求B2至B5单元格区域之和" ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

End Sub

[示例01-06]

Sub test6()

MsgBox "设置单元格C5中的公式."

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例02] 引用单元格

Sub Random()

Dim myRange As Range

'设置对单元格区域的引用

Set myRange = Worksheets("Sheet1").Range("A1:D5")

'对Range对象进行操作

myRange.Formula = "=RAND()"

myRange.Font.Bold = True

End Sub

示例说明:可以设置Range对象变量来引用单元格区域,然后对该变量所代表的单元格区域进行操作。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例03] 清除单元格

[示例03-01]清除单元格中的内容(ClearContents方法) Sub testClearContents()

MsgBox "清除指定单元格区域中的内容"

Worksheets(1).Range("A1:H8").ClearContents

End Sub

[示例03-02]清除单元格中的格式(ClearFormats方法)

Sub testClearFormats()

MsgBox "清除指定单元格区域中的格式"

Worksheets(1).Range("A1:H8").ClearFormats

End Sub

[示例03-03]清除单元格中的批注(ClearComments方法) Sub testClearComments()

MsgBox "清除指定单元格区域中的批注"

Worksheets(1).Range("A1:H8").ClearComments

End Sub

[示例03-04]清除单元格中的全部,包括内容、格式和批注(Clear方法)

Sub testClear()

MsgBox "彻底清除指定单元格区域"

Worksheets(1).Range("A1:H8").Clear

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例04] Range和Cells

Sub test()

'设置单元格区域A1:J10的边框线条样式

With Worksheets(1)

.Range(.Cells(1, 1), _

.Cells(10, 10)).Borders.LineStyle = xlThick

End With

End Sub

示例说明:可用Range(cell1, cell2) 返回一个Range 对象,其中cell1和cell2为指定起始和终止位置的Range对象。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例05] 选取单元格区域(Select方法)

Sub testSelect()

'选取单元格区域A1:D5

Worksheets("Sheet1").Range("A1:D5").Select

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例06] 基于所选区域偏离至另一区域(Offset属性)

[示例06-01]

Sub testOffset()

Worksheets("Sheet1").Activate

Selection.Offset(3, 1).Select

End Sub

示例说明:可用Offset(row, column)(其中row和column为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。如上例选定位于当前选定区域左上角单元格的向下三行且向右一列处单元格区域。

[示例06-02] 选取距当前单元格指定行数和列数的单元格Sub ActiveCellOffice()

MsgBox "显示距当前单元格第3列、第2行的单元格中的值"

MsgBox ActiveCell.Offset(3, 2).Value

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例07] 调整区域的大小(Resize属性)

Sub ResizeRange()

Dim numRows As Integer, numcolumns As Integer Worksheets("Sheet1").Activate

numRows = Selection.Rows.Count

numcolumns = Selection.Columns.Count

Selection.Resize(numRows + 1, numcolumns + 1).Select End Sub

示例说明:本示例调整所选区域的大小,使之增加一行一列。- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例08] 选取多个区域(Union方法)

Sub testUnion()

Dim rng1 As Range, rng2 As Range, myMultiAreaRange As Range

Worksheets("sheet1").Activate

Set rng1 = Range("A1:B2")

Set rng2 = Range("C3:D4")

Set myMultiAreaRange = Union(rng1, rng2) myMultiAreaRange.Select

End Sub

示例说明:可用Union(range1, range2, ...) 返回多块区域,即该区域由两个或多个连续的单元格区域所组成。如上例创建由单元格区域A1:B2和C3:D4组合定义的对象,然后选定该定义区域。

[示例09] 激活已选区域中的单元格

Sub ActivateRange()

MsgBox "选取单元格区域B2:D6并将C4选中" ActiveSheet.Range("B3:D6").Select

Range("C5").Activate

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例10] 选取指定条件的单元格(SpecialCells方法)

Sub SelectSpecialCells()

MsgBox "选择当前工作表中所有公式单元格" ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Selec t

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例11] 选取矩形区域(CurrentRegion属性)

'选取包含当前单元格的矩形区域

'该区域周边为空白行和空白列

Sub SelectCurrentRegion()

MsgBox "选取包含当前单元格的矩形区域"

ActiveCell.CurrentRegion.Select

End Sub

[示例12] 选取当前工作表中已用单元格(UsedRange属性) '选取当前工作表中已使用的单元格区域

Sub SelectUsedRange()

MsgBox "选取当前工作表中已使用的单元格区域" _

& vbCrLf & "并显示其地址"

https://www.360docs.net/doc/5610683064.html,edRange.Select

MsgBox https://www.360docs.net/doc/5610683064.html,edRange.Address

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例13] 选取最边缘单元格(End属性)

'选取最下方的单元格

Sub SelectEndCell()

MsgBox "选取当前单元格区域内最下方的单元格" ActiveCell.End(xlDown).Select

End Sub

示例说明:可以改变参数xlDown以选取最左边、最右边、最上方的单元格。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例14]设置当前单元格的前一个单元格和后一个单元格的值

Sub SetCellValue()

MsgBox "将当前单元格中前面的单元格值设为""我前面的单元格""" & vbCrLf _

& "后面的单元格值设为""我后面的单元格"""

ActiveCell.Previous.Value = "我前面的单元格" ActiveCell.Next.Value = "我后面的单元格"

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例15]确认所选单元格区域中是否有公式(HasFormula属性)

Sub IfHasFormula()

If Selection.HasFormula = True Then

MsgBox "所选单元格中都有公式"

Else

MsgBox "所选单元格中,部分单元格没有公式"

End If

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例16] 公式单元格操作

[示例16-01]获取与运算结果单元格有直接关系的单元格Sub CalRelationCell()

MsgBox "选取与当前单元格的计算结果相关的单元格" ActiveCell.DirectPrecedents.Select

End Sub

[示例16-02]追踪公式单元格

Sub Cal1()

MsgBox "选取计算结果单元格相关的所有单元格" ActiveCell.Precedents.Select

End Sub

Sub TrackCell()

MsgBox "追踪运算结果单元格"

ActiveCell.ShowPrecedents

End Sub

Sub DelTrack()

MsgBox "删除追踪线"

ActiveCell.ShowPrecedents Remove:=True

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [示例17] 复制单元格(Copy方法)

Sub CopyRange()

MsgBox "在单元格B7中写入公式后,将B7的內容复制到C7:D7內"

Range("B7").Formula = "=Sum(B3:B6)"

Range("B7").Copy Destination:=Range("C7:D7")

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例18]获取单元格行列值(Row属性和Column属性)

Sub RangePosition()

MsgBox "显示所选单元格区域的行列值"

MsgBox "第" & Selection.Row & "行" &

Selection.Column & "列"

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例19]获取单元格区域的单元格数及行列数(Rows属性、Columns属性和Count属性)

Sub GetRowColumnNum()

MsgBox "显示所选取单元格区域的单元格数、行数和列数" MsgBox "单元格区域中的单元格数为:" & Selection.Count MsgBox "单元格区域中的行数为:" & Selection.Rows.Count MsgBox "单元格区域中的列数为:" &

Selection.Columns.Count

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例20]设置单元格中的文本格式

[示例20-01] 对齐文本

Sub HorizontalAlign()

MsgBox "将所选单元格区域中的文本左右对齐方式设为居

中"

Selection.HorizontalAlignment = xlHAlignCenter

End Sub

Sub VerticalAlign()

MsgBox "将所选单元格区域中的文本上下对齐方式设为居中"

Selection.RowHeight = 36

Selection.VerticalAlignment = xlVAlignCenter

End Sub

[示例20-02] 缩排文本(InsertIndent方法)

Sub Indent()

MsgBox "将所选单元格区域中的文本缩排值加1" Selection.InsertIndent 1

MsgBox "将缩排值恢复"

Selection.InsertIndent -1

End Sub

[示例20-03] 设置文本方向(Orientation属性)

Sub ChangeOrientation()

MsgBox "将所选单元格中的文本顺时针旋转45度" Selection.Orientation = 45

MsgBox "将文本由横向改为纵向"

Selection.Orientation = xlVertical

MsgBox "将文本方向恢复原值"

Selection.Orientation = xlHorizontal

End Sub

[示例20-04]自动换行(WrapText属性)

Sub ChangeRow()

Dim i

MsgBox "将所选单元格设置为自动换行"

i = Selection.WrapText

Selection.WrapText = True

MsgBox "恢复原状"

Selection.WrapText = i

End Sub

[示例20-05]将比单元格列宽长的文本缩小到能容纳列宽大小(ShrinkToFit属性)

Sub AutoFit()

Dim i

MsgBox "将长于列宽的文本缩到与列宽相同"

i = Selection.ShrinkToFit

Selection.ShrinkToFit = True

MsgBox "恢复原状"

Selection.ShrinkToFit = i

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例21]设置条件格式(FormatConditions属性)

Sub FormatConditions()

MsgBox "在所选单元格区域中将单元格值小于10的单元格中的文本变为红色"

Selection.FormatConditions.Add Type:=xlCellValue, _ Operator:=xlLessEqual, Formula1:="10"

Selection.FormatConditions(1).Font.ColorIndex = 3 MsgBox "恢复原状"

Selection.FormatConditions(1).Font.ColorIndex = xlAutomatic

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例22]插入批注(AddComment方法)

Sub EnterComment()

MsgBox "在当前单元格中输入批注"

ActiveCell.AddComment ("Hello")

https://www.360docs.net/doc/5610683064.html,ment.Visible = True

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例23]隐藏/显示单元格批注

Sub CellComment()

MsgBox "切换当前单元格批注的显示和隐藏状态" https://www.360docs.net/doc/5610683064.html,ment.Visible = Not

(https://www.360docs.net/doc/5610683064.html,ment.Visible)

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例24]改变所选单元格的颜色

Sub ChangeColor()

Dim iro As Integer

MsgBox "将所选单元格的颜色改为红色"

iro = Selection.Interior.ColorIndex

Selection.Interior.ColorIndex = 3

MsgBox "将所选单元格的颜色改为蓝色"

Selection.Interior.Color = RGB(0, 0, 255)

MsgBox "恢复原状"

Selection.Interior.ColorIndex = iro

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例25]改变单元格的图案

Sub ChangePattern()

Dim p, pc, i

MsgBox "依Pattern常数值的顺序改变所选单元格的图案" p = Selection.Interior.Pattern

pc = Selection.Interior.PatternColorIndex

For i = 9 To 16

With Selection.Interior

.Pattern = i

.PatternColor = RGB(255, 0, 0)

End With

MsgBox "常数值" & i

Next i

MsgBox "恢复原状"

Selection.Interior.Pattern = p

Selection.Interior.PatternColorIndex = pc

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [示例26]合并单元格

Sub MergeCells()

MsgBox "合并单元格A2:C2,并将文本设为居中对齐" Range("A2:C2").Select

With Selection

.MergeCells = True

.HorizontalAlignment = xlCenter

End With

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例27]限制单元格移动的范围

Sub ScrollArea1()

MsgBox "将单元格的移动范围限制在单元格区域B2:D6中" ActiveSheet.ScrollArea = "B2:D6"

End Sub

Sub ScrollArea2()

MsgBox "解除移动范围限制"

ActiveSheet.ScrollArea = ""

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例28]获取单元格的位置(Address属性)

Sub GetAddress()

MsgBox "显示所选单元格区域的地址"

MsgBox "绝对地址:" & Selection.Address

MsgBox "行的绝对地址:" &

Selection.Address(RowAbsolute:=False)

MsgBox "列的绝对地址:" &

Selection.Address(ColumnAbsolute:=False)

MsgBox "以R1C1形式显示:" &

Selection.Address(ReferenceStyle:=xlR1C1)

MsgBox "相对地址:" & Selection.Address(False, False)

End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

[示例29]删除单元格区域(Delete方法)

Sub DeleteRange()

MsgBox "删除单元格区域C2:D6后,右侧的单元格向左移动" ActiveSheet.Range("C2:D6").Delete (xlShiftToLeft)

End Sub

小结

下面对Range对象的一些常用属性和方法进行简单的小结。

1、Activate与Select

试验下面的过程:

Sub SelectAndActivate()

Range("B3:E10").Select

Range("C5").Activate

End Sub

其结果如下图所示:图05-01:Select与Activate Selection指单元格区域B3:E10,而ActiveCell则是单元格C5;ActiveCell代表单个的单元格,而Selection则可以代表单个单元格,也可以代表单元格区域。

2、Range属性

可以使用Application对象的Range属性引用Range对象,

Application.Range(“B2”) ‘代表当前工作表中的单元格B2

若引用当前工作表中的单元格,也可以忽略前面的Application对象。

Range(“A1:D10”) ‘代表当前工作表中的单元格区域A1:D10 Range(“A1:A10,C1:C10,E1:E10”) ‘代表当前工作表中非连

续的三个区域组成的单元格区域

Range属性也接受指向单元格区域对角的两个参数,如:Range(“A1”,”D10”) ‘代表单元格区域A1:D10

当然,Range属性也接受单元格区域名称,如:

Range(“Data”) ‘代表名为Data的数据区域

Range属性的参数可以是对象也可以是字符串,如:

Range(“A1”,Range(“LastCell”))

3、单元格引用的快捷方式

可以在引用区域两侧加上方括号来快速引用单元格区域,如:[B2]

[A1:D10]

[A1:A10,C1:C10,E1:E10]

[Data]

但其引用的是绝对区域。

4、Cells属性

可以使用Cells属性来引用Range对象。如:

ActiveSheet.Cells

Application.Cells ‘引用当前工作表中的所有单元格

Cell(2,2)

Cell(2,”B”) ‘引用单元格B2

Range(Cells(1,1),Cells(10,5)) ‘引用单元格区域A1:E10

若想在一个单元格区域中循环时,使用Cells属性是很方便的。

也可以使用Cells属性进行相对引用,如:

Range(“D10:G20”).Cells(2,3) ‘表示引用单元格区域

D10:G20中第2行第3列的单元格,即单元格F11

也可使用语句:Range(“D10”).Cells(2,3)达到同样的引用效果。

5、Offset属性

Offset属性基于当前单元格按所给参数进行偏移,与Cells 属性不同的是,它基于0即基准单元格为0,如:

Range(“A10”).Cells(1,1)和Range(“A10”).Offset(0,0)都表示单元格A10

当想引用于基准单元格区域同样大小的单元格区域时,则Offset属性是有用的。

6、Resize属性

可使用Resize属性获取相对于原单元格区域左上角单元格指定大小的区域。

C语言数据结构串的基本操作

实验九串的基本操作 #include #include #include typedef char Status; int strlen(char *p) { int i=0; while(*p++)i++; return i; } typedef struct { char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL int length; // 串长度 }HString; // 初始化(产生空串)字符串T void InitString(HString *T) { (*T).length=0; (*T).ch=NULL; } // 生成一个其值等于串常量chars的串T Status StrAssign(HString *T, char *chars) { int i,j; if((*T).ch) free((*T).ch); // 释放T原有空间 i = strlen(chars); // 求chars 的长度i if(!i) { // chars的长度为0 (*T).ch = NULL; (*T).length = 0; } else { // chars的长度不为0 (*T).ch = (char*)malloc(i*sizeof(char)); // 分配串空间 if(!(*T).ch) // 分配串空间失败 exit(0); for(j = 0; j < i; j++) // 拷贝串 (*T).ch[j] = chars[j]; (*T).length = i; } return 1; } // 由串S复制得串T int StrCopy(HString *T,HString S) { int i; if((*T).ch) free((*T).ch); // 释放T原有空间 (*T).ch=(char*)malloc(S.lengt h*sizeof(char)); // 分配串空间if(!(*T).ch) // 分配串空间失 败 exit(0); for(i=0;i

邻接表表示的图的基本操作的实现

邻接表表示的图的基本操作的实现 //采用邻接表完成无权无向及有向图的"建立、输出、深度遍历、广度遍历"操作 #include #include #define OK 1 #define ERROR -1 typedef int Status; typedef int ElemType; //此例中设元素为单值元素,类型为整型 #define MAX_VERTEX_NUM 20 //最大顶点个数 typedef int ElemType; //图顶点数据类型 typedef int QueueElemType;//队列结点数据类型 //链表结点类型定义 typedef struct Qnode { QueueElemType data; struct Qnode *next; }QNode; //队列类型定义: typedef struct Linkqueue { QNode *front,*rear; }LinkQueue; //图的数据类型定义 typedef struct Tablenode//表结点结构 { int adjVex;//邻接点域,存放与vi相邻接的顶点vj的序号j struct Tablenode *next;//指针域,将邻接表的所有表结点链在一起 float weight;//对于带权图,表示权值,对于无权图则可省略此数据域 }TableNode;

typedef struct Headnode//头结点结构 { ElemType vertex;//顶点域vertex,存放顶点vi的信息 struct Tablenode *firstEdge;//vi的邻接表的头指针 }HeadNode; typedef struct Mgraph { struct Headnode vector[MAX_VERTEX_NUM]; //顶点向量 int vexnum; //图中当前顶点数 } MGraph; //队列初始化 Status InitLinkQueue(LinkQueue *Q) { QNode *p; p=(QNode*)malloc(sizeof(QNode));//开辟头结点空间 if(p!=NULL) { p->next=NULL; Q->front=Q->rear=p; return OK; } else return ERROR; } //链式队列的入队操作,在已知队列的队尾插入一个元素e,修改队尾指针rear。 Status InsertLinkQueue(LinkQueue *Q,ElemType e) { QNode *p;

数据结构《第4章 串存储与基本操作的实现》

第四章串存储与基本操作的实现 本章学习要点 ◆熟悉串的相关概念以及串与线性表的关系 ◆重点掌握串的定长存储、堆分配存储的表示方法与基本操作的实现 ◆了解串的各种存储结构,能根据需要合理选用串的存储结构解决实际问题 “串”(string),是字符串的简称,它是一种特殊的线性表,其特殊性在于组成线性表的数据元素是单个字符。字符串在计算机处理实际问题中使用非常广泛,比如人名、地名、商品名、设备名等均为字符串。同样在文字编辑、自然语言理解和翻译、源程序的编辑和修改等方面,都离不开对字符串的处理。 4.1串的基本概念 4.1.1串的概念 1.串的定义 串(string)是由n个字符组成的有限序列,记为:S=”a0a1a2…a n-1” (n≥0)。 其中,S是串的名字,字符序列a0a1a2…a n-1是串的值,a i(0≤i≤n-1)可以是字母、数字或其他字符元素;由于在C语言系统中数组元素的下标是从0开始的,所以串中所含元素的序号等于该元素的下标值加1;串中所含字符的个数n称为该串的长度,长度为0的字符串称为空串(null string)。 从串的定义可以看出,串实际上是数据元素为字符的特殊的线性表。 例如: (1)A=“X123” (长度为4的串) (2)B=“12345654321” (长度为11的串) (3)C=“Bei Jing” (长度为8的串) (4)D=“” (长度为0的空串) (5)E=“This is a string” (长度为16的串) (6)F=“ is a ” (长度为6的串) 2.子串、主串和位置 串中任意连续的字符组成的子序列称为该串的子串;相应地,包含子串的串称为主串。串中的字符在串序列中的序号称为该字符在该串中的位置;子串的第一个字符在主串中的位置称为子串在主串中的位置。显然,串为其自身的子串,并规定空串为任何串的子串。显然,在不考虑空子串的情况下,一个长度为n的字符串具有n(n+1)/2个子串。 例如: 在上例的(6)中串F就是(5)中串E的子串,且子串F在主串E中的位置是5。由于空格符也是一个字符,所以在串G=“abc defghne”中包含有子串“c def”,而串“cdef”不是串G的子串。串G中第一个字符…e?的位置是6,第二个字符…e?的位置是11。 3.串的比较 如果两个串的长度相等且对应位置上的字符相同,则称这两个串相等。两个串A、B的比较过程是:从前往后逐个比较对应位置上的字符的ASCII码值,直到不相等或有一个字符串结束为止,此时的情况有以下几种: (1)两个串同时结束,表示A等于B; (2)A中字符的ASCII码值大于B中相应位置上字符的ASCII码值或B串结束,表示A大于B;(3)B中字符的ASCII码值大于A中相应位置上字符的ASCII码值或A串结束,表示A小于B。

数据结构 图的基本操作实现

实验五图的遍历及其应用实现 一、实验目的 1.熟悉图常用的存储结构。 2.掌握在图的邻接矩阵和邻接表两种结构上实现图的两种遍历方法实现。 3.会用图的遍历解决简单的实际问题。 二、实验内容 [题目一] :从键盘上输入图的顶点和边的信息,建立图的邻接表存储结构,然后以深度优先搜索和广度优先搜索遍历该图,并输出起对应的遍历序列. 试设计程序实现上述图的类型定义和基本操作,完成上述功能。该程序包括图类型以及每一种操作的具体的函数定义和主函数。 提示: 输入示例 上图的顶点和边的信息输入数据为: 5 7 DG A B C D E AB AE BC CD DA DB EC [题目二]:在图G中求一条从顶点 i 到顶点 s 的简单路径 [题目三]:寻求最佳旅游线路(ACM训练题) 在一个旅游交通网中,判断图中从某个城市A到B是否存在旅游费用在s1-s2元的旅游线路,为节省费用,不重游故地。若存在这样的旅游线路则并指出该旅游线路及其费用。 输入: 第一行:n //n-旅游城市个数 第2行:A B s1 s2 //s1,s2-金额数 第3行---第e+2行 ( 1≤e≤n(n-1)/2 ) 表示城市x,y之间的旅行费用,输入0 0 0 表示结束。

输出: 第一行表示 A到B的旅游线路景点序列 第二行表示沿此线路,从A到B的旅游费用 设计要求: 1、上机前,认真学习教材,熟练掌握图的构造和遍历算法,图的存储结 构也可使用邻接矩阵等其他结构. 2、上机前,认真独立地写出本次程序清单,流程图。图的构造和遍历算法 分别参阅讲义和参考教材事例 图的存储结构定义参考教材 相关函数声明: 1、/* 输入图的顶点和边的信息,建立图*/ void CreateGraph(MGraph &G) 2、/* 深度优先搜索遍历图*/ void DFSTraverse(Graph G, int v) 3、/*广度优先搜索遍历图 */ void BFSTraverse(Graph G, int v)4、 4、/* 其他相关函数 */…… 三、实验步骤 ㈠、数据结构与核心算法的设计描述 ㈡、函数调用及主函数设计 (可用函数的调用关系图说明) ㈢程序调试及运行结果分析 ㈣实验总结 四、主要算法流程图及程序清单 1、主要算法流程图: 2、程序清单 (程序过长,可附主要部分)

matlab常用对象操作

、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。!dir& 可以在dos状态下查看。 2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键Ctrl+P 返回前一行输入 方向下键Ctrl+N 返回下一行输入 方向左键Ctrl+B 光标向后移一个字符 方向右键Ctrl+F 光标向前移一个字符 Ctrl+方向右键 Ctrl+R 光标向右移一个字符 Ctrl+方向左键 Ctrl+L 光标向左移一个字符 home Ctrl+A 光标移到行首 End Ctrl+E 光标移到行尾 Esc Ctrl+U 清除一行 Del Ctrl+D 清除光标所在的字符 Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾 Ctrl+C 中断正在执行的命令 4、clc可以命令窗口显示的内容,但并不清除工作空间。 二、函数及运算 1、运算符: +:加,-:减, *:乘, /:除,\:左除 ^:幂,':复数的共轭转置,():制定运算顺序。 2、常用函数表: sin( ) 正弦(变量为弧度) Cot( ) 余切(变量为弧度) sind( ) 正弦(变量为度数) Cotd( ) 余切(变量为度数) asin( ) 反正弦(返回弧度) acot( ) 反余切(返回弧度) Asind( ) 反正弦(返回度数) acotd( ) 反余切(返回度数) cos( ) 余弦(变量为弧度) exp( ) 指数 cosd( ) 余弦(变量为度数) log( ) 对数 acos( ) 余正弦(返回弧度) log10( ) 以10为底对数 acosd( ) 余正弦(返回度数) sqrt( ) 开方 tan( ) 正切(变量为弧度) realsqrt( ) 返回非负根 tand( ) 正切(变量为度数) abs( ) 取绝对值

串的基本操作

串的基本操作 一、实验目的、意义 (1)理解串的堆分配存储结构。 (2)理解用它们表示时插入,生成串,联接串与求子串的算法。 (3)根据具体问题的需要,能够设计出相关算法。 二、实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: 定义串的堆分配存储,完成串的基本操作:插入,生成串,联接串,求子串等。 三、实验所涉及的知识点 C语言算法、循环算法、串的堆分配存储结构、插入,生成串,联接串与求子串的算法。 四、实验结果及分析 (所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出。) 五、总结与体会

(调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。) 调试程序时,出现了许多错误。如:串的堆分配存储结构、串的联接等。另外还有一些语法上的错误。由于对所学知识点概念模糊,试验课上未能完成此次上机作业。后来经过查阅教材,浏览网页等方式,才完成试验。这次试验出现错误最重要的原因就是对课本知识点理解不深刻以及编写代码时的粗心。以后要都去练习、实践,以完善自己的不足。 六、程序清单(包含注释) #include #include #include typedef char Status; int strlen(char *p) { int i=0; while(*p++)i++; return i; } typedef struct { char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL int length; // 串长度 }HString; // 初始化(产生空串)字符串T void InitString(HString *T) { (*T).length=0; (*T).ch=NULL; } // 生成一个其值等于串常量chars的串T Status StrAssign(HString *T, char *chars) { int i,j; if((*T).ch) free((*T).ch); // 释放T原有空间 i = strlen(chars); // 求chars的长度i if(!i)

第七讲 MAYA基本操作

第二讲MAY A基本操作 教学目的: 教学重点: 教学难点: 教学准备: 课时安排: 教学过程: 1、课前复习 (1)MAY A的菜单栏有什么特点? (2)MAY A有哪几种建模方式? (3)MAY A中,如何将某一视图最大化?如何又将之还原? (4)MAY A中,如何在一个视图中插入一张背景图片?如何设置一背景图片的显示属性?(5)MAY A中,如何建立一个图层?如何将一个对象放入该图层内?如何删除一个图层?如何清空一个图层?如何将图层对象了隐藏、锁定? (6)显示一个对象的热键盒的操作方法是什么? 2、新建、保存、打开与合并MAY A场景 (1)新建 方法1:File(文件)菜单下的New Scene命令可以新建一个场景; 方法2:通过工具栏中的“Create a new scene(新建一个新场景)”按钮来创建一个新场景;方法3:快捷键Ctrl+N; 在新建一个新场景之前,若要设置场景是对象的长度单位、角度单位及动画播放的起始帧或结束帧等,可单击File(文件)菜单下的New Scene命令后的属性设置小方块,弹出如下对话框,其中,Linear项是用来设置单位的,系统默认是centimeter(厘米),角度单位默认为度,帧数设置是每秒24帧,播放/动画起始帧是1,播放/动画结束帧是24。 (2)保存 方法1:File(文件)菜单下的Save Scene命令; 方法2:通过工具栏中的“Save the current scene(保存场景)”按钮来创建一个新场景;方法3:快捷键Ctrl+S; (3)打开 方法1:File(文件)菜单下的Open Scene命令; 方法2:通过工具栏中的“Open a scene(打开一个场景)”按钮来打开一个场景; 方法3:快捷键Ctrl+O;

Photoshop基本操作介绍(图文介绍)

第一课:工具的使用 一、Photoshop 简介: Adobe 公司出品的Photoshop 是目前最广泛的图像处理软件,常用于广告、艺术、平面设计等创作。也广泛用于网页设计和三维效果图的后期处理,对于业余图像爱好者,也可将自己的照片扫描到计算机,做出精美的效果。总之,Photoshop 是一个功能强大、用途广泛的软件,总能做出惊心动魄的作品。 二、认识工具栏 1、 选框工具:用于选取需要的区域 ----选择一个像素的横向区域 ----选择一个像素的竖向区域

属性栏: 注:按shift 键+ 框选,可画出正方形或正圆形区域 2、 移动工具 : -----用于移动图层或选区里的图像 3、套索工具: ----用于套索出选区 ----用于套索出多边形选区 ----可根据颜色的区别而自动产生套索选区 4、魔术棒工具: ----根据颜色相似原理,选择颜色相近的区域。 注:“容差”,定义可抹除的颜色范围,高容差会抹除范围更广的像素。 5、修复工具: 且是 ----类似于“仿制图工具”,但有智能修复功能。 ----用于大面积的修复 一新 ----用采样点的颜色替换原图像的颜色 注:Alt+鼠标单击,可拾取采样点。 6、仿制图章工具----仿制图章工具从图像中取样,然后您可将样本应用到其它图像或同一图像的其它部分。 ----仿制图章工具从图像中取样,然后将样本应用到其它图像或同 一图像的其它部分(按Alt键,拾取采样点)。 ----可先自定义一个图案,然后把图案复制到图像的其它区域或其它图像上。

三、小技巧: ①、取消选区:【Ctrl +D 】 ②、反选选区:【Shif+F7】 ③、复位调板:窗口—工作区—复位调板位置。 ④、ctrl+[+、-]=图像的缩放 ⑤空格键:抓手工具 ⑥Atl+Delete = 用前景色填充 Ctrl+Delete = 用背景色填充 第二课:工具的使用二 一、工具栏 自由变换工具:【 Ctrl +T 】 2、使用框选工具的时候,按【Shift 】后再框选,则框选出正圆或正方形。 按【Alt 】后再框选,则选区以鼠标点为中心

envi图像处理基本操作

使用ENVI进行图像处理 主要介绍利用envi进行图像处理的基本操作,主要分为图像合成、图像裁减、图像校正、图像镶嵌、图像融合、图像增强。 分辨率:空间分辨率、波谱分辨率、时间分辨率、辐射分辨率。咱们平时所说的分辨率是指?怎么理解? 1、图像合成 对于多光谱影像,当我们要得到彩色影像时,需要进行图像合成,产生一个与自然界颜色一致的真彩色(假彩色)图像。 对于不同类型的影像需要不同的波段进行合成,如中巴CCD影像共5个波段,一般选择2、4、3进行合成。(为什么不选择其他波段?重影/不是真彩色)。SOPT5影像共7个波段,一般选择7、4、3三个波段。 操作过程以中巴资源卫星影像为例 中巴资源卫星影像共有五个波段,选择2、4、3三个波段对R、G、B赋值进行赋值。 在ENVI中的操作如下: (1)file→open image file→打开2、3、4三个波段,选择RGB,分别将2、4、3赋予RGB。(2)在#1窗口file---〉save image as-→image file。 (3)在主菜单中将合成的文件存为tiff格式(file-→save file as-→tiff/geotiff) 即可得到我们需要的彩色图像。 2、图像裁减 有时如果处理较大的图像比较困难,需要我们进行裁减,以方便处理。如在上海出差时使用的P6、SOPT5,图幅太大不能直接校正需要裁减。 裁减图像,首先制作AOI文件再根据AOI进行裁减。一般分为两种:指定范围裁减、不指定范围裁减。 不指定范围裁减在ENVI中的操作如下: (1)首先将感兴趣区存为AOI文件 file→open image file打开原图像→选择IMAGE窗口菜单overlay→region of interesting 选择划定感兴趣区的窗口如scroll,从ROI_Type菜单选择ROI的类型如Rectangle,在窗口中选出需要选择的区域。在ROI窗口file→Save ROIs将感兴趣区存为ROI文件。

数据结构3-串及其应用.

实验3:串及其应用 一、实验目的 掌握串类型的实现方法和文本模式匹配方法,熟悉一般文字处理软件的设计方法。 二、问题描述 全屏幕文本编辑器通过终端对文本文件进行创建、插入、删除、修改、存储等操作。用户可完成对文本的插入、删除、修改等功能。 三、实验要求 1、对光标实现如下操作:上、下、左、右移动一个字符位置;向前、后翻页;光标移 至文件首、尾;光标移至本行首、尾。 2、实现基本编辑命令: I----在当前光标前插入内容,按ESC结束 F----在当前光标后插入内容,按ESC结束 D----删除光标所在行 ND---删除光标位置开始的n行 N-----删除光标上的字符 W----将修改后的文本保存下来 Q----退出编辑状态。 四、实验环境

PC微机 DOS操作系统或Windows 操作系统 Turbo C 程序集成环境或Visual C++ 程序集成环境 五、实验步骤 1、在内存开辟可容纳80行大小的编辑工作区和buffer 的修改缓冲区。 2、要求用户输入编辑文件名,对读入的文件建立相应的页表和行表,在文本编辑程序 中设立页指针、行指针、字符指针,分别指示当前操作的页、行、字符。 3、执行插入、删除、修改操作时,将本次操作内容放到缓冲区; 4、操作确定后,将修改后的文本存到文件中。 六、测试数据 自行设定。 七、实验报告要求 实验报告应包括以下几个部分: 1、问题描述; 2、算法的设计描述; 3、测试结果的分析与讨论。 4、设计与实现过程中的体会,进一步的改进设想。 5、实验总结。

八、思考题 1、对命令格式非法等错误做严格检查和适当处理。 2、扩充编辑操作,如对某行进行串替换?

图的基本操作(邻接表)

标头.h #include #include #include #include #define TRUE 1 #define FLASE 0 #define OK 1 #define ERROR 0 #define FALSE 0 #define INFINITY INT_MAX//无穷大 typedef int status; #define MAX_VERTEX_NUM 20 #define MAX_NAME 5 #define MAX_INFO 20 typedef int VRType; typedef int InfoType; typedef char VertexType[MAX_NAME]; enum GraphKind{DG,DN,AG,AN};// 有向图,有向网,无向图,无向图 struct ArcNode { int adjvex; //该弧所指向的顶点的位置 ArcNode *nextarc;//指向吓下一条弧的指针 InfoType *info;//网的权值指针 };//表结点 typedef struct { VertexType data;//顶点信息 ArcNode *firstarc;//第一个表结点的地址,指向第一条依附该顶点的弧的指针 }VNode,AdjList[MAX_VERTEX_NUM]; //头结点 struct ALGraph { AdjList vertices; int vexnum,arcnum;//图的当前顶点数和弧数 int kind; //图的种类标志 }; int LocateVex(ALGraph G,VertexType u) {//初始条件:图G存在,u和G中顶点有相同的特征

Photoshop基本操作介绍(图文介绍)

第一课:工具的使用 、 Photoshop 简介: Adobe 公司出品的 Photoshop 是目前最广泛的图像处理软件,常用于广告、艺术、平面 设计等创作。也广泛用于网页设计和三维效果图的后期处理,对于业余图像爱好者,也 可将自己的照片扫描到计算机,做出精美的效果。总之, Photoshop 是一个功能强大、 用途广泛的软件,总能做出惊心动魄的作品。 、认识工具栏 1、 选框工具 :用于选取需要的区域 选择一个像素的横向区域 选择一个像素的竖向区域

注:按 shift 键 +框选,可画出正方形或正圆形区域 可根据颜色的区别而自动产生套索选区 根据颜色相似原理,选择颜色相近的区域。 5、 修复工具 : 类似于“仿制图工具” ,但有智能修复功能。 用于大面积的修复 用采样点的颜色替换原图像的颜色 注: Alt+ 鼠标单击,可拾取采样点。 6、仿制图章工具 仿制图章工具从图像中取样, 然后您可将样本应用到其它图像或同一 图像的其它部分。 - 仿制图章工具从图像中取样,然后将样本应用到其它图像或同 一图像的其它部分(按 Alt 键,拾取采样点) 。 区域或其 它图像上。 2、 移动工具 : 3、 套索工具 : 用于移动图层或选区里的图像 - - 用于套索出选区 用于套索出多边形选 区 属性栏: 选区相交 单个选区 选区相加 选区相减 4、魔术棒工具 ,定义可抹除的颜色范围,高容差会抹除范围更广的像素。 且是 --------- -

三、小技巧: ①、取消选 区: 【Ctrl +D】 ②、反选选 区: 【Shif+F7 】 ③、 复位调 板: 窗口—工作区—复位调板位置。 ④、 ctrl+[+ 、 -]= 图像的缩放 ⑤空格键:抓手工具 ⑥ Atl+Delete = 用前景色填充 Ctrl+Delete = 用背景色填充 第二课:工具的使用二 模1、糊自工由具变换工具:【Ctrl +T】减淡工具 模糊工具 2、使用框选工具的时候,按【Shift 】后再框选,则框选出正圆或正方形。

Application对象基本操作应用示例

Application对象基本操作应用示例 Application对象代表整个Microsoft Excel应用程序,带有175个属性和52个方法,可以设置整个应用程序的环境或配置应用程序。 示例01-01:体验开/关屏幕更新(ScreenUpdating属性) Sub 关闭屏幕更新() MsgBox "顺序切换工作表Sheet1→Sheet2→Sheet3→Sheet2,先开启屏幕更新,然后关闭屏幕更新" Worksheets(1).Select MsgBox "目前屏幕中显示工作表Sheet1" Application.ScreenUpdating = True Worksheets(2).Select MsgBox "显示Sheet2了吗?" Worksheets(3).Select MsgBox "显示Sheet3了吗?" Worksheets(2).Select MsgBox "下面与前面执行的程序代码相同,但关闭屏幕更新功能" Worksheets(1).Select MsgBox "目前屏幕中显示工作表Sheet1" & Chr(10) & "关屏屏幕更新功能" Application.ScreenUpdating = False Worksheets(2).Select MsgBox "显示Sheet2了吗?" Worksheets(3).Select MsgBox "显示Sheet3了吗?" Worksheets(2).Select Application.ScreenUpdating = True End Sub 示例说明:ScreenUpdating属性用来控制屏幕更新。当运行一个宏程序处理涉及到多个工作表或单元格中的大量数据时,若没有关闭屏幕更新,则会占用CPU的处理时间,从而降低程序的运行速度,而关闭该属性则可显著提高程序运行速度。 示例01-02:使用状态栏(StatusBar属性) Sub testStatusBar() Application.DisplayStatusBar = True '开启状态栏显示 '赋值状态栏显示的文本 Application.StatusBar = "https://www.360docs.net/doc/5610683064.html," End Sub 示例说明:StatusBar属性用来指定显示在状态栏上的信息。若不想再显示状态栏文本,可使用Applicat ion.StatusBar = False语句关闭状态栏显示,也可以在程序开始将原先的状态栏设置存储,如使用语句o ldStatusBar = Application.DisplayStatusBar将状态栏原来的信息存储在变量oldStatusBar,在程序运行完成或退出时,将变量重新赋值给状态栏,如使用语句Application.DisplayStatusBar = oldStatusBa r,以恢复状态栏原状。

3Dunity基本操作

一、【实验名称】 Unity3D的基本操作 二、【实验目的】 通过简单游戏场景的设计与制作,进一步熟悉Unity3D的基本操作,掌握Unity3d中地形、树木、草、天空盒、雾、影子等的绘制与添加的方法,掌握贴图材质的编辑设置。 三、【实验原理】 Unity3D操作方法,地形、树、草的绘制,天空盒、雾及影子效果的添加方法,材质贴图的编辑,地形中贴图的编辑设置。 四、【具体操作内容及要求】 1.在Unity3D平台中,利用提供的素材完成游戏开始界面的设计制作。 2. 在主场景中设计并绘制游戏地形,要求包含灯光、地面、多种树木、草丛、石头、湖面等对象,注意材质贴图的编辑和设置。 2. 在主场景中应用天空盒效果。 3. 在主场景中实现雾及影子效果。 五、具体实验步骤 1.在GameObject->CreateOther->Terrain里创建地形,在右面的设置面板点击 修改地形的面积(如图1); 图1 2.在GameObject->CreateOther->Directional light里创建平行光(如图2);

图2 3. 该图标用于建立无极限高的山峰,该图标比第一个图标多了一个参 数值Height,设置该参数可限定山的高度,使用该图标可平滑山峰,通过改变BrushSize和Opacity的参数建立不同的山峰(如图3); 图3 4. 该图标可用于给地形贴图,点击Assets->Importpackage->TerrainAssets 导入地形的贴图数据库,点击可选择已导入的贴图材料进行贴图(如图4);

图4 5. 该图标分别可用于给场景添加树木和草,方法为点击菜单Assets-> Importpackage->TreeCreator和TerrainAssets分别导入树木和草的数据库,点 击或添加已导入的树木和草材料(如图5); 图5 6.点击Assets->Importpackage->Sykboxes导入天空的材料数据库,点击Edit-> RenderSettings,在Inspector面板修改相应的参数可添加雾气效果,点击 可选择已导入的天空材料,点击Hierarchy

数据结构串基本操作代码

实验三串 //串的基本操作 #include "stdio.h" #include "stdlib.h" #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN+1]; void strlength(SString S)//求字串并放到 S[0] 中 { int m; for(m=1;S[m]!='\0';m++); S[0]=m-1; } void insert(SString S,int n,char a)//是插入的位置 a 是插入的字符{ strlength(S); int i; for(i=S[0];i>=n;i--) S[i+1]=S[i]; S[n]=a; S[S[0]+2]='\0'; } int compare(SString S,SString T) { strlength(S); strlength(T); int i; for(i=1;i<=S[0]&&i<=T[0];i++) { if(S[i]>T[i]) return 1; if(S[i]T[0]) return 1;

else if(S[0]S[0]||len<0||len>S[0]-pos+1) { printf("Error!position or length is out of range\n"); return 0; } for(i=1;i<=len;i++)

图的基本操作与实现的课程设计报告

图的基本操作与实现的课程设计报 告 中国矿业大学徐海学院计算机系 《软件认知实践》报告 姓名:_学号: 专业:___________________

设计题目:_______________ 指导教师:____________________________ 2013年12月30日

第1章题目概述 第1.1节题目要求. 第1.2节主要难点 第2章系统流程 第3章数据结构和算法 第4章核心代码分析.. 第5章复杂度分析 参考文献 第一章题目概述 第1.1节题目要求 (1) 自选存储结构,输入含n 个顶点(用字符表示顶点)和e 条边的图G ; (2) 求每个顶点的度,输出结果; (3) 指定任意顶点x 为初始顶点,对图G 作DFS 遍历,输出DFS 顶点序列(提示:使用一个栈 实 现 DFS); ⑷指定任意顶点x 为初始顶点,对图G 作BFS 遍历,输出BFS 顶点序列(提示:使用一个队列 实现BFS); (5) 输入顶点x,查找图G:若存在含x 的顶点,则删除该结点及与之相关连的边,并作DFS 遍 历(执行操作3);否则输出信息“无x” ; (6) 判断图G 是否是连通图,输出信息“YES” / “NO”; (7) 如果选用的存储结构是邻接矩阵,则用邻接矩阵的信息生成图G 的邻接表,即复制图G, 然再执行操作(2);反之亦然。 .2 .2 .3 .4 .5 .6 25 25

第1. 2节主要难点 (1)自选存储结构创建一个图:通过用户从键盘敲入的两个数值分别确定图的顶点数和边数,选择邻接矩阵存储结构将图的结点信息存储在一个顺序表中,图的边信息存储在一个二维数组中。 (2)求每个顶点的度:

串的基本操作

i 串的基本操作 一、 实验目的、意义 (1) 理解串的堆分配存储结构。 (2) 理解用它们表示时插入,生成串,联接串与求子串的算法。 (3) 根据具体问题的需要,能够设计出相关算法。 二、 实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输 入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修 改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: 定义串的堆分配存储,完成串的基本操作:插入,生成串,联接串,求子串 三、实验所涉及的知识点 C 语言算法、循环算法、串的堆分配存储结构、插入,生成串,联接 串与求子串的算法。 四、实验结果及分析 (所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图 方式给出。) F 'E=?JK^?t?iS^?Deb ug?T extl .e κe 1 n 呂扇: c-?S 》爭t -託联接串0产主的串片为:GOd bιje!God luck? :GOd bj/ef &串空否? ?<1: X 肌否) GDd Inch? ?s70 ≡ OO ??串t 相同的子串用串討弋普后.串晚: GQqd by^tGood Iucl

5.3 基本操作

一、实体对象 包括基本图形、图块、标注等实体对象的创建,及图形平移、缩放、复制、删除等操作编辑以及点、线、面、体等图形的几何关系运算。 1、创建对象P310 对象的创建主要通过实体的构造函数。 常用到的命名空间: Autodesk.AutoCAD.ApplicationServices Autodesk.AutoCAD.DatabaseServices Autodesk.AutoCAD.Geometry 2、编辑对象P323 图形对象通用的编辑方法包括及平移、缩放、复制、旋转、镜像、阵列等。 常用到的命名空间: System.Collections.Generic; Autodesk.AutoCAD.DatabaseServices; Autodesk.AutoCAD.Geometry; 2.1 Move P323 2.2 CopyTo P323 2.3 Rotate P324 2.4 Scale P324 2.5 Mirror P324 2.6 Offset P325 2.7 ArrayRectang ArrayPolar P325 2.8 SetDynamicValue 设置动态块属性P326 2.9 MoveTop 改变对象绘图次序P327 2.10 WBClone 写块克隆P327

3、几何关系P328 介绍常用的基本几何运算的方法。 常用到的命名空间: System.Collections.Generic; Autodesk.AutoCAD.DatabaseServices; Autodesk.AutoCAD.Geometry; (3.1)角度与弧度转换P328 AngToRad RadToAng (3.2)夹角 P328 两点组成的线段与X轴之间夹角 两直线间夹角 (3.3)距离 P329 点到曲线距离 直线距离 (3.4)相对点 P329 获取与给定点指定角度和距离的点 获取与给定点相对距离的点 (3.5)中点 P330 计算两点中点 计算线段中点 (3.6)重合P330 判断点是否重合 判断线段是否重合 获取两条线段重合部分 (3.7)相交P331 给定延伸方式求曲线交点 判断点是否在曲线上

实验四 串及其应用

实验4:串及其应用 一、实验目的 掌握串类型的实现方法和文本模式匹配方法,熟悉一般文字处理软件的设计方法。二、问题描述 全屏幕文本编辑器通过终端对文本文件进行创建、插入、删除、修改、存储等操作。用户可完成对文本的插入、删除、修改等功能。 三、实验要求 1、对光标实现如下操作:上、下、左、右移动一个字符位置;向前、后翻页;光标移 至文件首、尾;光标移至本行首、尾。 2、实现基本编辑命令: I----在当前光标前插入内容,按ESC结束 F----在当前光标后插入内容,按ESC结束 D----删除光标所在行 ND---删除光标位置开始的n行 N-----删除光标上的字符 W----将修改后的文本保存下来 Q----退出编辑状态。 四、实验环境 PC微机 DOS操作系统或Windows 操作系统 Turbo C 程序集成环境或Visual C++ 程序集成环境 五、实验步骤 1、在内存开辟可容纳80行大小的编辑工作区和buffer 的修改缓冲区。 2、要求用户输入编辑文件名,对读入的文件建立相应的页表和行表,在文本编辑程序 中设立页指针、行指针、字符指针,分别指示当前操作的页、行、字符。 3、执行插入、删除、修改操作时,将本次操作内容放到缓冲区; 4、操作确定后,将修改后的文本存到文件中。 六、测试数据 自行设定。 七、算法设计 串的基本操作: 一、串赋值:

Status StrAssign(HString &T,char *chars) { // 生成一个其值等于串常量chars的串T int i,j; if(T.ch) free(T.ch); // 释放T原有空间 i=strlen(chars); // 求chars的长度i if(!i) { // chars的长度为0 T.ch=NULL; T.length=0; } else { // chars的长度不为0 T.ch=(char*)malloc(i*sizeof(char)); // 分配串空间 if(!T.ch) // 分配串空间失败 exit(OVERFLOW); for(j=0;j #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等 struct HString { char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL int length; // 串长度 }; /***************文本编辑器的程序 **********************/ #define MAX_LEN 50 // 文件最大行数 #define LINE_LEN 80 // 每行字符数最大值+1 #define NAME_LEN 20 // 文件名最大长度(包括盘符、路径)+1 Status StrAssign(HString &T,char *chars) { // 生成一个其值等于串常量chars的串

相关文档
最新文档