C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.

Slides:



Advertisements
Similar presentations
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
Advertisements

第九章 字串 (String).
補充: Input from a text file
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
C语言程序设计 第八章 函数.
第六章 数 组 主讲教师 贾月乐 联系电话:
高级语言程序设计 主讲人:陈玉华.
第2章 分支结构 P if语句 2.2 switch语句 2.3 用条件运算符转换大小写字母 2.4 程序举例
Class 2 流程控制-選擇敘述與迴圈.
函數 授課:ANT 日期:2009/3/24.
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
函數 授課:ANT 日期:2011/3/28.
C程序设计.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
Introduction to the C Programming Language
Introduction to the C Programming Language
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
STRUCTURE 授課:ANT 日期:2010/5/12.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
Function.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
Introduction to the C Programming Language
第二章 顺序结构 1 数据类型和标识符、常量与变量 2 运算符和表达式 3 简单的输入输出 4 程序举例.
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
第四章 C 语言中的输入和输出.
C语言 程序设计基础与试验 刘新国、2012年秋.
字符串和字符数组 字符串的输入和输出 字符串的基本操作
第三章 顺序结构程序设计 主讲教师 贾月乐 电话:
第3章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 3.1 格式化输出——printf()函数 3.2 格式化输入——scanf()函数.
第4章 顺序程序设计.
PHP+MySQL互動式網頁程式設計班 期末考 講師:林業峻 CSIE, NTU 7 / 11, 2010.
数组 梁春燕 华电信息管理教研室.
第二章 基本数据类型及运算 C数据类型概述 基本数据类型 运算符和表达式 混合运算与类型转换 数据的输入输出 顺序程序设计举例.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
資料結構與C++程式設計進階 排序與搜尋 講師:林業峻 CSIE, NTU 6/ 14, 2010.
第3章 變數、算術運算、 數學函數及輸入輸出.
資料結構與C++程式設計進階 實作練習 講師:林業峻 CSIE, NTU 6/ 24, 2010.
for 迴圈 while迴圈 do-while迴圈 break 與 continue goto 與 標籤 程式觀摩
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
C语言程序设计 教案 崔武子制作
函式庫補充資料.
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
輸出與輸入(I/O).
<编程达人入门课程> 本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C程序设计.
資料結構與C++程式設計進階 遞迴(Recursion) 講師:林業峻 CSIE, NTU 6/ 17, 2010.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
第二章 类型、对象、运算符和表达式.
第三章 基本的輸出與輸入函數 (Basic Output & Input Function)
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
第四章 C 语言中的输入和输出.
第4章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 4.1 格式化输出——printf()函数 4.2 格式化输入——scanf()函数.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
Introduction to the C Programming Language
結構、檔案處理(Structure, File)
1.4WIN32中的宽字符.
本节内容 C语言中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第11章 字符和内存处理 一、字符数组、指针和字符串的初始化作用 二、strlen函数确定字符串有效长度 三、strcpy函数拷贝字符串.
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015

課程大綱 字元 字串 作業

字元 一個字元可存0~255 (1Byte) 電腦表示一個符號或文字的方法 C語言用單引號表示字元,並使用char變數儲存 給一個符號、文字一個編號 (ASCII字碼) 例: A  65, B  66, … , Z  90 a  97, b  98, … , z  122 0  48, 1  49, … , 9  57 +  43, -  45 C語言用單引號表示字元,並使用char變數儲存 char ch = 'A'; char ch = 65;

字元表

字元 getchar() putchar() 輸入字元 輸出字元 #include <stdio.h> int main() { char ch; ch = getchar(); putchar(ch); putchar('\n'); return 0; }

字元 getch() getche() 輸入字元, 不需按enter, 輸入內容不顯示於螢幕 #include <conio.h> int main() { char ch; ch = getch(); //比較使用getche() return 0; }

字元應用 判斷輸入字元是大寫英文, 小寫英文, 數字, 或其他 #include <stdio.h> int main() { char ch; ch = getchar(); if(ch>='0' && ch<='9') printf("你輸入了數字\n"); else if(ch>='A' && ch<='Z') printf("你輸入了大寫英文\n"); else if(ch>='a' && ch<='z') printf("你輸入了小寫英文\n"); else printf("你輸入了其他字元\n"); return 0; }

