本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
#include <stdio.h>
#include <string.h>
#define LEN 81
int main(){
char str[LEN];
int b[127] = {0},i; //127是ASCII码的编号
gets(str);
for (i= 0; str[i] != '\0'; i++){ //1.不能是i < LEN
b[(int)str[i]] = 1; //把str里的字符每一个都变为ASCII,ASCII值就是在b数组中的顺序,如a:97 则b[97] = 1
}
for (i = 0; i< 127; i++){
if (b[i] == 1){
printf("%c",i); //再把i转化为字符,省去了排序
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define MAX 20
#define LEN 8
int main(void)
{
char s[LEN];
printf("s的长度为:%d\n",strlen(s));
char t[LEN];
gets(t);
printf("t的长度为:%d\n",strlen(t));
for (int i = 0; i< LEN; i++){
printf("t[%d]=%c\n",i,t[i]);
}
return 0;
}
s的长度为:1
Hello
t的长度为:5
t[0]=H
t[1]=e
t[2]=l
t[3]=l
t[4]=o
t[5]= //此处应该为空字符
t[6]=@
t[7]=
Process returned 0 (0x0) execution time : 4.338 s
Press any key to continue.
代码一中,如果i < len就会出现不明字符,要小于strlen(str)