求C语言代码,删除字符串中重复字符 如输入"aabbcc",要求输出"abc"

答案的程序如下:#include<stdio.h>intmain(){chars[256];inti=0,tmp[256]={0};printf("Enterthestr... 答案的程序如下:
#include <stdio.h>
int main() {
char s[256];
int i = 0, tmp[256] = {0};
printf("Enter the string :\n");
gets(s);

while(s[i] != '\0')
tmp[s[i++]] = 1;

puts("\nAfter sort and delete operation:");
for(i = 0; i < 256;i++)
if(tmp[i])
printf("%c", i);
return 0;
}
其中的tmp[s[i++]] = 1是什么意思呢 ?最后 for(i = 0; i < 256;i++) 又是怎么回事呢?能不能详解一下,谢谢哈
展开
 我来答
空天防务信息
2011-06-15 · 超过15用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:53.2万
展开全部
好久没用c了,不知道你的程序对不对!我仅仅是给你分析一下你问的问题!
tmp[s[i++]] = 1:首先看最里面i++你知道的吧!是先得到i的值,处理完后再自增1,而s是字符数组,s[i]就是取得索引为i的那个字符,所以s[i++]就是先得到s[i]的然后在给i增加1。然后再看最外面,得到的是字符,那么要知道字符是和ascall码对应的,所以这里tmp['a']会实际转换成tmp[97],这样如果还有a的话,a[97]始终是=1的。这样循环一直到用户输入结束('\0'),把所有的重复字符都过滤掉了。
下来的for(i = 0; i < 256;i++) 就好理解了。就是循环遍历tmp数组,从中找出tmp[i]的值=1的索引,然后输出该索引。不过我不确定你for循环中的代码是否正确!
简写伪码就是
for(int i = 0; i < 256;i++) {
if(tmp[i]等于1){
以字符形式输出i
}
羿烃Hy
2011-06-15 · TA获得超过145个赞
知道答主
回答量:240
采纳率:0%
帮助的人:231万
展开全部
tmp数组是用来放ASCII码的256个字符是否有出现,如果有的话相应位就置1。
把tmp[s[i++]]=1;改成{tmp[s[i]=1;i++;}这样会更好理解点吧
for语句就是看256个字符中哪一个字符出现过,比如第5个出现过的话,tmp[5]就为1;把它输出就好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式