第1个回答 2010-12-14
帮你改好了,有几个小错误,第一个定义一个字符数组最好后面加上一个\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);
}本回答被提问者采纳
第2个回答 2010-12-14
感觉你没有理清思路
你可以在定义一个数组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();
}本回答被网友采纳
第3个回答 2010-12-14
算了,不给你改了,我给你写一个吧
#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");
}
第4个回答 2010-12-14
#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);
}