第1个回答 2020-05-29
{
int i,j;
char str1[20]={0}, str[20]="abceeedeffffgggg",ch='a';
for (i=j=0;str[i]!='\0';i++)//str[i]!='\0',数组以'\0'结尾,意思是for只进行到数组末端.
{
if(str[i]!=ch)//如果没有遇到想要删除的字符,则将str[i]的字符放到str1[j]中,之后j++;如果遇到了,就跳过.这样就可以删除字符了.
str1[j++]=str[i];//我感觉应该新建一个str1数组或者字符串.
}
for(int q=0;q<20;q++)
cout<
评论
0
0
加载更多
第2个回答 2019-08-13
/*我写了两种方法!!!方法一*/
#include
int
main()
{
int
a[10]={1,3,3,2,5,1,1,5,6,6};
int
i,j,k,x=10;/*x为数组中无重复有效元素的个数*/
for(i=0;i
#define
flag
-1//此外定义了一个标识。把重复的无素赋值为此标识。
int
main()
{
int
a[10]={1,3,3,2,5,1,1,5,6,6};
int
b[10];//用于存储有无重复元素的数组。
int
i,j,x=10;//x为无重复有效元素个数
for(i=0;i<10;i++)
{
if(a[i]!=flag)//如果标识过了,就不比较了
{
for(j=i+1;j<10;j++)
{
if(a[i]==a[j]&&a[j]!=flag)
{
a[j]=flag;
x--;//标识一个重复项,有效无素减少一个
}
}
}
};
for(i=0,j=0;i<10;i++)//把非标识的元素,给数组b[];
{
if(a[i]!=flag)
{
b[j]=a[i];
j++;
}
};
for(i=0;i
评论
0
0
加载更多
第3个回答 2007-12-18
一个for loop来一个个调
里面加一个for loop用当前的和前面的一个个比~~一样就删掉~~然后n--;
第4个回答 2007-12-18
/*我写了两种方法!!!方法一*/
#include <stdio.h>
int main()
{
int a[10]={1,3,3,2,5,1,1,5,6,6};
int i,j,k,x=10;/*x为数组中无重复有效元素的个数*/
for(i=0;i<x;i++)
{
for(j=i+1;j<x;j++)
{
if(a[i]==a[j])
{
x--;//发现重复时减1
for(k=j;k<x;k++)//移动数组
{
a[k]=a[k+1];
}
j--;
}
}
}
for(i=0;i<x;i++)printf("%d",a[i]);
printf("\n");
return 0;
}
/******************************************************************************
* 再写一种方法!!!
*此方法是把所有重复的都标识出来,然后生成一个新的无重复元素的数组
*******************************************************************************/
#include <stdio.h>
#define flag -1//此外定义了一个标识。把重复的无素赋值为此标识。
int main()
{
int a[10]={1,3,3,2,5,1,1,5,6,6};
int b[10];//用于存储有无重复元素的数组。
int i,j,x=10;//x为无重复有效元素个数
for(i=0;i<10;i++)
{
if(a[i]!=flag)//如果标识过了,就不比较了
{
for(j=i+1;j<10;j++)
{
if(a[i]==a[j]&&a[j]!=flag)
{
a[j]=flag;
x--;//标识一个重复项,有效无素减少一个
}
}
}
};
for(i=0,j=0;i<10;i++)//把非标识的元素,给数组b[];
{
if(a[i]!=flag)
{
b[j]=a[i];
j++;
}
};
for(i=0;i<x;i++)printf("%d",b[i]);
printf("\n");
return 0;
}本回答被提问者采纳