複習 int count=8; int* pt=&count; //等於 pt=&count, //不等於*pt=&count

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 程式.
輸出與輸入(I/O).
File Access 井民全製作.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
Instructor:Po-Yu Kuo 教師:郭柏佑
13 C++字串 字串與數值轉換函數 13.1 C++字串類別 建立C++字串 13-2
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
第5章 基本輸入與輸出 5-1 程式的輸入與輸出 5-2 字元與字串的輸入 5-3 字元與字串的輸出 5-4 格式化資料的輸入
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 指定字串的初值 8-3 指標與字串 8-4 字串處理 8-5 C語言的字串函數.
列舉(enum).
String C語言-字串.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Java程式概觀.
C語言簡介 日期 : 2018/12/2.
SQL Stored Procedure SQL 預存程序.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
第四章 C 语言中的输入和输出.
Introduction to the C Programming Language
11/25計程實習課 Speaker: Wen-Ching Lo.
Introduction to the C Programming Language
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
程式設計實習課(四) ----C 函數運用----
第4章 顺序程序设计.
第一單元 建立java 程式.
Chapter 5 複合資料型態.
UpToDate Anywhere 設定方法
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
雲端計算.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
第十章 指標.
第九章 字串.
CH05. 選擇敘述.
期末考.
挑戰C++程式語言 ──第8章 進一步談字元與字串
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
輸出與輸入(I/O).
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C qsort.
C程序设计.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
第四章 C 语言中的输入和输出.
10115: Automatic Editing ★★☆☆☆
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
11058: Encoding ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
簡單Java介紹.
實習八 函式指標.
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
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
Unix指令4-文字編輯與程式撰寫.
Introduction to the C Programming Language
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

複習 int count=8; int* pt=&count; //等於 pt=&count, //不等於*pt=&count printf(“%d”,count); //得到9

複習 int i; int count[5]={1,2,3,4,5}; int* pt=count; //等於 pt=count, for(i=0;i<5;i++){ (*(pt+i))+=1; printf(“%d ”,count[i]); } //得到2,3,4,5,6

Class 6 字元與字串

字元 一個英文字母、數字或其他的符號 在記憶體中佔一個位元組 是一串文字(字串)的最小基本單位 ‘$’、‘!’、‘G’、‘l’ 都是一個字元 在記憶體中佔一個位元組 是一串文字(字串)的最小基本單位 要表示一個字元,用一對單引號’‘把該字元夾起來 char c='a';

字元與整數對應 每一個字元在記憶體中,其實可以當作是一個佔用1 byte的整數值 每一個整數值根據相對應的字元表,有其代表的字元 如果是3個字元 如果是一個整數 ‘1’ ‘2’ ‘3’ 123 49 50 51 1byte 4bytes

ASCII碼 符號與數字的對應關係 其實字元也是一個數字,因此也可以拿來做加減乘除等四則運算 數字 符號 48 65 A 97 a 49 1 65 A 97 a 49 1 66 B 98 b 50 2 67 C 99 c 51 3 68 D 100 d 52 4 69 E 101 e …

字元變數的宣告與設定 char i_am_a_char; char i_am_another='K'; //字元常數用兩個單引號括起來

印出字元 在printf()或scanf()中,字元使用的代表格式是%c 課堂練習 printf("Print a char: %c %c %c", i_am_another, 'B', 49); 課堂練習 用一個for迴圈印出48~122的整數值對應的字元

字元的運算 一個字元型態佔用1個位元組,數值介於0到255之間 下面程式會印出d 下面程式會印出A到Z及它們的ASCII碼值 因此無論是加、減運算或關係比較運算,都可以想作是整數運算 下面程式會印出d char c='a'; c=c+3; printf("%c", c); 下面程式會印出A到Z及它們的ASCII碼值 char c; for(c='A'; c<='Z'; c++) printf("%c %d\n", c, c);

