开辟一个数组,来记录a[i]中关键字
为了控制空格的格式,可以开辟一个新的数组
#include <stdio.h>
#include<stdlib.h>//包含system()函数的头文件
#define N 10000
int main() {
int k;
int a[100];
int b[N];
int c[100];
int i,j;
int tmp;
scanf("%d", &k);
for (i = 0; i < N; i++)
{
b[i] = 0;
}
for ( i = 0; i < k; i++)
{
scanf("%d", &tmp);
a[i] = tmp;//临时存放a[i]的值
while (tmp!=1)
{
if (tmp%2==0)
{
tmp = tmp/ 2;
b[tmp] = 1;
}
else
{
tmp = (tmp * 3 + 1) / 2;
b[tmp] = 1;
}
}
}
//因为小从大到小输出,则对数组a先进行排序
for ( i = 1; i < k; i++)
{
for (int j = 0; j <= k-i; j++)
{
if (a[j]<a[j+1])
{
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
j = 0;
for ( i = 0; i < k; i++)
{
if (b[a[i]]==0)
{
c[j++] = a[i];//将a[i]存入c[i]中
}
}
//控制空格格式的输出
for ( i = 0; i < j-1; i++)
{
printf("%d ", c[i]);
}
printf("%d", c[j - 1]);
return 0;
}