#include
#include
int opposite(int n)
{
int m=(int)ceil(log(n)),sum=0;
for(int i=m-1;i>=0;i--)
{
sum=n%10*pow(10,i)+sum;
n=n/10;
}
return sum;
}
int main()
{
int bottle,d;
scanf("%d\n",&d);
while(d--)
{
int a[50]={0},k=0,m,n;
scanf("%d%d",&m,&n);
for(int i=m;i<=n-m;i++)
{
a[k]=opposite(i);
k++;
}
while(1)
{
int sum=0;
for(int j=1;jif(a[k]-1])
{
bottle=a[k];
a[k]=a[k-1];
a[k-1]=bottle;
sum++;
}
}
if(sum==0)
break;
}
for(int i=0;iprintf("%d ",a[i]);
}
printf("\n");
}
return 0;
}
运行之后没有结果,个人认为可能是输出的语句不太正确,但看不出来是哪里不对
//什么东西啊,随便就采纳了???
//看看我写的,有点长,有好的意见望提出!
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
int intcmp(const void *x, const void *y)
{
int a = *(int *)x, b = *(int *)y;
return a > b ? 1 : (a == b ? 0 : -1);
}
void mad(int *a0, int *a, int n)
{
int x, b, bi;
for (int i = 0; i < n; i++)
{
x = *(a0 + i);
bi = x;
if ((x % 10) == 0)
{
bi = x;
while ((x % 10) == 0)
{
x /= 10;
}
}
b = x;
for (int j = 0; j < n; j++)
{
if (a[j] == b)
{
a[j] = bi;
break;
}
}
}
}
int made(int *arr, int n)
{
int a, j = 0;
char buf[8] = {'\0'};
for (int i = 0; i < n; i++)
{
a = *(arr + i);
while (a)
{
sprintf(&buf[j++], "%d", a % 10);
a /= 10;
}
buf[j] = '\0';
sscanf(buf, "%d", &arr[i]);
memset(buf, '\0', 8);
j = 0;
}
return 0;
}
int main()
{
int n = 0;
//输入数据组数
do
{
scanf("%d", &n);
} while (n < 2 || n > 5);
int a[n][2], arr[n][51], arr0[n][51];
//输入每组数据范围
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 2; j++)
{
scanf("%d", &a[i][j]);
}
}
//赋初始值
for (int i = 0; i < n; i++)
{
int k = a[i][1] - a[i][0];
int z = a[i][0];
for (int j = 0; j <= k; j++)
{
arr[i][j] = z + j;
arr0[i][j] = arr[i][j];
}
}
//处理
for (int i = 0; i < n; i++)
{
made(arr[i], a[i][1] - a[i][0] + 1);
}
//排序
for (int i = 0; i < n; i++)
{
qsort(arr[i], a[i][1] - a[i][0] + 1, sizeof(int), intcmp);
made(arr[i], a[i][1] - a[i][0] + 1);
}
for (int i = 0; i < n; i++)
{
mad(arr0[i], arr[i], a[i][1] - a[i][0] + 1);
}
//输出
for (int i = 0; i < n; i++)
{
int k = a[i][1] - a[i][0];
for (int j = 0; j <= k; j++)
{
printf("%d ", arr[i][j]);
}
puts("\n");
}
return 0;
}