字元的輸出與輸入 printf()&scanf() getchar()&putchar() scanf(“%c”,&ch); //scanf()後面的參數是位址 printf("This charactre is %c.\n",ch); getchar()&putchar() ch=getchar(); //一次讀一個字元 putchar(ch); //一次印一個字元 putchar('\n'); //印一個字元「換行」

注意 scanf()與getchar()在以鍵盤輸入的情況下,都需要使用者按下Enter鍵之後,才會開始進行讀取的動作 所以以scanf()函式讀取資料、或是以getchar()讀取字元時,都會遺留下換行字元'\n‘ 為了不影響下一次讀入字元的動作,記得要處理遺留下來的部分 善用fflush(stdin)

getch() 不需等待Enter鍵,使用者按下什麼,就讀入什麼的函式 欲使用getch()需#include <conio.h> ch = getch(); //getch()不會echo字元到螢幕上 while(getch()!='k'); //這個迴圈在沒輸入k之前不會離開

字元處理函式 #include <ctype.h> int isdigit(int c) 檢查c是不是一個數字字元 int isalpha(int c) 檢查c是不是一個英文字母 int isalnum(int c) 檢查c是不是一個數字或字母 int islower(int c) 檢查c是不是小寫字母 int isupper(int c) 檢查c是不是大寫字母 int tolower(int c) 如果c是大寫字母,則傳回小寫,否則傳原值 int toupper(int c) 如果c是小寫字母,則傳回大寫,否則傳原值

課堂練習 用一個for迴圈印出1~256的整數值對應的字元,以及其對應的4個值:isalpha()、isdigit()、islower()、isupper()

字串 在程式語言中,一個英文單字、一個句子,都可以當成一個字串 紀錄size超過一個字母的東西 在C語言中,一個一維的字元陣列可以當成一個字串 char student_name[30]; //表示學生名字最多30個字元

結尾字元 字串最後一定要有一個NULL(‘\0’、數值為0)字元 許多與字串處理相關的函式(如printf())都必須靠這個字元判斷字串的結尾在哪裡

字串初始值設定 char my_name[8] = "haKao"; //後三個字元都是NULL 字元(字串)指標 char *name_ptr = my_name;

字串的輸入與輸出 在 scanf及printf讀入及印出一個字串是使用%s char s[20]; scanf("%s", s); printf("%s", s); 由於s本身就是這個字元陣列的位址,所以在 scanf裡我們不需要加上&符號 在使用scanf()讀取字串時,遇到空白字元便會結束 假如輸入“Hello! Ann!",則讀進來的字串只有"Hello!"而已

gets、puts gets:讀入字串 puts :印出字串 gets(my_name); //讀到換行字元為止,並把'\n'取代成為NULL puts(my_name); //把my_name印出來,最後加上'\n' 上面要注意的是,如果是使用gets,會連換行一起讀進來,也就是字串後面會多一個'\n'字元

課堂練習 宣告一個20字元大小的字串後,讀入一個字串(使用gets()),將所有字元轉成大寫印出來(使用toupper())

字串相關函式 要做字串的比對、字串串接、字串長度等功能,沒有運算子可以使用,故必須使用函式來處理 和字串相關的函式都是定義在string.h中 strcpy(s1,s2) 將s2的內容複製到s1,並傳回s1 strcmp(s1,s2) 比較s1、s2的內容,如果相等傳回0,前者大傳回正值,否則負值 strcat(s1,s2) 將s2串接到s1後面,並傳回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

課堂練習 修改範例練習 編碼:往前推三位 解碼:往後推三位 Bonus A->X, D->A X->A, A->D 大小寫

字串陣列 字串陣列可以看作是一個二維的陣列: char names[4][11]; //可以放4個10個字的字串 printf("%c\n", names[0][0]); //印第一個字串的第一個字元 printf("%s\n", names[1]); //印第二個字串的內容 printf("%s\n", &names[1][1]); //第2個字串的第2個字元當作字串印出

字串陣列初始化 char names[4][11]={"Michael","John","Maggie","McGyver"}; \0 J o n g G y v r

作業七 參考hw7.doc www.csie.ntu.edu.tw/~r93041/C