当前位置:首页 » 编程语言 » c语言去重啥意思
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言去重啥意思

发布时间: 2023-05-22 03:56:06

A. c语言问题数组去重

#include<stdio.h>
intmain()
{
intm,n,i,cur,pre;
scanf("%d",&m);

while(m--)
{
scanf("%d",&n);
scanf("%d"液枝,&cur);
pre=cur;
printf("%d",cur);
for(i=1;i<n;i++)
{
scanf("%d",&cur);
if(cur!=pre)
{
pre=cur;
升埋和printf("%d",cur);
}
}
printf(" ");
吵盯}

return0;
}

B. 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. 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;//返回新的长度值。
}

D. 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");
}



E. c语言中一个一维数组怎样去重

可以定义两个数组,将原来数组的不重复的数放到新数组中就可以了.(如果需要也可以释放原来数组的内存)#include <stdio.h> main() { int a[5]={1,1,2,1,2}; int i,j,k=0, b[5]={0}; for(i=0;i<=4;i++) for(j=0;j<=4;j++) if(a[i]!=b[j]) {b[k]=a[i];k++;} printf("去重后的数组为:"); for(i=0;i<=k-1;i++) printf("a[i]=%d",a[i]); }

F. C语言数组去重算法

#include <stdio.h> #include <malloc.h> using namespace std ; bool isRepeat(int *arr,int len,int elem) { for(int i = 0 ; i < len ; i++) if(arr[i]==elem) return true ; return false ; } int* delRepeat(int *arr,int len) { int *tar = (int*)malloc(sizeof(int)) ; int temp ; unsigned char i ; unsigned char j = 0 ; tar[j] = arr[0] ; for(i=1;i<len;i++) { if(!isRepeat(tar,j+1,arr[i])) { tar = (int*)realloc(tar,sizeof(int)*(j+2)) ; tar[++j] = arr[i] ; } } return tar ; } int main() { int a[5] = {1,2,2,3,3} ; int *b = delRepeat(a,5) ; return 0 ; }

G. 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;

}

H. c语言中从文件中按行读取字符串,并进行相应操作。

#include "stdafx.h"
#include "stdio.h"
#define ColNum 4 //总列数
#define QCIndex (1-1) //去重列号
#define PXIndex (3-1) //排序列镇碰号

typedef struct txtnode{
struct txtnode* next;
char* col[ColNum];
} TXTNODE;

void CopyToNode(TXTNODE*node,char *buf)
{
if(!buf||!*buf) return;
int j,len = strlen(buf);
char *p = (char*)malloc(len+1);
strcpy(p, buf);
node->col[0] = p;
for(j=1; *p&&j<ColNum; p++)
if(*p=='\t')
{
*p++='\0';
if(*p) node->col[j++] = p;
}
if(j<ColNum) node->col[0][0] = '\0';//放弃列数不足的御中谈行
}

int findnode(TXTNODE*Head,TXTNODE*node,int colIndex)
{
if(Head)
{
for(TXTNODE*p=Head; p; p=p->next)
if(strcmp(node->col[colIndex], p->col[colIndex])==0) return 1;
}
return 0;
}

int insertNode(TXTNODE**Head,TXTNODE*node,int colIndex)
{
TXTNODE*p0,*p1;
for(p0=NULL,p1=*Head; p1; p0=p1,p1=p1->next)
{
if(strcmp(node->col[colIndex], p1->col[colIndex])>=0)continue; //升序用>=0 降序培卖排则用<=0
if(p0)//插在p0后p1前
{
p0->next=node;
node->next = p1;
}
else//插在开头
{
*Head = node;
node->next = p1;
}
return 0;
}
if(p0)//插在末尾 p1==NULL
{
p0->next=node;
node->next = NULL;
}
else//第一次调用 走到这里
{
*Head = node;
node->next = NULL;
}
return 0;
}

void deleteLink(TXTNODE**Head)
{
TXTNODE *p0,*p1;
p1 = *Head;
while(p1)
{
p0 = p1;
p1=p1->next;
free(p0->col[0]);
free(p0);
}
*Head = NULL;
}

void writeLink(TXTNODE*Head,FILE*wfp)
{
TXTNODE *p0=Head;
int i;
while(p0)
{
for(i=0; i<ColNum-1; i++)
fprintf(wfp,"%s\t",p0->col[i]);
fprintf(wfp,"%s",p0->col[i]);
p0=p0->next;
}
}

TXTNODE* readTxt(FILE*rfp)
{
char buf[10240]={0};
TXTNODE* head=NULL, *tmp;
while(!feof(rfp))
{
fgets(buf,10240,rfp);
if(!*buf) continue;
tmp=(TXTNODE*)malloc(sizeof(TXTNODE));
memset(tmp,0,sizeof(TXTNODE));
CopyToNode(tmp,buf);
if(tmp->col[0][0] && !findnode(head, tmp, QCIndex))
{
insertNode(&head, tmp, PXIndex);
}
else
{
free(tmp->col[0]);
free(tmp);
}
}
return head;
}

void main(int argc,char*argv[])
{
FILE *rfp,*wfp;
TXTNODE*Head = NULL;
if(argc<3){printf("去重排序小程序,调用格式:\n命令名 源文件 目标文件");exit(-1);}
rfp = fopen(argv[1],"rb");
if(rfp==NULL){printf("源文件[%s]打不开",argv[1]);exit(-2);}
wfp = fopen(argv[2],"wb");
if(wfp==NULL){fclose(rfp);printf("目标文件[%s]打不开",argv[2]);exit(-2);}
Head = readTxt(rfp);
writeLink(Head,wfp);
fclose(rfp);
fclose(wfp);
deleteLink(&Head);
printf("处理完毕!\n");
}
//VC7下调试运行通过,功能正常 方便改造
//我闲得蛋痛了,花一两小时时间给你做这小程序(调试费了好一会才通过),没有分送,大大的不值

I. C语言关于去重和排序

建议你先排序,再去重。这样检查后一个元素与前一个元素相同则删除,否则留着,多简单!~

J. 数组去重是什么

去重,通常为去重计算、页面去重。

去重计算指在不同的时间维度内,重复一个行为产生的数据只计算一次,按照时间维度去重包括按小时去重、按日去重、按周去重、按月去重或按自选时间段去重。

例如:访客数的去重计算是,同一个访客在所选时间段内产生多次访问,只记录该访客的一次访问行为,访客数进记录为1。若选择的时间维度为“按天”,则同一个访客在当日内产生的多次访问,访客数记录为1。


数组的注意事项:

1、 数组中每个元素的数据类型必须相同,对于带薯inta[4],每个元素都必须为 int。

2、 数组长度 length最好是整数或者常量蠢袭者表达式,

3、 访问数组元素禅脊时,下标的取值范围为 0 ≤ index < length。