点击蓝字
关注我们
导语
在c++中字符串,可谓至关重要的一员。然而也许因为觉得字符串过于简单而忽视。今天,我想关于字符串做一个比较有用的小技巧归纳。也希望,这些小技巧可以真正帮助到大家的c++学习。废话不多说,走起。!!!
![1a1bb2a53b7a8f564c9df4b404ec0786.png](https://i-blog.csdnimg.cn/blog_migrate/3b3ed1300c3a40633104bf0b12689225.png)
Q1
数,就是数吗?
@???@,你也许会疑惑,数如果不是数,那还是什么?当然,在任何时候一提到数,我们总想到int 或 double。但让我们看一道例题。
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
如果这个数是这样呢?
![c2993e23fbe28edc8597e20914672e0f.png](https://i-blog.csdnimg.cn/blog_migrate/3301401a313e95de18b73329ddd193cf.png)
这个时候我想你肯定不会在想到 int 了吧。如果数更大,long long恐怕都无力回天了。其实一个数可以当作一串字符。我想,如果对一个数较大输出各个位数,应该是一件比较麻烦的事。但对作为字符串的“数”输出各个位数,就索引一下,可以说so easy!而且因为ASCII码,从‘7’到7只需要下面操作即可:
int('7'-'0');
下面是上述例题代码:
#includeusing namespace std;void pinYin(int a) { switch (a) { case 0:cout << "ling";break; case 1:cout << "yi";break; case 2:cout << "er";break; case 3:cout << "san";break; case 4:cout << "si";break; case 5:cout << "wu";break; case 6:cout << "liu";break; case 7:cout << "qi";break; case 8:cout << "ba";break; case 9:cout << "jiu";break; }}int main(){ char a[101]; cin >> a; int sum = 0; int i = 0; while (a[i] != '\0') { sum += a[i] - '0'; i++; } int b[11]; int j = 0; if (sum == 0) { pinYin(0); return 0; } while (sum != 0) { b[j] = sum % 10; sum = sum / 10; j++; } for (i = j - 1;i > 0;--i) { pinYin(b[i]); cout << " "; } pinYin(b[0]); return 0;}
Q2
用循环玩转字符串
也许刚开始接触循环时,是你被循环给玩坏了吧。说实话,现如今面对两重以上的循环我依旧难以理清思路。不说了,懂的都懂。
来看一道例题:
![c77a061411d09d0916819f43d5059604.png](https://i-blog.csdnimg.cn/blog_migrate/f06788b6ac9ff012cad4ed8564c2918b.png)
这是我最近接触过的一个题目,说实话输出效果很好,但操作起来确实有点晕。我们还是先分析一下这个问题。显然这个图形上面与与下面是两个大循环。在每一个大循环中每一行都应该对应一次循环。而对每一行输出空格与字母也对应一次循环。也就是说两个循环套循环。接下来重点需要考虑的就是,空格的个数了。其实从上到下,空格的个数的规律还是比较明显的。这样,分析完后,代码也就很快出来了。(参考代码中的注释)。
![68613491d706512da2c1984b9086c8f8.png](https://i-blog.csdnimg.cn/blog_migrate/ed8c192040625333f23b24c572fb0c73.png)
#include using namespace std;int main(){ char in; cin >> in;//输入大写字符 int i ,j; int line = in - 'A';//由ASCII码获取行数 //上面的主体 for (i = 0;i <= line;i++) { for (j = line - i;j > 0;j--)cout << " ";//管理两个空格的输出 for (j = 1;j <= 2 * i + 1;j++)cout << ' ' << char(i + 'A');//管理字母输出 cout << endl;//换行 } //下面的主体 for (i = line;i >0;i--) { for (j = 0;j <=line-i;j++)cout << " ";//管理两个空格的输出 for (j = 1;j <= 2 * i - 1;j++)cout << ' ' << char(i -1+ 'A');//管理字母输出 cout << endl;//换行 } //可以对照上面的与下面的代码。寻找增与减的关系。}
结语
总而言之,字符一定要牢记ASCII码以及控制格式的函数的运用。字符作为编程中的重中之重,更应该被我们有意识地去关注。
今天就到这里吧,谢谢大家关注。
赞+在看
。
最后送大家一首歌。
我们都是平凡之人,平凡地生活在大地上,去创造属于自己的不凡!!
![6007d274db5799c963c4a6a8e16645b9.png](https://i-blog.csdnimg.cn/blog_migrate/14409fd85982618469116f63d42ffdcd.jpeg)
扫码关注我们
微信号|赤子孤独
哔哩哔哩|赤子孤独