程序填空 输入n个无序的数放入数组a中,将相同的数删得只剩一个,输出删除后的数列。

#define N 30
main()
{ int a[N], i, j, k, n; n=N;
for(i=0; i<n; i++ ) scanf ( "%d", &a[i] );
for (i=0; i<n-1; i++ )
for (___________; j< n; j++ )
if (a[i]= = a[j] )
{ for(k = j; k<n; k++ )
_____________ ; /*删除*/
____________;
n--; /* 删除后,将数组元素的总数减1*/
}
for ( i=0; i<n; i++ ) printf("%8d", a[i] );
}

#include <stdio.h>
#define N 30
int main()
{ int a[N], i, j, k, n; n=N;
for(i=0; i<n; i++ ) scanf ( "%d", &a[i]);
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--; /* 删除后,将数组元素的总数减1*/
}
for ( i=0; i<n; i++ ) printf("%8d", a[i] );
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-21
#include<stdio.h>
#define N 30
void main()
{ int a[N], i, j, k, n; n=N;
for(i=0; i<n; i++ ) scanf ( "%d", &a[i] );
for (i=0; i<n-1; i++ )
for (j=i+1; j<n; j++ )
if (a[i]== a[j] )
{ for(k = j; k<n; k++ )
a[k]=a[k+1]; /*删除*/
j--;
n--; /* 删除后,将数组元素的总数减1*/
}
for ( i=0; i<n; i++ ) printf("%8d", a[i] );
}

//楼上回答得很好,数组越界都检查出来了。本回答被提问者采纳
相似回答