11/25計程實習課 Speaker: Wen-Ching Lo.

Slides:



Advertisements
Similar presentations
資料坐火車 …… 談陣列 (Array) 綠園 2008/12/15. Array 的宣告 整數陣列的宣告  int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1]
Advertisements

綠園 2012/11/06. Array 的宣告 整數陣列的宣告 int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2]
變數與函數 大綱 : 對應關係 函數 函數值 顧震宇 台灣數位學習科技股份有限公司. 對應關係 蛋餅飯糰土司漢堡咖啡奶茶 25 元 30 元 25 元 35 元 25 元 20 元 顧震宇 老師 台灣數位學習科技股份有限公司 變數與函數 下表是早餐店價格表的一部分: 蛋餅 飯糰 土司 漢堡 咖啡 奶茶.
第一單元 建立java 程式.
Loops.
補充: Input from a text file
File Access 井民全製作.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
第六章 数 组 主讲教师 贾月乐 联系电话:
第十一章 結構.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
複習 int count=8; int* pt=&count; //等於 pt=&count, //不等於*pt=&count
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
【變數與記憶體位址】 變數(Variable)提供一個有名稱的記憶體儲存空間。一個變數包含資料型態、變數本身的值及它的位址值。
String C語言-字串.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Introduction to the C Programming Language
Java程式概觀.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
C語言簡介 日期 : 2018/12/2.
Introduction to the C Programming Language
SQL Stored Procedure SQL 預存程序.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
C语言 程序设计基础与试验 刘新国、2012年秋.
Introduction to the C Programming Language
Introduction to the C Programming Language
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
第三章 顺序结构程序设计 主讲教师 贾月乐 电话:
程式設計實習課(四) ----C 函數運用----
第4章 顺序程序设计.
第一單元 建立java 程式.
数组 梁春燕 华电信息管理教研室.
雲端計算.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
第九章 字串.
三 水 同 鄉 會 劉 本 章 學 校 數 學 科 年 級 : 忠 、孝 班 單 元 : 統 計 圖 製 作 及 閱 讀 單 位 :
挑戰C++程式語言 ──第8章 進一步談字元與字串
Pointer 指標 授課老師:蕭志明.
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C语言程序设计 李祥 QQ:
C qsort.
C程序设计.
Introduction to the C Programming Language
第二章 类型、对象、运算符和表达式.
挑戰C++程式語言 ──第7章 輸入與輸出.
第14章 結構與其他資料形式.
陣列與結構.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
11058: Encoding ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
簡單Java介紹.
Introduction to the C Programming Language
1757: Secret Chamber at Mount Rushmore
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
Programming & Language Telling the computer what to do
Introduction to the C Programming Language
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
C语言基础学习 从外行到入门.
Introduction to the C Programming Language
InputStreamReader Console Scanner
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

11/25計程實習課 Speaker: Wen-Ching Lo

在討論陣列是什麼之前,我們先來看一個問題,假設我們要連續輸入 5 個人的成績,然後再印出,這個程式可以寫成: #include <stdio.h> void main() {   int a1, a2, a3, a4, a5;   scanf("%d",&a1);   scanf("%d",&a2);  scanf("%d",&a3);   scanf("%d",&a4); scanf("%d",&a5); printf("%d\n",a5);   printf("%d\n",a4);   printf("%d\n",a3);   printf("%d\n",a2);   printf("%d\n",a1); }

Array 陣列 陣列(Array)是一組相同型態的連續變數,它們使用同一個變數名稱,而另外用一個索引值來指定使用第幾個變數,在 C 語言中要宣告一個陣列,可以使用下面的語法: 變數型態 陣列名稱[元素個數]; 例如:int s[100]; 宣告 s 是一個 int 的陣列,它有 100 個元素,分別是 s[0]、s[1]、s[2]、...、s[99],特別注意的是它的索引值是從 0 開始到 99, 而非 1 到 100。

Array 陣列 陣列的記憶體觀念 int a[5]={10,20,30,40,50}; a a[0] 0x300 10 0x302 20

Array 陣列 陣列的記憶體觀念 LOAD (300+i*2) ADD #100 STORE (300+i*2) For(i=0 ; i<5 ; i++) a[i] += 100; 110 0x300 120 0x302 130 0x304 140 0x306 150 0x308 a a[0] a[1] a[2] a[3] a[4]

二維陣列 二 維 陣 列 的 宣 告 方 式 如 下 所 述 : 陣列的名稱[ 列陣列的大小 ][ 行陣列大小 ] ; 陣列的名稱[ 列陣列的大小 ][ 行陣列大小 ] ;  For example: int array1 [ 10 ][ 20 ] ; float array2 [ 5 ][ 25 ] ; char array3 [ 100 ][ 50 ] ;

二維陣列 宣 告 陣 列 的 位 置 為 程 式 之 最 上 端 二 維 陣 列 的 排 列 結 構 如 下 圖 所 述 . 我 們 舉 例 一 陣 列 名 叫 A 的 陣 列 , 其 列 陣 列 大 小 有 m 個 , 行 陣 列 大 小 有 n 個 , 即 為 A[m][n] . 行 列 A[0][0] A[0][1] A[0][2] ...... A[0][n-1] A[1][0] A[1][1] A[1][2] A[1][n-1] A[2][0] A[2][1] A[2][2] A[2][n-1] . A[m-1][0] A[m-1][1] A[m-1][2] A[m-1][n-1]

