WA#2求助,看不出来有啥问题了....
查看原帖
WA#2求助,看不出来有啥问题了....
1190291
buzhimingtongxue楼主2024/3/7 21:03

#include

#include

using namespace std;

struct date { int add; bool trfa = true; };

void judgeDate(int x, int y, int z, date &s);

int main() {

int x, y, z;
scanf("%i/%i/%i", &x, &y, &z);
int n = 3;
date sum[n];
judgeDate(x, y, z, sum[0]);
judgeDate(z, x, y, sum[1]);
judgeDate(z, y, x, sum[2]);
date temporary;
temporary.add = -1;
for (int j = 0; j < n - 1; j++) {
	for (int i = 0; i < n - 1; i++) {
		if (sum[i].add > sum[i + 1].add) {
			temporary.add = sum[i].add;
			temporary.trfa = sum[i].add;
			sum[i].add = sum[i + 1].add;
			sum[i].trfa = sum[i + 1].trfa;
			sum[i + 1].add = temporary.add;
			sum[i + 1].trfa = temporary.trfa;
		}
	}
	if (temporary.add == -1) {
		break;
	}
}
for (int i = 0; i < n; i++) {
	if (sum[i].trfa && (sum[i].add != sum[i + 1].add || i == n - 1)) {
		printf("%i-%02i-%02i\n", sum[i].add / 10000, sum[i].add % 10000 / 100, sum[i].add % 10000 % 100);
	}
}
return 0;

}

void judgeDate(int x, int y, int z, date &s) {

if (y > 12 || ((y == 1 || y == 3 || y == 5 || y == 7 || y == 8 || y == 10 || y == 12) && z > 31) ||
		((y == 4 || y == 6 || y == 9 || y == 11) && z > 30)) {
			s.trfa = false;
			return;
		}
else if (y == 2) {
	if (((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0))) {
		if (z > 29) {
			s.trfa = false;
			return; 
		}
	}
	else {
		if (z > 28) {
			s.trfa = false;
			return; 	
		}
	}	
}
if (x > 59) {
	x += 1900;
}
else {
	x += 2000;
}
s.add = x * 10000 + y * 100 + z;
return;

}

2024/3/7 21:03
加载中...