C语言程序:题目:从键盘输入一个字符串,按照字符顺序从小到大进行排序,并要求删除重复的字符。答案如下

答案一
#include<stdio.h>
#include"string.h"
int main(void)
{
char str1[500]={0},str2[256]={0};
int i;
gets(str1);
for(i=0;str1[i];i++)
{
str2[str1[i]]=1;
}
for(i=0;i!=256;i++)
if(str2[i]==1)
printf("%c",i);
putchar('\n');
return 0;
}
一点也看不懂,求高手解释每个步骤的作用啊

#include<stdio.h>
#include"string.h"
int main(void)
{
char str1[500]={0},str2[256]={0};//定义二个数组,并赋初值为0
int i;
gets(str1);//读取一个字符串
for(i=0;str1[i];i++)
{
str2[str1[i]]=1;//str1中每个字符的assic码作为str2的下标值,并把对应位置填充为1,同一个字符的assci值相同,所以这样就去掉了重复字符
}
for(i=0;i!=256;i++)
if(str2[i]==1)//判断数组中被str1填充的位置,填充的是非0值,没填充的是0值
printf("%c",i);//输出str2的下标值,对应str1中的字符值
putchar('\n');
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答