字元陣列 字 元 陣 列 的 宣 告 方 式 如 下 所 述 : char 陣列的名稱 [ 陣列的大小 ] ; For example: char array1 [ 10 ] ; char array2 [ 5 ][ 25 ] ;

字元陣列 如 果 字 元 陣 列 以 字 元 的 方 式 來 存 取 陣 列 , 則 須 加 結 束 字 元 \0 於 陣 列 的 最 末 端 , 表 示 此 字 元 陣 列 的 結 束 例一 : char string[6]={'A','B','C','D','E','\0'}; char string1[2][6]={ {'A','B','C','D','E','\0'},{'F','G','H','I','J','\0'} }; 例二 : char string[5]="ABCDE"; char string1[2][5]={ "ABCDE","FGHIJ" }; 如 果 字 元 陣 列 以 字 串 的 方 式 來 存 取 陣 列 , 則 C 編 譯 器 會 自 動 在 字 串 最 末 端 加 上 結 束 字 元 \0 表 示 此 字 元 陣 列 的 結 束 , 所 以 我 們 不 需 自 行 加 入 .

字元陣列 Example: #include < stdio.h > void main(void){ char string1[5]={'A','B','C','D','E'}; char string2[6]={'A','B','C','D','E','\0'}; char string3[6]="ABCDE\0"; char string4[5]="ABCDE"; printf("string1 = \"%s\"\n",string1); printf("string2 = \"%s\"\n",string2); printf("string3 = \"%s\"\n",string3); printf("string4 = \"%s\"\n",string4);} 執 行 結 果: string1="ABCDE?ABCDE“ string2 = "ABCDE" string3 = "ABCDE" string4 = "ABCDE"

在 C 語言中也有一些特殊字元,通常以反斜線 \ 開頭: '\0'    空字元,用於字串的結束 '\n'    New Line,換行符號 '\r'    Carriage Return,回歸鍵(即 Enter 鍵) '\t'    Tab,跳格 '\b'    Backspace,倒退鍵 '\a'    Bell,嗶一聲 '\\'    反斜線 \ '\''    單引號 ' '\"'    雙引號  "

ASCII與字元關係 事實上,字元在電腦中是以一個八位元的整數來儲存(即 1 Byte),而這個符號與數字的對應關係我們稱為 ASCII 碼 也就是說,其實字元也是一個數字,因此也可以拿來做加減乘除等四則運算

Example char c='a'; c=c+3; printf("%c", c); 上面的例子會印出字元 d char c;  for(c='A'; c<='Z'; c++) printf("%c %d\n", c, c); 上面的程式可以印出 A 到 Z 及它們的 ASCII 碼值

字串 字串就是一段文字,我們可以用一對雙引號 " 把該段文字夾起來。 在 scanf 及 printf 讀入及印出一個字串則是使用 %s。 char s[20], t[20]=“NCCU"; scanf("%s", s); printf("%s", s); 在宣告字串的時候要注意它的長度,以免位數不夠造成程式錯誤。 事實上,每個字串後面都有一個 '\0' 的字元,也就是說“NCCU" 字串,事實上總共用了 5 Bytes,這一點要特別注意。 另外,由於 s 本身就是這個字元陣列的位址,所以在 scanf 裡我們不需要加上 & 符號。

字串 不過,用 scanf 讀取字串時,遇到空白字元便會結束,例如輸入 "Hello! NCCU!",則讀進來的字串只有 "Hello!" 而已。 為了避免這個情況,我們再介紹兩個函數 gets 、puts (也是定義在 stdio.h),gets 的功能是讀入字串,而 puts 則是印出字串: gets(s); puts(s);

字串 另外如果我們要做字串的比對、字串串接、字串長度等功能,沒有運算子可以使用,故必須使用函數來處理。和字串相關的函數都是定義在 string.h 中,常用的字串函數如下: strcpy(s1, s2)    將 s2 的內容複製到 s1 strcmp(s1, s2)    比較 s1、s2 的內容,如果相等傳回 0 strcat(s1, s2)    將 s2 串接到 s1 後面 strstr(s1, s2)    傳回 s2 字串在 s1字串中第一次出現的位置 strlen(s1)    傳回 s1 的長度(不含 '\0' 字元) strrev(s1)    將 s1 字串倒置

練習題(編碼問題) 美軍編碼規則如下:將訊息每個字母往後推兩位再傳出去,例如 A→C、B→D,而後面的 Y→A、Z→B,所有的訊息都是大寫字母。而收到訊息的則是將每個字母往前推兩位,例如 C→A、D→B,而前面的 A→Y、B→Z。 假設你是情報軍,要快速編碼及解碼美軍的訊息,希望完成一個程式,第一個字元為 + 代表要編碼,第一個字元為 - 代表要解碼,程式執行如下(紅色為輸入、淺藍色為輸出): +FIRE HKTG -UVQR STOP