69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int moster(char *x, char *y)
{
if(*x!='\0'&&*x!=y) /*如果*x不是空字符和*x与y不相等那么就让y再与下x的下个字符相比*/
moster(x+1,y);
else if(*x=='\0'&&*x!=*y)
return 1;
else
return 0;
}
void main()
{
char *ch, *p, *c, *p2;
int num=0;
printf("input a sentence:");
gets(ch);
*c='\0';
p2=c;
for(p=ch; *p!='\0'; p++)
{
if(moster(c,p)) /*如果moster函数返回了1那么就证明*p与c中存储的字符没有相同的*/
{
*p2++=*p; /*将*p的字符赋给*p2所指向的c*/
*p2='\0'; /*因为怕这是最后一个不相同的字符所以给赋个空字符*/
}
else
num++; /*这是统计删除了多少个字符*/
}
printf("This is deleted same letters sentence:\n");
printf("%s\n",c);
printf("deleted %d letters.\n",num);
}
#include<iostream>
#include<string.h>
#include<stdio.h>
int main()
{
char s[100],str[100];
scanf("%s",s);
int len=strlen(s);
int flag[30],cnt=0;
memset(flag,0,sizeof(flag));
for(int i=0;i<len;i++)
{
if(flag[s[i]-'a']==0)
{
str[cnt++]=s[i];
flag[s[i]-'a']=1;
}
}
str[cnt]=0;
printf("%s\n",str);
return 0;
}
假如只是小写字母 可以按上面的算法 若出现了就给flag的相对下标为1,如果有其他的也可以模仿这样来写的
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int moster(char *x, char *y)
{
if(*x!='\0'&&*x!=*y) /*如果*x不是空字符和*x与y不相等那么就让y再与下x的下个字符相比*/
moster(x+1,y);
else if(*x=='\0'&&*x!=*y)
return 1;
else
return 0;
}
void main()
{
char ch[100], *p, c[100], *p2; //必须为字符 或者申请地址吧
int num=0;
printf("input a sentence:");
gets(ch);
*c='\0';
p2=c;
for(p=ch; *p!='\0'; p++)
{
if(moster(c,p)) /*如果moster函数返回了1那么就证明*p与c中存储的字符没有相同的*/
{
*p2++=*p; /*将*p的字符赋给*p2所指向的c*/
*p2='\0'; /*因为怕这是最后一个不相同的字符所以给赋个空字符*/
}
else
num++; /*这是统计删除了多少个字符*/
}
printf("This is deleted same letters sentence:\n");
printf("%s\n",c);
printf("deleted %d letters.\n",num);
}
#include<stdio.h>
#include<string.h>
int main()
{
int i, len, num=0, flag[96];
char frist[100], box[100];
printf("input a sentence:");
gets(frist);
len=strlen(frist);
memset(flag,0,sizeof(flag));
for(i=0; i<len; i++)
if(flag[frist[i]-32]==0)
{
box[num++]=frist[i];
flag[frist[i]-32]=1;
}
box[num]='\0';
printf("deleted same characters %d.\n",len-num);
printf("%s\n",box);
}