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。