c语言编写一段去除字符数组中重复的字符的程序

作者&投稿:谭毛 (若有异议请与网页底部的电邮联系)
用c语言编写一个程序:删除数组中重复的数。~

如果你只是删掉为k的值,然后输入的话,只要一个for循环就够了,把不等于k的值直接输出就行,不用再存入数组里了,如:
#include
void
main()
{
int
n,k,x[100000];
int
i,flag=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
scanf("%d",&k);
for(i=0;i<n;i++)
if(x[i]!=k)
{
if(flag==0)
//(让第一个输出前不加空格)
{
printf("%d",x[i]);
flag=1;
}
else
printf("
%d",x[i]);
}
printf("
");
}

1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。

2、定义变量:#include void main(){ char c1,c2,c3; /*定义字符变量*/。

3、输入一个字符:printf("输入一个字符,使用getche函数接收
"); /*提示用户输入一个字符*/c1=getche(); /*使用getche()函数接收*, printf("
"); /*输出一行空行*/。

4、输入一个字符: printf("输入一个字符,使用getch函数接收
"); /*提示用户输入一个字符*/,c2=getch(); /*使用getch()函数接收*/, printf("
"); /*输出一行空行*/。

5、输入一个字符。

6、输出结果最后的结果。

判断,标志输入的字符是否重复的,如下代码:

#include <stdio.h>
#include <vector>
struct detail
{
char c;
int exist;//标志位
};
std::vector<detail> statics;
int check(char c)
{
std::vector<detail>::iterator ite = statics.begin();
for (; ite != statics.end(); ite++)
{
if((*ite).c==c)return 0;//输入的字符已经存在
}
return 1;//输入的字符未存在
};
void main()
{
printf("请输入字符串:");
char c;
scanf("%c",&c);
while((int)c!=10)//获取用户输入
{
detail temp;
temp.c = c;
temp.exist = check(c);
statics.push_back(temp);
scanf("%c",&c);
}
std::vector<detail>::iterator ite = statics.begin();//打印非重复的字符
for (; ite != statics.end(); ite++)
{
if((*ite).exist)printf("%c",(*ite).c);
}
printf("\n");
}

帮你改好了,有几个小错误,第一个定义一个字符数组最好后面加上一个\0,内嵌套的for循环后面多了一个分号
#include<stdio.h>
void main()
{
int i,j,p,q;
char a[9]={'a','b','b','c','d','a','v','b','\0'};
for(i=0;i<8;i++)
{
for(j=i+1;j<=8;j++)
if(a[i]==a[j])
{
do
{a[j]=a[j+1];j++;}
while(j<=8);
}
}
puts(a);
}

感觉你没有理清思路
你可以在定义一个数组b[8],然后把数组a中的字符一次放入b中,如果有重复则不放入
下面是代码,devc++上运行通过
#include<stdio.h>
main()
{
int i,j,n,flag;
char a[8]={'a','b','b','c','d','a','v','b'};
char b[8];
b[0]=a[0];

n=1;
for(i=1;i<8;i++)
{
flag=0;
for(j=0;j<n;j++)
if(b[j]==a[i]) {flag=1;break;}
if(flag==0){b[n]=a[i];n++;}
}
b[n]='\n';
puts(b);
getchar();
}

算了,不给你改了,我给你写一个吧
#include<iostream>
using namespace std;
int main()
{
char ch[9]={'a','b','b','c','d','a','v','b'};
int i,j;
int count = 0;
for (i = 0; i < 9;i ++)//不要忘了最后还有个'\0'
{
for (j = i+1;j<9;j++)
{
if(ch[i]==NULL)
{
continue;
}
if (ch[i]==ch[j])//有相同的元素的话,将其替换为后面的非空字符,并将最后一个非空字符置空
{
ch[j] = ch[8-count];
ch[8-count] = NULL;
j--;
count++;
}
}

}
ch[9-count] = '\0';
for (i=0;i<8-count;i++)
{
cout<<ch[i];
}
system("pause");
}

#include<stdio.h>
void main()
{
int i,j,m=0;//m记录重复的字符数
char a[8]={'a','b','b','c','d','a','v','b'};
for(i=0;i<8;i++)
{
for(j=i+1;j<7;j++)//多了一个分号
{
if(a[i]==a[j])//应该是==
{
++m;
for(int k=0;k<7;++k)
{
a[k]=a[k+1];
}
}
}
}
a[8-m]='\0';
puts(a);
}


编写C语言程序后,想编写下一个程序,可上个程序留下的字怎么消除?
include <stdlib.h>\/\/要包含这个 头文件 system("cls");\/\/这一句清除屏幕

C语言怎么编写:请编写一个字符串过滤程序,若字符串中出现多个相同的字符...
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[...

如何用c语言文件操作来实现删除文件某段内容功能?
如何实现删除其中的abc这几个字,并且不通过两个文件指针、不操作两个文件 ?谢谢大家 guohouzuo | 浏览5729 次 |举报 我有更好的答案推荐于2016-03-21 17:32:13 最佳答案 C语言删除磁盘文件内容中间一段字符串的方法假定磁盘文件中连续存放了相同长度的若干段字符串,要删除中间的某一段字符串,剩下的继续...

编写一个C语言程序:从键盘输入一个字符串,删除该字符串所有首部和尾部的...
include <stdio.h>#include <string.h>int main(){int len,j;char a[100];scanf("%s",a);\/\/由于不知道要输入多少,所以以字符输入len=strlen(a);for(int i=1;i<(len-1);i++){printf("%d",a[i]-'0');\/\/再转化成数字}return 0;} ...

C语言 一个字符串有10个不同的字符,输入一个数字N,将字符串的头N个字符...
void del(char *str,int n){ int i=0; for(;i<strlen(str)-n;i++) { str[i]=str[i]+n; } str[i]='\\0';}

C语言编写程序,从键盘输入一个字符串,删除该字符串的所有首部和尾部数字...
include "stdio.h"int main(int argc,char *argv[]){char s[300];int i,n;printf("Please enter a string...\\n");scanf("%299s",s);for(n=0;s[n];n++);for(n--;s[n]>='0' && s[n]<='9';n--);s[n+1]='\\0';for(i=n=0;s[n]>='0' && s[n]<='9';...

用c语言编写程序删除字符串中间的'*'号
已通过编译,而且除了printf()和scanf()之外,什么库函数都没用。void main(void){ char *str,i;do { printf("Please input:\\n");scanf("%s",str);for(i=0;str[i]!='\\0';i++);}while(i==0);i=fun(str,i-1); \/*自定义的函数,负责删除'*'*\/ printf("%s\\n",str+i);\/*...

C语言中去除两字符串中相同的字符
是从两个字符串中都去除么?include "stdio.h"void main(){ char a[80],b[80];int i,j,k;gets(a);gets(b);for(i=0;a[i];i++){ for(j=0;b[j];j++)if(b[j]==a[i]){ for(k=j;b[k];k++)b[k]=b[k+1];} } puts(a);puts(b);} ...

关于c语言,要求输入this is a c program,输出时要去除字符串的空格th...
include<stdio.h>void main(){ int i,j; char str[80],str2[80];\/\/printf("enter a char\\n");\/\/ scanf("%c",&c);\/\/空格字符是无法用scanf函数输入的 printf("enter a string\\n");\/\/ scanf("%s",str); \/\/不能用这个函数进行输入,因为字符串中间有空格gets(str...

易语言实现查找到一段文本中的某字或某词并且将这个字之前的文本删除需...
用到的子程序 寻找文本 取文本长度 取文本右边 思路,先用寻找文本找到“支持库”,然后返回这个文本的位置 然后用取出文本右边,长度为总文本长度减去这个长度 大概是 取出文本右边(总文本,取文本长度(总文本)-寻找文本(总文本,"支持库"))这样的。。你看取出来的对不对。。如果不对的话应该还要加...

德城区13910855591: c语言编写一段去除字符数组中重复的字符的程序 -
乌澜复方: 帮你改好了,有几个小错误,第一个定义一个字符数组最好后面加上一个\0,内嵌套的for循环后面多了一个分号#include void main(){ int i,j,p,q; char...

德城区13910855591: C语言编写一个函数,将字符串中连续重复出现的字符去除 -
乌澜复方: C语言自定义函数,一次性去除连续重复字符,参考代码如下: #include<stdio.h> char *fun(char *str) { int i=1,j=0; if(str==NULL) return NULL; if(str[0]==0) return str; while(str[i]!=0) if(str[j]!=str[i]) str[++j]=str[i++]; else ++i; str[j+1]=0; return str; } int main() { char str[500]; gets(str); puts(fun(str)); return 0; }

德城区13910855591: 请高手们帮我编一个数组中去掉重复数的程序(C语言) -
乌澜复方: #include "stdio.h" void main() {int array[10] ,n_array[10]; int n=10; //n为数组中元素个数. for(int i=0;i<n;i++)scanf("%d",&array[i]); n_array[0]=array[0]; int cnt=1;for( i=1;i<=n-1;i++) { int sign =1; //设置标志位,用于检查某数字是否在数组中...

德城区13910855591: C语言删除一个整型数组里面重复的元素 -
乌澜复方: 利用双重循环,将每个值依次与其后面的值相比较,如果有相同的则删除该元素即可. 删除时,可以使用将后面元素依次向前移动一位,同时总长度减一的方式. 参考代码如下: int remove_repeat(int *a, int l) {int i, j, k; for(i = 0; i < l; i ++){for...

德城区13910855591: C语言 输入一个字符串 去掉重复的字符,输出无重复的 -
乌澜复方: #include<stdio.h>#include<string.h> main() {int i,a[127]={0}; char s[100]; printf("Enter a string:\n"); gets(s); for(i=0;i<strlen(s);i++) if(a[(int)s[i]]==0) {a[(int)s[i]]=1; printf("%c",s[i]);} printf("\n"); }

德城区13910855591: C语言问题:求一段删除数组相同元素的程序,例:1 2 3 4 4 7 2,运行程序后为: 1 2 3 4 7. -
乌澜复方: #include<stdio.h> int del(int *a,int n) {//采用插入法删除数组中相同的元素,效率更高//只需对数组进行一次扫描//该方法可避免大量元素前移int count=1; //count为删除相同元素后数组中元素的个数int i,j;for(i=1;i<n;i++) //对a中每个元素{for( j...

德城区13910855591: 怎样用c语言编写删除重复字符的程序 -
乌澜复方: 楼主要的是C语言的代码,蜗牛*赤焰和询敏两位给的却是C++的,而且也不符合题目的要求.题目要求输出的是删除重复字符后的字符串,蜗牛*赤焰的代码则是把重复的字符置0,然后逐个输出不为0的字符. #includevoid main () { char s[101]; int i,j,k; gets(s); for(i=0;s[i];i++) { for(j=k=i+1;s[j];j++) if(s[j]!=s[i]) s[k++]=s[j]; s[k]='\0'; } printf("%s",s); }

德城区13910855591: c语言中如何去除一组数组中相同的数字……只保留一个然后输出新数组 -
乌澜复方: ①,使用set. ②,用Begin=0,end=ArraySize-1, 每次遍历begin到end之间的元素, 如果有重复的,则将重复元素与end元素交换,--end, 遍历完毕之后++begin,当begin达到end的时候停止.

德城区13910855591: 请高手用C语言编写一个数组中去掉重复数字后按顺序输出的程序,最简单的,最好把个数也统计输出 -
乌澜复方: #include<stdio.h> void main() { int a[10],b[10]; int i,j,k,n,m = 0,flag; printf("please input 10 nuber\n"); for(i = 0; i < 10; i++) scanf("%d",&a[i]); for(i = 0; i < 10; i++) { flag = 1; for(j = 1; j <= m; j++) if(a[i] == b[j]) { flag = 0; break; } if(flag) { b[j] = a[i]; m++; ...

德城区13910855591: 编写c语言函数:遍历字符串删除其中的数字和重复出现的字符. -
乌澜复方: /* qww23h77h89opf : qwhopf 请按任意键继续. . . */ #include <stdio.h>char *DelCh(char *s) {char *q,*p = s;while(*p) { // 去除数字字符q = p;if((*q >= '0') && (*q <= '9'))while(*q = *(q + 1)) ++q;else ++p;}p = s;while(*p) { // 去除重复字符q = p +...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网