奧林匹亞資訊班

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';
}

Question: 

之前提到區域變數的概念,那為什麼上面的形式會通呢?

Answer:

因為字串傳遞變數的情報是指標,而指標對應到的變數都是同一個地方,也就是同一個字串

而字串的輸入,傳遞,原本就是指標的功勞!

字元 / 字串

字元 (char)

 

這邊介紹新的變數型態 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

 

1. strcpy

函式原型:

void strcpy(char* s1, char* s2)

 

功能:輸入兩個字串

將s2的內容複製給s1

2. strcmp

函式原型:

int strcmp(char* s1, char* s2)

 

功能:輸入兩個字串

如果兩個字元相等,回傳0

否則                       ,回傳非0

3. strcat

函式原型:

void strcat(char* s1, char* s2)

 

功能:輸入兩個字串

把第2個字串接在第1個字串後面

 

Ex : s1 = "abcd"

       s2 = "efg"

after -> s1 = "abcdefg"

4. strlen

函式原型:

int strlen(char* s1)

 

功能:輸入一個字串

           回傳字串的長度

 

字串 x 函式

 

 

你們應該已經知道怎麼判斷回文了

ex : abcba

       racecar

現在給你一個字串,請問是否可以刪除任一個字元,使得剩下的字串是一個回文呢?

輸入:一行字串

 

輸出:若刪除其中一個字元可以形成回文 輸出YES

否則輸出NO

Problem 1.

範例:

aaaab -> YES

(可以刪除b, aaaa是回文)

aaaabb -> NO

(不論刪除哪個字元,都不能形成回文)

給你一個字串型如:

 

"123+456="

 

可以請你輸出實際算式算出來的結果嗎~?

 

輸入形式:一個字串

"[數字][+-*/][數字]="

Ex : 14/2=

       123-123=

輸出:表示成數學式的實際結果

Problem 2. Hard!

  沒有作業!

不過請大家回去熟悉題目

FeedBack!

一起努力快樂寫程式吧!

class 4/12 字元字串題目練習

By Wayne Wu

class 4/12 字元字串題目練習

  • 56