/*题目要求:编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
设计意图没明确,写代码就不明确,因分析不明确缘故.
假设字符串uqic^g`(s&jnl(m#vt!onwdj(ru+os&wx
取一字符,先要判断是否在ACSII码范围内,次用递减判断是否已记(即重复).
分析明白后再写代码就清楚了.*/
string 字符串= "uqic^g`(s&jnl(m#vt!onwdj(ru+os&wx";
int 计数 = 0, 循环 = 0, 比较 = 0, 判断 = 1;
do
{
if (字符串[循环] >= 0 && 字符串[循环] <= 127)
while (循环 > 比较 && 比较 >= 0)/*这个设计特点是跳过第一个字符比较*/
if (字符串[循环] == 字符串[比较--])
{
判断 = 0;
break;/*这个逻辑设计特点是即使不跳出循环结果依然正确如果不跳出循环则是全循环次数*/
}
if(判断)
++计数;
比较 = ++循环 - 1;
判断 = 1;/*这个逻辑设计特点是即使不跳出循环结果依然正确如果不跳出循环则是全循环次数*/
} while (循环 < 字符串.size());
std::cout << 计数 << std::endl;