#include <stdio.h>
#include <stdlib.h>
#define false -1 // 填补位,只是做标记,只要不是输入范围内的都可以
int main()
{
//输入
int j, i, len, max, a[100];
scanf("%d", &len);
int arry_1[len];
for(i=0; i<len; i++)
{
scanf("%d", &arry_1[i]);
}
//找到最大值
max = arry_1[0];
for(j=1; j<len; j++)
{
if (max < arry_1[j])
{
max = arry_1[j];
}
}
//分配数组占位
// int a[max] = {0}; 不能这么写,因为max是变量,而在数组里面只能是常量,如果想使用变量,得用动态内存分配
for(i=0; i<max+1; i++) // 这里是有bug的,只能存放整数0——100以内的,正常应该是定义一个(max+1)的数组,因为需要用来存放元素位置
{
a[i] = false;
}
for(i=0; i<len; i++)
{
a[arry_1[i]] = arry_1[i];
}
//选择输出
for(i=0; i<max+1; i++)
{
if (a[i] != false)
{
printf("%d", a[i]);
}
}
return 0;
}
欢迎讨论, 小白刚学C语言。明天试试用动态内存分配写。