Chapter 5 複合資料型態.

Slides:



Advertisements
Similar presentations
电子成绩单项目实现.
Advertisements

親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第1单元 操作系统概论 第一节 绪论 操作系统定义.
第九章 字串 (String).
補充: Input from a text file
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
第九章 系 统 安 全 性 9.1 结构体 9.2 结构体型数组  9.3 结构体型指针 9.4 内存的动态分配 9.5 共用体
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
C语言程序设计 第十二章 位运算.
第一章 程序设计入门.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
第一章 C语言概述.
C 程序设计实例 1. 问题描述 2. 数据结构 3. 算法分析 4. 参考程序 5. 改进说明.
函數 授課:ANT 日期:2009/3/24.
選擇排序法 通訊一甲 B 楊穎穆.
程序设计II 第三讲 字符串处理.
C 程式設計— 指標.
函數 授課:ANT 日期:2011/3/28.
String C語言-字串.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
程序讲解 第一题: 将指定文件的m行到n行字符写到显示屏上,m和n值从键盘输入。 运行时输入及结果: please enter m,n:
STRUCTURE 授課:ANT 日期:2010/5/12.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
C語言簡介 日期 : 2018/12/2.
Function.
程式撰寫流程.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
C语言程序设计 李祥.
Chapter 7 指標.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
C语言 程序设计基础与试验 刘新国、2012年秋.
字符串和字符数组 字符串的输入和输出 字符串的基本操作
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
程式設計實習課(四) ----C 函數運用----
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第4章 顺序程序设计.
Struct結構 迴圈
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
輸入&輸出 函數 P20~P21.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
挑戰C++程式語言 ──第8章 進一步談字元與字串
函式庫補充資料.
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C qsort.
C程序设计.
第九章 指针.
第二章 类型、对象、运算符和表达式.
陣列與結構.
C程序设计.
本节内容 指针类型.
Introduction to the C Programming Language
程式設計--linear search 通訊一甲 B 楊穎穆.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
結構、檔案處理(Structure, File)
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
Chap 7 数 组 7.1 排序问题 7.2 找出矩阵中最大值所在的位置 7.3 进制转换.
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
多重條件選擇敘述
Programming & Language Telling the computer what to do
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
函式庫補充資料 1.
Presentation transcript:

Chapter 5 複合資料型態

簡介 陣列 字串 結構

陣列 這是最經典的資料結構 相同資料型別, 固定長度的序列 使用[]運算子對陣列做隨機存取 存取區間介於 0 ~ size-1 對於任何資料型別都適用 使用[]運算子對陣列做隨機存取 存取區間介於 0 ~ size-1

陣列內容倒轉輸出 #include <stdio.h> #include <stdlib.h> #define SIZE 10 int main(int argc, char *argv[]) { int i, n, input; int ns[SIZE]; for (n = 0; n < SIZE; n++) { scanf("%d", &input); if (input == 0) break; ns[n] = input; } for (i = n - 1; i >= 0; i--) printf("%d ", ns[i]); system("pause"); return 0;

陣列的初始化 可以使用列表初始化: int a[] = {1O,20,30,40,50}; 可以選擇給定維度 如果給定,必須要大於列表 通常用於零初始化 如果不給定,維度自動依列表初始化決定

多維度陣列 C並不存在多維度陣列 C,C++,JAVA 都允許陣列中有陣列 必須使用一個陣列來容納其他陣列 可以使用巢狀列表初始化

Example 2維陣列 3 x 2 : 1 2 3 4 5 6 C 儲存線性: 1 2 3 4 5 6 編譯器解釋為3個2元素陣列

Example #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a[][2] = {{1, 2}, {3, 4}, {5, 6}}; int i, j; for (i = 0; i < 3; ++i) { for (j = 0; j < 2; ++j) printf("%d ", a[i][j]); printf(“\n”); } system("pause"); return 0; /* 1 2 3 4 5 6 */

3維陣列 例子將示範如何建立以下3維列陣: 1 2 7 8 3 4 == a[0] 9 0 == a[1] 5 6 1 2