字元應用 將輸入的小寫英文轉成大寫英文 #include <stdio.h> int main() { char ch; ch = getchar(); if(ch>='a' && ch<='z') ch-=32; //或 ch-=('a'-'A'); printf("%c\n", ch); } else if(ch>='A' && ch<='Z') else printf("你輸入的不是英文字母\n"); return 0;

課程大綱 字元 字串 作業

字串 字串 一個字串使用一個一維字元陣列儲存 例: 宣告一個字元陣列並儲存一個"Hello"字串 一堆字元 + 字串結束字元'\0' "一堆字元" 一個字串使用一個一維字元陣列儲存 因此操作字串的語法等同於操作字元陣列的語法 例: 宣告一個字元陣列並儲存一個"Hello"字串 char a[]={'H', 'e', 'l', 'l', 'o', '\0'}; char a[]="Hello"; 位置: a 'H' 'e' 'l' 'l' 'o' '\0'

字串 以下a,b,c皆可表示Hello字串 #include <stdio.h> int main() { char a[]="Hello"; //字串初始化 char b[]={'H','e','l','l','o','\0'}; //字元陣列初始化 char c[6]; //字元陣列宣告 c[0]='H'; c[1]='e'; c[2]='l'; c[3]='l'; c[4]='o'; c[5]='\0'; // '\0'是字串的結束符號 printf("%s \n",a); //字串a輸出 printf("%s \n",b); //字串b輸出 printf("%s \n",c); //字串c輸出 return 0; }

字串輸入輸出 利用scanf來讀取一個字串在用printf印出 #include <stdio.h> int main() { char a[80]; scanf("%s", &a); //或用a printf("%s \n",a); return 0; }

字串輸入輸出 用scanf來讀字串, 字串中不能有空白. 若有空白會 被當成兩個不同的字串. gets(a) puts(a) 輸入字串存入字元陣列a, 以enter鍵做為字串結束 puts(a) 輸出字元陣列a中的字串 #include <stdio.h> int main() { char a[80]; gets(a); puts(a); return 0; }

字串輸入輸出 當scanf遇上gets 解法: 使用fflush(stdin); scanf輸入完後所按下之enter鍵會殘留在輸入緩衝區stdin(或 稱標準輸入檔), 將影響到下一次的gets輸入 解法: 使用fflush(stdin); #include <stdio.h> int main() { char a[80]; char b[80]; scanf("%s", a); //fflush(stdin); gets(b); //此gets無法正常輸入 printf("%s\n", a); printf("%s\n", b); return 0; }

指定輸入字串長度 可以指定輸入字串長度上限的函式 fgets(a, 長度, stdin) 輸入字串存入字元陣列a, 以enter鍵做為字串結束 長度: 儲存空間長度上限 (ps. 非字串長度) #include <stdio.h> int main() { char a[5]; fgets(a, 5, stdin); //只能輸入4個字元 puts(a); return 0; }

練習 輸入一字串將其中小寫字元轉成大寫字元 例如: 輸入abCdE123  輸出ABCDE123

使用二維陣列存放字串 當有多個字串要儲存,可以使用字元二維陣列 #include <stdio.h> int main() { int i; char name[3][80]; for(i=0; i<3; i++) //輸入三個人姓名 printf("姓名%d: ", i+1); gets(name[i]); } for(i=0; i<3; i++) //輸出三個人姓名 printf("姓名%d: %s\n", i+1, name[i]); return 0;

字串應用 C語言中提供許多字串相關函式可以使用, 以下介 紹常用的幾個函式: C語言字元字串函式參考網站 字串比對: strcmp 字串複製: strcpy 字串連接: strcat 計算字串長度: strlen C語言字元字串函式參考網站 http://www.cppreference.com/wiki/c/string/start http://www.cplusplus.com/reference/clibrary/cstring/

