帮帮孩子c语言70分,8,9,10WA,求8的所有会问日期

P2010 [NOIP2016 普及组] 回文日期

@[jango](/user/998272) 你这不是30分吗
by zcxxcz2110 @ 2024-02-20 13:28:32


@[zcxxcz2110](/user/920060) 我这好像最近的是70
by jango @ 2024-02-20 15:13:51


@[jango](/user/998272) 但这个是30啊,而且你这个代码为什么这么复杂
by zcxxcz2110 @ 2024-02-20 18:42:04


这是我的代码(C++) ```cpp #include <iostream> using namespace std; const int D[15] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main() { int l, r, ans = 0, t; cin >> l >> r; for(int i = 1; i <= 12; i++) { for(int j = 1; j <= D[i]; j++) { t = j % 10 * 10000000 + j / 10 * 1000000 + i % 10 * 100000 + i / 10 * 10000 + i * 100 + j; if(t >= l && t <= r) ++ans; } } cout << ans << endl; return 0; } ```
by zcxxcz2110 @ 2024-02-20 18:45:30


这是C ```c #include <stdio.h> const int D[15] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main() { int l, r, ans = 0, t; scanf("%d %d", &l, &r); for(int i = 1; i <= 12; i++) { for(int j = 1; j <= D[i]; j++) { t = j % 10 * 10000000 + j / 10 * 1000000 + i % 10 * 100000 + i / 10 * 10000 + i * 100 + j; if(t >= l && t <= r) ++ans; } } printf("%d", ans); return 0; } ```
by zcxxcz2110 @ 2024-02-20 18:48:16


@[zcxxcz2110](/user/920060) 发错了···,这是70分的 ```c #include<stdio.h> int fun_huiwen(int dt) { int rt,lf; int out=1; for(int i=10;i<=10000;i*=10) { rt=(dt*10/i)%10; lf=(dt/(100000000/i))%10; if(rt!=lf) { out=0; break; } } return out; } int fun_date(int dt) { int y,m,d,rn=0; y=dt/10000; m=(dt/100)%100; d=dt%100; if(y%400==0) { rn=1; } else if(y%100!=0&&y%4==0) { rn=1; } switch(m) { case 1:if(d==32){d=1;m+=1;} case 2: if(rn) { if(d==30){d=1;m+=1;}} else if(rn==0){if(d==29){d=1;m+=1;}} case 3:if(d==32){d=1;m+=1;} case 4:if(d==31){d=1;m+=1;} case 5:if(d==32){d=1;m+=1;} case 6:if(d==31){d=1;m+=1;} case 7:if(d==32){d=1;m+=1;} case 8:if(d==32){d=1;m+=1;} case 9:if(d==31){d=1;m+=1;} case 10:if(d==32){d=1;m+=1;} case 11:if(d==31){d=1;m+=1;} case 12:if(d==32){d=1;m+=1;} } if(m==13) { m=1; y+=1; } dt=10000*y+100*m+d; return dt; } int main() { int d1,d2,n=0; scanf("%d",&d1); scanf("%d",&d2); for(int dt=d1;dt<=d2;) { n+=fun_huiwen(dt); /* if(fun_huiwen(dt)) { printf("%d\n",dt); } */ dt++; dt=fun_date(dt); } printf("%d",n); return 0; } ```
by jango @ 2024-02-20 21:35:44


@[zcxxcz2110](/user/920060) 你这好神奇,有点看不懂
by jango @ 2024-02-20 21:36:41


@[zcxxcz2110](/user/920060) 老哥,你的c代码有点看不明白呢,我改了改跑了一下,为什么++ans那里,t<r还是能进if,这是我测试用的```c #include <stdio.h> const int D[15] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main() { int l, r, ans = 0, t; scanf("%d %d", &l, &r); for(int i = 1; i <= 12; i++) { for(int j = 1; j <= D[i]; j++) { t = j % 10 * 10000000 + j / 10 * 1000000 + i % 10 * 100000 + i / 10 * 10000 + i * 100 + j; if(t >= l && t <= r) { ++ans; printf("t=%d\n",t); printf("l=%d,r=%d\n",l,r); printf("t-r=%d\n",t-r); } } } printf("%d", ans); return 0; } ```
by jango @ 2024-02-20 21:47:30


@[zcxxcz2110](/user/920060) 老哥,你的c代码有点看不明白呢,我改了改跑了一下,为什么++ans那里,t<r还是能进if,这是我测试用的```c ```c #include <stdio.h> const int D[15] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main() { int l, r, ans = 0, t; scanf("%d %d", &l, &r); for(int i = 1; i <= 12; i++) { for(int j = 1; j <= D[i]; j++) { t = j % 10 * 10000000 + j / 10 * 1000000 + i % 10 * 100000 + i / 10 * 10000 + i * 100 + j; if(t >= l && t <= r) { ++ans; printf("t=%d\n",t); printf("l=%d,r=%d\n",l,r); printf("t-r=%d\n",t-r); } } } printf("%d", ans); return 0; } ```
by jango @ 2024-02-20 21:48:29


t<r为啥不能进if
by zcxxcz2110 @ 2024-02-21 13:58:15


| 下一页