C语言中,如何用删除法删除数组中相同的数字
#include<stdio.h>
intdel_same(intdate[],intn);
intdel_same(intdate[],intn)
{
inti,j,k=0;
for(i=0;i<n;++i)//i用来遍历数组
{
for(j=i+1;j<n&&date[i]-date[j];++j);
if(!(j-n))//没有重复元素
date[k++]=date[i];//可将date[]看作两个数组
}
returnk;//返回删除后的有效长度
}
intmain(void)
{
intdate[1001],i,j,k,n;
printf("输入数据个数:");
scanf("%d",&n);
printf("输入数据:");
for(i=0;i<n;++i)
scanf("%d",date+i);
k=del_same(date,n);
for(i=0;i<k;++i)
printf("%-5d",date[i]);
return0;
}
扩展资料
C语言在数组中删去指定数字
#include<stdio.h>
#include<string.h>
intmain()
{
intn;
scanf("%d",&n);
intarray[10];
intarray_1[10];
intj=0;
for(inti=0;i<10;i++)
{
scanf("%d",&array[i]);
}
for(inti=0;i<10;i++)
{
if(array[i]!=n)
{
array_1[j]=array[i];
++j;//此时j++也是可以的;
}
}
for(inti=0;i<j;i++)
{
printf("%d",array_1[i]);
}
return0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int simplification(int a[], int n) {
int i,j,k;
for(i = 0; i < n - 1; ++i) {
for(j = i + 1; j < n; ++j) {
if(a[i] == a[j]) {
for(k = j; k < n - 1; ++k)
a[k] = a[k + 1];
--j;
--n;
}
}
}
return n;
}
int main() {
int a[30],i,n = 30;
printf("原数组:\n");
srand((unsigned)time(NULL));
for(i = 0; i < n; ++i) {
a[i] = rand()%10;
if(i && i % 10 == 0) printf("\n");
printf("%d ",a[i]);
}
printf("\n");
n = simplification(a,n);
printf("去除相同元素后:\n");
for(i = 0; i < n; ++i) {
if(i && i % 10 == 0) printf("\n");
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
#include <stdlib.h>
#include <time.h>
int simplification(int a[], int n) {
int i,j,k;
for(i = 0; i < n - 1; ++i) {
for(j = i + 1; j < n; ++j) {
if(a[i] == a[j]) {
for(k = j; k < n - 1; ++k)
a[k] = a[k + 1];
--j;
--n;
}
}
}
return n;
}
int main() {
int a[30],i,n = 30;
printf("原数组:\n");
srand((unsigned)time(NULL));
for(i = 0; i < n; ++i) {
a[i] = rand()%10;
if(i && i % 10 == 0) printf("\n");
printf("%d ",a[i]);
}
printf("\n");
n = simplification(a,n);
printf("去除相同元素后:\n");
for(i = 0; i < n; ++i) {
if(i && i % 10 == 0) printf("\n");
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
#include <stdlib.h>
#include <time.h>
int simplification(int a[], int n) {
int i,j,k;
for(i = 0; i < n - 1; ++i) {
for(j = i + 1; j < n; ++j) {
if(a[i] == a[j]) {
for(k = j; k < n - 1; ++k)
a[k] = a[k + 1];
--j;
--n;
}
}
}
return n;
}
int main() {
int a[30],i,n = 30;
printf("原数组:\n");
srand((unsigned)time(NULL));
for(i = 0; i < n; ++i) {
a[i] = rand()%10;
if(i && i % 10 == 0) printf("\n");
printf("%d ",a[i]);
}
printf("\n");
n = simplification(a,n);
printf("去除相同元素后:\n");
for(i = 0; i < n; ++i) {
if(i && i % 10 == 0) printf("\n");
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
{ int i,j,t;
int a[10]={1,3,3,2,5,1,1,5,2,6};
t=a[0]; /*把第一个数赋给t*/
for(i=1;i<10;i++)
{
if (t==a[i]) /*判断是否有相同的*/
{for(j=0;j+i<9;j++)/*用循环进行删除*/
a[i+j]=a[i+j+1];/*后面的数替代前面的*/
a[9]=0;} /*后面补0*/
t=a[i+1]; /*把下一个数赋给t*/
}
for(i=0;i<10;i++)/*输出*/
printf("%d",a[i]);
}