㈠ c语言问题,数组去重问题,
int main ()
{
int array[100];
int count = 0;
int result = 0;
int index = 0;
int val = 0;
int i = 0;
printf( "请输入数组长度及其数组数据:
" );
while( 1 )
{
result = scanf ("%d" , &val);
if( count == 0 )
{
memset(array, 0, sizeof(int)*100 );
count = val;
if(count > 100 || count < 2 )
{
printf( "输入的数组长度必须大于2并且小于100!
" );
fflush(stdin);
count = 0;
continue;
}
}
else
{
if( val >= 100 || val < 0 )
{
printf( "输入的数组数据必须为小于100的正整数!
" );
fflush(stdin);
count = 0;
continue;
}
array[val] = 1;
index++;
if( result == 1)
{
if( index == count )
{
break;
}
}
}
}
printf( "排序后的数组长度及其数组数据:
" );
count = 0;
for( i = 0x00 ; i < 100 ; i ++ )
{
if(array[i] == 1 )
count++;
}
printf( "%d", count);
for( i = 0x00 ; i < 100 ; i ++ )
{
if(array[i] == 1 )
printf( " %d", i);
}
printf( "
");
system(" PAUSE");
}
㈡ c语言有n个整数,去除其中重复的数字
#include<stdio.h>
#defineM1024
voidmain(){inti,j,n,nn,a[M],b;
scanf("%d",&n);if(n>M)n=M;
for(i=0;i<n;i++)scanf("%d",&a[i]);
for(i=nn=1;i<n;i++){
for(j=b=0;j<nn;j++)if(a[i]==a[j]){b=1;break;}
if(b==0){a[nn]=a[i];nn++;}
}
for(i=0;i<nn;i++)printf("%d",a[i]);printf(" ");
}
㈢ C语言数组去除重复内容
用两个游标控制,可以方便的实现,参考代码如下:
#include<stdio.h>
#define SIZE 12
int a[SIZE]={0,0,0,1,2,2,3,4,4,5,5,44};
int main()
{
int i=1,j=0;
while(i<SIZE)
if(a[j]!=a[i]){
++j;
a[j]=a[i];
++i;
} else ++i;
for(i=0;i<=j;++i){
printf("%d",a[i]);
if(i<j)printf(",");
}
return 0;
}
㈣ c语言编程:删除一批正整数中重复的值
#include "stdio.h"
int main()
{
int a[10],i,j,k;
printf("输入10个整数: ");
for(i=k=0;i<10;i++)
{
scanf("%d",&a[k]);
for(j=0;j<k;j++)
if(a[k]==a[j])k--;
k++;
}
printf("去重以后的数: ");
for(i=0;i<k;i++)
printf("%d ",a[i]);
printf(" ");
return 0;
}
㈤ c语言把读入的一批整数(不超过100个)去掉重复后输出. 输入先是一个正整数,记作n,然后是
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta[100],i,n,n0,t,fd;
n0=0;
scanf("%d",&n);
while(n--){
scanf("%d",&t);
i=fd=0;
while(i<n0)
if(a[i++]==t){
fd=1;break;
}
if(!fd)
a[n0++]=t;
}
for(i=0;i<n0;i++)
printf("%d",a[i]);
}
㈥ C语言删除一个整型数组里面重复的元素
利用双重循环,将每个值依次与其后面的值相比较,如果有相同的则删除该元素即可。
删除时,可以使用将后面元素依次向前移动一位,同时总长度减一的方式。
参考代码如下:
intremove_repeat(int*a,intl)
{
inti,j,k;
for(i=0;i<l;i++)
{
for(j=i+1;j<l;j++)//对后面每个元素比较,去重。
{
if(a[j]==a[i])//发现重复元素。
{
for(k=j+1;k<l;k++)//依次前移一位。
a[k-1]=a[k];
l--;//总长度减一。
}
}
}
returnl;//返回新的长度值。
}
㈦ C语言输入正整数n和n个1~10000之间的整数,对这n个数去重输入数
#include<stdio.h>
intmain()
{
intn;
intnums[10];
intcount=0;
inttemp;
inti,j;
printf("Entern:");
scanf("%d",&n);
if(n>10||n<1)
n=10;
printf("Enter%dnumber: ",n);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
for(j=0;j<count;j++)
{
if(nums[j]==temp)
break;
}
if(j==count)
nums[count++]=temp;
}
for(i=0;i<count;i++)
printf("%d",nums[i]);
return0;
}
㈧ c语言删除重复数据
程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除
#include<stdio.h>
void main()
{
char a[100],b[100];
//定义两个字符组,a[100]用来接收输入的字符串,b[100]用来存储不重复的字符
int pa=0,pb=0,i,flag;
scanf("%s",a);
//输入字符串到a[100]中,用scanf读入到a[100]中会自动在a[100]中字符串结束的地方加上'\0'
for(pa=0;a[pa]!='\0';pa++)
//for循环结束的条件是a[pa]==0,也就是从a[100]字符组中读取一个字符,直到没有
{
flag=1;
//flag是个标志符,当flag==1时,说明这个字符(下句中的a[pa])是第一次出现,应该加入到b[100]中
//如果flag==0,说明这个字符(下句中的a[pa])重复了,不应该加到b[100]中
for(i=0;i<pb;i++) if(b[i]==a[pa]) flag=0;
//把a[100]中读取的字符a[pa]与b[100]中的所有字符进行比较,如果b[i]==a[pa]
//说明这个字符已经在b[100]中了,也就是重复字符了,所有将flag=0,不能加入b[100]中
//如果a[pa]与b[100]中的所有字符都不相等,说明这个字条是第一次出现,应该加到b[100]
if(flag)
{
b[pb]=a[pa];pb++;
}
//如果flag==1,则将a[pa]这个字符加入到b[100]中,然后将pb加1
}
b[pb]='\0';
//当所有的不重复的字符都加入到b[100]中时,将b[100]中字符结束的地方加'\0',也就是b[pb]='\0'
//因为字符串都是民'\0'结尾的,所以加上这句
printf("%s\n",b);
//输出b[100]中的字符串,也就是删除过重复字符之后的了
}
㈨ C语言问题,删除整型数组内重复的项并输出,如能解惑,不胜感激。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain(intargc,char*argv[])
{
srand((unsigned)time(0));
ints[30]={0};
inti,j;
for(i=0;i<30;i++)
{
s[i]=rand()%10;
}
printf("
源数组:");
for(i=0;i<30;i++)
{
printf("%d",s[i]);
}
j=0;
while(j<30)
{
if(s[j]==-32767)
{
j++;
continue;
}
for(i=j+1;i<30;i++)
{
if(s[j]==s[i])
{
s[i]=-32767;
}
}
j++;
}
printf("
目标数组:");
for(i=0;i<30;i++)
{
if(s[i]!=-32767)
printf("%d",s[i]);
}
return0;
}
㈩ C语言关于去重和排序
建议你先排序,再去重。这样检查后一个元素与前一个元素相同则删除,否则留着,多简单!~