為什麼分隔線上面的會TLE,下面的不會? 而且時間好像差了1000倍诶...? scanf直接放while()的判斷裡面怎麼差這麼多?
#include<stdio.h>
int main(){
int num = 0;
while(num != EOF){
scanf("%d", &num);
if((num % 4 == 0 && num % 100 != 0) || num % 400 == 0)
printf("閏年\n");
else
printf("平年");
} return 0;
}
-----------------------------------------------------------------------
#include<stdio.h>
int main(){
int num;
while(scanf("%d", &num) != EOF){
if((num % 4 == 0 && num % 100 != 0) || num % 400 == 0)
printf("閏年\n");
else
printf("平年");
} return 0;
}
為什麼分隔線上面的會TLE,下面的不會? 而且時間好像差了1000倍诶...? scanf直接放while()的判斷裡面怎麼差這麼多?
#include
int main(){
int num = 0;
while(num != EOF){
scanf("%d", &num);
if((num % 4 == 0 && num % 100 != 0) || num % 400 == 0)
printf("閏年\n");
else
printf("平年");
} return 0;
}
-----------------------------------------------------------------------
#include
int main(){
int num;
while(scanf("%d", &num) != EOF){
if((num % 4 == 0 && num % 100 != 0) || num % 400 == 0)
printf("閏年\n");
else
printf("平年");
} return 0;
}
順序問題
下面表示當輸入num!=end of file執行
上面是先以0作為判斷,每次判斷都會是上筆,
你想想假如你是2000 2001好了,你跑完2000時,你是當num=0的迴圈,2001的時候,是num=2000迴圈,那你EOF那筆根本沒擋,所以就無窮迴圈
為什麼分隔線上面的會TLE,下面的不會? 而且時間好像差了1000倍诶...? scanf直接放while()的判斷裡面怎麼差這麼多?
#include
int main(){
int num = 0;
while(num != EOF){
scanf("%d", &num);
if((num % 4 == 0 && num % 100 != 0) || num % 400 == 0)
printf("閏年\n");
else
printf("平年");
} return 0;
}
-----------------------------------------------------------------------
#include
int main(){
int num;
while(scanf("%d", &num) != EOF){
if((num % 4 == 0 && num % 100 != 0) || num % 400 == 0)
printf("閏年\n");
else
printf("平年");
} return 0;
}
順序問題
下面表示當輸入num!=end of file執行
上面是先以0作為判斷,每次判斷都會是上筆,
你想想假如你是2000 2001好了,你跑完2000時,你是當num=0的迴圈,2001的時候,是num=2000迴圈,那你EOF那筆根本沒擋,所以就無窮迴圈
而且判斷的東西錯了,是要判斷scanf回傳的值是否是EOF(通常是-1),而不是num是否是EOF,兩個是不同的東西。遇到EOF的話,num的值應該是不會改變的