前言
即使我们看完了 Cstring 的影片,却还是对於他蛮模糊的吧!我自己是写了一些题目後才对 Cstring 到底要怎麽用感到熟悉,所以接下来我会一连讲好几个 Cstring 的课堂练习,都不会太复杂,却能帮助我们仔细想想要如何应用 character。
题目、输入输出格式
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;
题目、输入输出格式
Sol.
与第一题类似,建非常长的字原来存所要输入的资料,这边因为会可能会更动到输入之资料,不过最好是不要动到,所以我们另外再建一新字元阵列来进行判断,因此先建立两个字元字串,分别为str
、ans
。
与第一题不同的是,我们接下来要使用的是 while 回圈,当有输入东西时才做判断并输出,因此到最後一个字元时就不会再输出任何字元,批改系统就会认定我们已经结束这段程序码。
此外,这题也需要用到strlen
、toupper
、tolower
等函式。
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
本质上是一样的东西,只是一个是在 request 前执行、一个是在收到 response 後执行,分...
今日目标 安装GLAD 画出第一个三角形 GLAD 还记得以前大学的时候,课堂上使用的是glut,当...
Day29- 新手的Web系列JSON Injection 0x2 正文 web2.0导入了很多Aj...
Abstract Data Type (ADT) Human - Interface - ADT L...
藉由ODOO的security,进行对model的权限设定,我们今天来写一个student 权限的范...