输入一个以回车结束的字符串(少于80个字符),去掉重复的字符后,按照字符ASCII码顺序从小到大排序输出。求大神帮忙,尤其是不知道怎么去掉重复字符,
char a[30] = "qweasdzxcvbnhbgfvredcxswqazx";
for (int i = 0; i < 30; i++) {
printf("%c",a[i]);
for (int j = 0; j < i; j++) {
if (a[i] == a[j]) {
a[i] = '0';
}
}
}printf("\n");
for (int i = 0; i< 30; i++) {
if (a[i] != '0') {
printf("%c",a[i]);
}
}
用两个for循环,将字符串的每一个字符和前一个进行比较,如果有一个相同,将他等于字符串内不同的一个字符(很重要),然后另作一个for循环,将不含有这个字符的字符串输出
qweasdzxcvbnhbgfvredcxswqazx
qweasdzxcvbnhgfr
还给你一个方法,先排序,然后将,a[i]==a[i+1]的时候,将a[i]='0',也可以做出来,但是位置变化了
for (int i = 0; i < 30; i++) {
printf("%c",a[i]);
for (int j = 0; j < i; j++) {
if (a[i] == a[j]) {
a[i] = '0';
}
}
}printf("\n");
for (int i = 0; i< 30; i++) {
if (a[i] != '0') {
printf("%c",a[i]);
}
}
用两个for循环,将字符串的每一个字符和前一个进行比较,如果有一个相同,将他等于字符串内不同的一个字符(很重要),然后另作一个for循环,将不含有这个字符的字符串输出
qweasdzxcvbnhbgfvredcxswqazx
qweasdzxcvbnhgfr
还给你一个方法,先排序,然后将,a[i]==a[i+1]的时候,将a[i]='0',也可以做出来,但是位置变化了
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-04-25
没有分,我就给你一个思路吧。
定义一个数组 Letter[128],代表128个ASCII的字符,然后遍历字符串,假如出现a,则Letter[48] = 1,依次类推,最后输出时Letter里哪个是1就输出,是零就不输出。
就可以满足按照字符ASCII码顺序从小到大排序输出本回答被网友采纳
定义一个数组 Letter[128],代表128个ASCII的字符,然后遍历字符串,假如出现a,则Letter[48] = 1,依次类推,最后输出时Letter里哪个是1就输出,是零就不输出。
就可以满足按照字符ASCII码顺序从小到大排序输出本回答被网友采纳