C语言题目如果字符串中有2个以上的相同字符,仅保留最右边的那个,删除其左边的相同字符
Iamastudenttotaketheexamination.其中字符:''(空格),'a','m','t','e','n','o','n','i'都有2个以上,仅保留...
I am astudent to take the examination.
其中字符:' '(空格),'a','m','t','e','n','o ','n','i'都有2个以上,
仅保留最右边那个后,输出字符串为:Isudkh exmation. 展开
其中字符:' '(空格),'a','m','t','e','n','o ','n','i'都有2个以上,
仅保留最右边那个后,输出字符串为:Isudkh exmation. 展开
2个回答
展开全部
#include<stdio.h>
struct Tag{
char ch;
int idex;
};
struct{
int cnt;
Tag tags[52];
} tag;
void get_tag(char* str);
void ini_tag();
void sort();
void prt();
int main(){
char str[100];
char ch;
int i = 0;
while ((ch = getchar()) != '\n')
str[i++] = ch;
str[i] = '\0';
ini_tag();
get_tag(str);
sort();
prt();
return 0;
}
void ini_tag(){
tag.cnt = 0;
}
void get_tag(char* str){
int i, j;
for (i = 0; str[i] != '\0'; i++){
for (j = 0; j < tag.cnt; j++){ //多次遇到
if (tag.tags[j].ch == str[i]){
tag.tags[j].idex = i;
break;
}
}
if (j == tag.cnt){ //第一次遇到
tag.tags[tag.cnt].ch = str[i];
tag.tags[tag.cnt].idex = i;
tag.cnt++;
}
}
}
void sort(){
int i,j;
Tag tmp;
for (i = 0; i < tag.cnt; i++){
for (j = i + 1; j < tag.cnt; j++){
if (tag.tags[i].idex > tag.tags[j].idex){
tmp = tag.tags[i];
tag.tags[i] = tag.tags[j];
tag.tags[j] = tmp;
}
}
}
}
void prt(){
int i;
for (i = 0; i < tag.cnt; i++){
printf("%c", tag.tags[i].ch);
}
printf("\n");
}
展开全部
#include <stdio.h>
#include <string.h>
char* juststrtail(char*s){
while(*s){
s++;
}
s--;
return s;
}
int main(void){
char buf[80],*ptail,*pcur,res[80];
printf("input the string:");
gets(buf);
ptail=buf;
ptail=juststrtail(buf);
pcur=buf;
while(ptail>buf){
pcur=buf;
while(pcur<ptail){
if(*pcur==*ptail){
*pcur=0;
strcat(buf,pcur+1);
ptail=juststrtail(buf);
}
pcur++;
}
ptail--;
}
puts(buf);
return 0;
}
#include <string.h>
char* juststrtail(char*s){
while(*s){
s++;
}
s--;
return s;
}
int main(void){
char buf[80],*ptail,*pcur,res[80];
printf("input the string:");
gets(buf);
ptail=buf;
ptail=juststrtail(buf);
pcur=buf;
while(ptail>buf){
pcur=buf;
while(pcur<ptail){
if(*pcur==*ptail){
*pcur=0;
strcat(buf,pcur+1);
ptail=juststrtail(buf);
}
pcur++;
}
ptail--;
}
puts(buf);
return 0;
}
更多追问追答
追问
能不用指针吗
追答
当然可以,可以把指针的改成数组形式访问,也是一样的,个人习惯而已,感觉指针比较方便,习惯问题。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询