我之前的写法:
#include<stdio.h>
#include<string.h>
char a[12];
int main() {
while(scanf("%s", a)!=EOF) {
int len = strlen(a);
int i, ansy = 0, ansm = 0, ansd = 0;
for(i = 0; i < len && a[i]!= '/'; i++) {
ansy = ansy*10 + a[i]-48;
}
for(i = i+1; i < len && a[i]!= '/'; i++) {
ansm = ansm*10+a[i]-48;
}
for(i = i+1; i < len; i++) {
ansd = ansd*10+a[i]-48;
}
//31.28/29.31.30.31.30.31.31.30.31.30.31
//判断闰年
bool flag = false; //闰年标志变量
if((ansy%4==0 && ansy%100!= 0) || ansy %400 == 0) flag = true;
int ans = 0;
int d[12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
if(flag) d[2] = 29;
for(int i = 1; i < 12; i++) {
if(ansm > i) ans += d[i];
}
ans += ansd;
printf("%d\n", ans);
/*之前的写法
if(ansm > 1) ans += 31;
if(ansm > 2) ans += (flag?29:28);
if(ansm > 3) ans += 31;
if(ansm > 4) ans += 30;
if(ansm > 5) ans += 31;
if(ansm > 6) ans += 30;
if(ansm > 7) ans += 31;
if(ansm > 8) ans += 31;
if(ansm > 9) ans += 30;
if(ansm > 10) ans += 31;
if(ansm > 11) ans += 30;
ans += ansd;
*/
}
return 0;
}
看了别人的方法之后,更改的写法(体现在scanf用法的改变)://按格式输入的这个我真的不太会,还要学习!!
#include<stdio.h>
int main() {
int ansy, ansm, ansd;
while(scanf("%d/%d/%d", &ansy, &ansm, &ansd)!=EOF) {
bool flag = false; //闰年标志变量
if((ansy%4==0 && ansy%100!= 0) || ansy %400 == 0) flag = true;
int ans = 0;
int d[12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
if(flag) d[2] = 29;
for(int i = 1; i < 12; i++) {
if(ansm > i) ans += d[i];
}
ans += ansd;
printf("%d\n", ans);
}
return 0;
}