4/12
講師:吳崇維(wayne)
#include <iostream>
using namespace std;
int strlen(char *s1) {
int len = 0;
for (int i = 0; s1[i] != '\0' ; i++) {
len++;
}
return len;
}
void strcpy(char *s1, char *s2) {
int l2 = strlen(s2);
for (int i = 0; i < l2; i++) {
s1[i] = s2[i];
}
s1[l2] = '\0';
return;
}
int main() {
char s1[10] = "str1";
char s2[10] = "2";
strcpy(s1, s2);
cout << s1 << '\n' << s2 << '\n';
}
之前提到區域變數的概念,那為什麼上面的形式會通呢?
因為字串傳遞變數的情報是指標,而指標對應到的變數都是同一個地方,也就是同一個字串
而字串的輸入,傳遞,原本就是指標的功勞!
這邊介紹新的變數型態 char
一般的可見字元(0~9, a~z, +-*/)
都是字元的一種。
電腦使用一個位元組儲存字元
使得一個字元會對應到一個數字!
Ex : 'a' <=> 97
'b' <=> 98
'A' <=> 65
註:在一個變數前面加上(類別)
可以強制進行轉換!
--(類別)變數
用單引號指定一個字元
字元with整數運算
印出A - Z~
整數(int) + 陣列 =一般陣列
字元(char) + 陣列 =字串!
不多說,上圖
注意cin >> a的部分
程式需要知道a字串的頭的指標
並以此為出發點輸入。
強大的字串處理標頭檔!
string.h
在程式中引入string.h
便可以使用非常多字串函式
以下介紹最常用的:
strcpy
strcmp
strcat
strlen
函式原型:
void strcpy(char* s1, char* s2)
功能:輸入兩個字串
將s2的內容複製給s1
函式原型:
int strcmp(char* s1, char* s2)
功能:輸入兩個字串
如果兩個字元相等,回傳0
否則 ,回傳非0
函式原型:
void strcat(char* s1, char* s2)
功能:輸入兩個字串
把第2個字串接在第1個字串後面
Ex : s1 = "abcd"
s2 = "efg"
after -> s1 = "abcdefg"
函式原型:
int strlen(char* s1)
功能:輸入一個字串
回傳字串的長度
你們應該已經知道怎麼判斷回文了
ex : abcba
racecar
現在給你一個字串,請問是否可以刪除任一個字元,使得剩下的字串是一個回文呢?
輸入:一行字串
輸出:若刪除其中一個字元可以形成回文 輸出YES
否則輸出NO
Problem 1.
範例:
aaaab -> YES
(可以刪除b, aaaa是回文)
aaaabb -> NO
(不論刪除哪個字元,都不能形成回文)
給你一個字串型如:
"123+456="
可以請你輸出實際算式算出來的結果嗎~?
輸入形式:一個字串
"[數字][+-*/][數字]="
Ex : 14/2=
123-123=
輸出:表示成數學式的實際結果
Problem 2. Hard!
不過請大家回去熟悉題目
一起努力快樂寫程式吧!