Example #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a[][3][2] = {{{1, 2}, {3, 4}, {5, 6}}, {{7, 8}, {9, 0}, {1, 2}}}; int i, j, k; for (i = 0; i < 2; ++i){ for (j = 0; j < 3; ++j){ for (k = 0; k < 2; ++k) printf("%d ", a[i][j][k]); printf("\n"); } system("pause"); return 0;

字串 字元陣列 字串結束將跟隨 null byte ('\0') C++ 和 Java 具有較佳的字串處理能力 字串將自動增加'\0': “hello” 變為: 'h' 'e' 'l' 'l' 'o' '\0'

字串範例 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char *argv[]) { char s1[] = {'c', 'h', 'r', 'i', 's', '\0'}; char s2[] = "rebots"; printf("s1 == %s\n", s1); printf("s2 == %s\n", s2); printf("s1 has %d chars\n", strlen(s1)); printf("s2 has %d chars\n", strlen(s2)); system("pause"); return 0; }/* s1 == chris s2 == rebots s1 has 5 chars s2 has 6 chars */

<string.h> 本函式庫包含常用的字串指令 多數假設字串尾部跟隨 NULL strcpy, strcat, memcpy strcmp, memcmp strchr, memchr, strrchr, strstr, strtok

例子 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int n = 1; float x = 2.0; char s[] = "chris"; char string[BUFSIZ]; // BUFSIZ=512 sprintf(string, "%d %f j%s", n + 1, x * 2, s + 1); printf("%s\n", string); sscanf(string, "%d %f %s", &n, &x, s); printf("n == %d, x == %f, s == %s\n", n, x, s); system("pause"); return 0; }/* 2 4.000000 jhris n == 2, x == 4.000000, s == jhris */

結構 用來記錄資料 使用 struct 當作關鍵字 收錄任何可定義的資料 存取成員需要利用 . 運算子 是把物件和資料抽象化的方法 另稱 成員 存取成員需要利用 . 運算子 是把物件和資料抽象化的方法 資料成員是物件的抽象概念

Structure Example #include <stdio.h> #include <string.h> #include <stdlib.h> struct maker { char last[16], first[11]; int score; }; int main(int argc, char *argv[]) { struct maker h1 = {"Bill", "Gates", 80 }; struct maker h2; strcpy(h2.last, "Steve"); strcpy(h2.first, "Jobs"); h2.score = h1.score - 5; printf("#1 == { %s, %s, %d }\n", h1.last, h1.first, h1.score); printf("#2 == { %s, %s, %d }\n", h2.last, h2.first, h2.score); system("pause"); return 0; }/* #1 == { Bill, Gates, 80 } #2 == { Steve, Jobs, 75 } */

Another Structure Example " MoneyMaker" struct struct 成員可以是任何型別 將示範結構內有結構

Example #include <stdio.h> #include <stdlib.h> #include <string.h> struct maker { char last[16], first[11]; int money, year; }; struct MoneyMaker { struct maker Persons[10]; int nPerson; int main(int argc, char *argv[]) { struct MoneyMaker mm; int i; mm.nPerson = 0;

Example continued strcpy(mm.Persons[mm.nPerson].last, "Bill"); strcpy(mm.Persons[mm.nPerson].first, "Gates"); mm.Persons[mm.nPerson].money = 56; mm.Persons[mm.nPerson++].year = 1955; strcpy(mm.Persons[mm.nPerson].last, "Steve"); strcpy(mm.Persons[mm.nPerson].first, "Jobs"); mm.Persons[mm.nPerson].money = 6; for (i = 0; i < mm.nPerson; ++i) printf("%d: {%s, %s, %d}\n", mm.Persons[i].year, mm.Persons[i].last, mm.Persons[i].first, mm.Persons[i].money); system("pause"); return 0; }

Output 1955: {Bill, Gates, 56} 1955: {Steve, Jobs, 6}

總結 複合資料型態 陣列索引起始 0 多維陣列是單維陣列的陣列 字串是字元的陣列 由一個空字元來結束字串陣列 結構是成員的集合 陣列和成員都支援列表初始化