C语言怎么编写:请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言怎么编写:请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。相关的知识,希望对你有一定的参考价值。
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:void stringFilter(const char
*pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例
输入:“deefd” 输出:“def”
输入:“afafafaf” 输出:“af”
输入:“pppppppp” 输出:“p”
main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出
当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响。
结果出来了,你看看吧,满意请采纳
#include <stdio.h>#include <string.h>
void finddd(char x[]);
int main()
char a[150];
char *aa;
int a1;
int i;
printf("请输入任意的字符串: ");
gets(a);
finddd(a);
return 0;
void finddd(char x[]) // 不带数据返回
int i,shu=0;
char aa[100];
int aaa[200]=0;
for(i=0;i<strlen(x);i++)
if(aaa[ x[i] ] == 0)
aaa[ x[i] ] = 1;
aa[shu++]=x[i];
aa[shu++]='\\0';
printf("剔除重复字符后的字符串: %s\\n",aa);
追问
不好意思,楼上的回复的比你早,财富值被他领走了
参考技术A main()char x[100],y[100];
void stringFilter(const char*pInputStr, long lInputLen, char *pOutputStr);
gets(x);
stringFilter(x,strlen(x),y);
puts(y);
//算法说明:将源字符串中每一个字符取出来,到目标字符串中查找存不存在,如果已经存在,则跳过,否则,复制到目标字符串最后一个字符的后面。
void stringFilter(const char*pInputStr, long lInputLen, char *pOutputStr)
long i,j,n;
for(i=0;i<100;i++)pOutputStr[i]=0;//将pOutputStr字符串各元素清0
for(i=0;i<lInputLen;i++)
n=strlen(pOutputStr);//求pOutputStr字符串长度
for(j=0;j<n;j++)
if(pOutputStr[j]==pInputStr[i])break;//如果从pInputStr字符串中取出的第i个字符在pOutputStr字符串中已经存在
if(pOutputStr[j]==0)pOutputStr[j]=pInputStr[i];
参考技术B void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr)
int i, j, k;
i = 0;
j = 0;
k = 1;
*pOutputStr = *pInputStr;
while (pInputStr[i])
for (j = 0; j < k; ++ j)
if (*(pOutputStr + j) == *(pInputStr + i))
break;
if (j == k)
*(pOutputStr + k) = *(pInputStr + i);
++ k;
++ i;
*(pOutputStr + k) = 0;
追问
剩下的呢
追答来个完整的:
#include <stdio.h>#include <string.h>
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr)
int i, j, k;
i = 0;
j = 0;
k = 1;
*pOutputStr = *pInputStr;
while (pInputStr[i])
for (j = 0; j < k; ++ j)
if (*(pOutputStr + j) == *(pInputStr + i))
break;
if (j == k)
*(pOutputStr + k) = *(pInputStr + i);
++ k;
++ i;
*(pOutputStr + k) = 0;
int main()
char buf1[20] = 0;
char buf2[20] = 0;
printf("请输入字符串:\\n");
scanf("%s", buf1);
stringFilter(buf1, strlen(buf1), buf2);
printf("%s\\n", buf2);
return 0;
本回答被提问者和网友采纳
C语言试题五十之请编写一个函数void function(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。
1、 题目
请编写一个函数void function(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。
2 、温馨提示
C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问题的能力,帮助你成为C语言笔试、机试解题高手,帮助你拿到C语言工作的offer,每一个题目都附带源代码和运行结果,让你不再有任何困惑,妈妈再也不担心我的C语言了。如果程序有任何看不懂或者哪个步骤不理解的地方都可以加我微信(15874274916)私聊我,或者有更好的思路解决办法都可以加我微私聊,一起探讨、希望可以正真的帮助到你,同时也可以扫下面的二维码关注我微信公众号,比如你还对生活、美食或者其它方面都感兴趣,都可以加微信交流,博主擅长讲解计算机相关方面的知识、如果大家对计算机方向、前端、移动端、服务端、数据结构、算法、网络、高数等等一些列方向比较迷茫或者不知道要学哪些?或者具体怎么学?或者其它方向有任何困惑都可以找我交流,谢谢大家关注。
以上是关于C语言怎么编写:请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。的主要内容,如果未能解决你的问题,请参考以下文章
C语言试题五十之请编写一个函数void function(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。
C语言试题五十之请编写一个函数void function(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。
请帮忙用C语言编写一个函数~~~功能是“文件复制”~~~谢谢~~
C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。
C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。