【Day 26】C String - Practice 1

前言
即使我们看完了 Cstring 的影片,却还是对於他蛮模糊的吧!我自己是写了一些题目後才对 Cstring 到底要怎麽用感到熟悉,所以接下来我会一连讲好几个 Cstring 的课堂练习,都不会太复杂,却能帮助我们仔细想想要如何应用 character。

Q1.

题目、输入输出格式

Sol.
建立一个非常长的字元阵列,并使用cin.getline,也就是把每一个字元都当作阵列里的一项。设一变数cnt,代表计算所要计算的标点符号。

Pseudocode

char str[1000];
int cnt = 0;
cin.getline(str, 1000);
for i in range 0~strlen(str)
	if str == ’,’ or ‘.’ or ‘:’ or ‘:’ or ‘!’ or ‘?’
		cnt++;
输出cnt;

Q2.

题目、输入输出格式

Sol.
与第一题类似,建非常长的字原来存所要输入的资料,这边因为会可能会更动到输入之资料,不过最好是不要动到,所以我们另外再建一新字元阵列来进行判断,因此先建立两个字元字串,分别为strans

与第一题不同的是,我们接下来要使用的是 while 回圈,当有输入东西时才做判断并输出,因此到最後一个字元时就不会再输出任何字元,批改系统就会认定我们已经结束这段程序码。

此外,这题也需要用到strlentouppertolower等函式。

Pseudocode

char str[1000];
char ans[1000];
int CNT = 0;

while (cin >> str) {
	if 还没输入任何东西	// CNT = 0
		for i in range 0~strlen(str)
			if 是这个单字的字首
				ans[i] = toupper
				cout << ans[i]
			else
				ans[i] = tolower
				cout << ans[i]
		CNT++;	//	确保下一次不会再跑进来
}
	else
		输出一格空白,使得每个单字後面都有空格
		ans[i] = toupper
			cout << ans[i]
		else
			ans[i] = tolower
			cout << ans[i]

结语
这两题用了两种方式来输入:cin.getline( )、while(cin >> str),差别在於第一题是要全部资料都读完才能输出答案,如果我们用 while,这个回圈会一直不断等待东西输入进来,於是这段程序码就永远都不会停下来。
第二题则是因为当输入完最後一个字元,我们要输出的东西也都输出完了,没有要再输入的资料的话,批改系统就会自己停止,因此使用 while 回圈是可行的!接下来我们再多看几题吧!


<<:  Day 26【Deploy NFT - Lazy-Minting & Smart Contract】Right Click and Save Image As

>>:  Day 23 - 实战演练 — TextField

Postman pre-request script & tests

本质上是一样的东西,只是一个是在 request 前执行、一个是在收到 response 後执行,分...

[Day3] 驱动OpenGL

今日目标 安装GLAD 画出第一个三角形 GLAD 还记得以前大学的时候,课堂上使用的是glut,当...

[Day29]- 新手的Web系列JSON Injection 0x2

Day29- 新手的Web系列JSON Injection 0x2 正文 web2.0导入了很多Aj...

[DSA] - Basic ADT (Arrays, Linked List, Stack)

Abstract Data Type (ADT) Human - Interface - ADT L...

Day12 Let's ODOO: Security(1) Access right

藉由ODOO的security,进行对model的权限设定,我们今天来写一个student 权限的范...