题目在此
输入样例
8
2018/1/8 1024
2012/10/31 256
2014/10/29 300
2012/10/31 457
2014/10/27 512
2011/10/27 95
2014/11/3 1102
2017/11/24 1535
输出样例
2018/1/8 1024
2017/11/24 1535
2014/11/3 1102
2014/10/29 300
2014/10/27 512
2012/10/31 457
2012/10/31 256
2011/10/27 95
2012/10/31 457
2012/10/31 256
这两个死活换不过来
这是我的代码
求大佬看下
include<stdio.h>
int a[400];
void swap(int b,int c)
{
for (int i = 0; i < 4;i++)
{
int z = a[b + i];
a[b + i] = a[b + i + 4];
a[b + i + 4] = z;
}
}//前四个与后四个交换
int main()
{
int n;
scanf("%d", &n);
int i;
for (i = 1; i <= n 4; i += 4)
{
scanf("%d/%d/%d %d", &a[i], &a[i + 1], &a[i + 2], &a[i + 3]);//使用数组a每四个储存空间来保存一个文件的属性
}//每四个中,第一个为年,第二个为月,第三个为日,第四个为大小
int j;
for (i = 1; i < n; i++)
{
for (j = 1; j <= n 4; j += 4)
{
if (a[j] < a[j + 4])
swap(j, j + 4);
if (a[j] == a[j + 4] && a[j + 1] < a[j + 5])
swap(j, j + 4);
if (a[j] == a[j + 1] && a[j + 1] == a[j + 5] && a[j + 2] < a[j + 6])
swap(j, j + 4);
if (a[j] == a[j + 1] && a[j + 1] == a[j + 5] && a[j + 2] == a[j + 6] && a[j + 3] < a[j + 7])//就是这一栏出现问题了
{
swap(j, j + 4);
printf("123");//判断这个if语句是否运行
}
}
}
for (i = 1; i < n * 4;i+=4)
{
printf("%d/%d/%d %d\n", a[i], a[i + 1], a[i + 2], a[i + 3]);
}
return 0;
}
|