字串應用 字串原理: 字串用字元陣列儲存 陣列名稱: 陣列開頭之記憶體位置 因此, 字串處理 = 陣列處理 字串處理相當複雜, 但又太常用了, 因此C語言提供 了一些函式讓我們可以方便使用

字串比對錯誤用法! 下列程式可以執行, 但沒有意義 #include <stdio.h> int main() { char a[]="Hello"; char b[80]; scanf("%s", &b); if ( a==b ) printf("輸入字串正確\n"); } else printf("輸入字串錯誤\n"); return 0;

字串比對: strcmp strcmp(a, b): 比對a,b字串之內容 strcmp(a,b) > 0 : a字串字母順序較大 strcmp(a,b) < 0 : b字串字母順序較大 strcmp(a,b) == 0 : a,b兩字串內容一樣 #include <stdio.h> #include <string.h> int main() { char a[80]="Hello"; char b[80]; scanf("%s", &b); if ( strcmp(a,b)==0 ) printf("輸入字串正確\n"); } else printf("輸入字串錯誤\n"); return 0;

字串比對: strcmp 範例: 比較兩個字串內容 #include <stdio.h> #include <string.h> int main() { char a[80]; char b[80]; printf("輸入第一個字串: "); scanf("%s", &a); printf("輸入第二個字串: "); scanf("%s", &b); if ( strcmp(a,b) > 0 ) printf("輸入第一個字串字母順序較大\n"); } else if ( strcmp(a,b) < 0 ) printf("輸入第二個字串字母順序較大\n"); else printf("二個字串內容相同\n"); return 0;

字串複製錯誤用法! 下列程式不可執行 #include <stdio.h> int main() { char a[80]; char b[80]="How are you"; a = b; // 錯誤! a為記憶體位置, 為一個常數, 不可存放資料 printf("%s\n", a); return 0; }

字串複製: strcpy strcpy(a, b): 將b字串內容複製到a字串 #include <stdio.h> #include <string.h> int main() { char a[80]; char b[80]="How are you"; strcpy(a, b); printf("%s\n", a); return 0; }

字串連接錯誤用法! 下列程式不可執行 #include <stdio.h> int main() { char a[80]="Hi, "; char b[80]="how are you"; a+=b; // 錯誤! a為記憶體位置, 為一個常數, 不可存放資料 printf("%s\n", a); return 0; }

字串連接: strcat strcat(a, b): 將b字串內容加到a字串後面 #include <stdio.h> #include <string.h> int main() { char a[80]="Hi, "; char b[80]="how are you"; strcat(a, b); printf("%s\n", a); return 0; }

計算字串長度: strlen strlen(a): 計算a字串長度 #include <stdio.h> #include <string.h> int main() { char a[80]; int n; gets(a); n = strlen(a); printf("字串長度 = %d\n", n); return 0; }

課程大綱 字元 字串 作業

猜數字遊戲 輸入四位不重覆數字 (0~9), 做為電腦的題目 輸入四位不重覆數字 (0~9), 做為您猜的答案 不需檢查使用者輸入之格式 當輸入之答案與題目相同, 程式結束 遊戲規則 電腦的題目: 1234 您猜的數字: 5283 結果為 1A1B 表示您共猜對了兩位數, 其中有一個字位置對, 另一個字位置 不對 其中, A 表示猜對一個字且位置也對, B 表示猜對一個字但是位 置不對。

範例 http://www.csie.ntu.edu.tw/~d95027/train/download/guess.exe Enter the question: 1234 guess: 5283 1A1B guess: 5290 1A0B guess: 7890 0A0B guess: 1256 2A0B guess: 5634 guess: 1234 4A0B you win! bye! Press any key to continue

繳交 使用FTP上傳 請使用FileZilla上傳作業至指定FTP主機 繳交期限:2015. 3/21(六) 主機: 使用者名稱: 密碼: 連接埠: 將程式存到自己學號之資料夾 (請自行新增) 檔名: 251XX_hw2_##.c XX為學號, ##為版本編號 Ex: 25100_hw2_01.c (25100號同學 作業2 第1版) 請使用FileZilla上傳作業至指定FTP主機 繳交期限:2015. 3/21(六) 公佈解答後,不再收作業