2013-11-11

11/06社課:a244.for+if 的應用 解答

C的解答如下:
#include <stdio.h>

int main (void){
int times , i ,a;
long long int b ,c,ans ;
while (scanf ("%d",&times)!=EOF) {
for (i=0;i<times;i++) {
scanf ("%d%lld%lld",&a,&b,&c);
if (a==1){
ans = b+c ;
printf ("%lld\n",ans);

}
else if (a==2) {
ans = b-c ;
printf ("%lld\n",ans);

}
else if (a==3) {
ans = b*c ;
printf ("%lld\n",ans);
}
else if (a==4){
ans = b/c ;
printf ("%lld\n",ans);
}
}
}
return 0;
}
---------------------------------------------------------------------------
那麼如果你在送出自己的解答時被ZJ回應以下情形的話...
1. AC --> 通過,不解釋。
2. WA -->
 a.檢查看看自己的達案是否有出錯。

 b.你會覺得奇怪了... 我自己執行時明明答案都是對的,怎麼會出現這個呢?

這牽涉到 int 和 long long int 的概念囉,簡單的來說:
題目的一個條件: ( 1 <= b , c <= 2147483647 )
讓你在設定b和c這個變數時必須要用 long long int 囉

而平常使用的 "%d" 也必須改成 "%lld"
否則可能會造成 overflow 。



3.CE -->
摁 ... 你在回答答案時,如果是用C語言,答案欄上面的"解題語言"
記得修改成 C 喔!!
然後在檢查一下有沒有不該出現的出現...
(例如:有學過C++的學弟們不要不小心把 iostream 的函式庫也包含進去了)

4.RE (code;255) -->

或許是沒有加上 return 0; 這句話的關係...

5.TLE (1s) -->

試著在 while (scanf ("%d",&times)){ } 的條件裡面
加上 !=EOF
==> while (scanf ("%d",&times)!=EOF){ }

(P.S EOF = End of Film )


當然這次上課的內容主要是讓你學會使用for while迴圈 以及if的複習
如果你是因為一些沒學過的東西才無法AC 的話會 "比較" 沒有關係喔 :"))
但是你如果真的很想知道那些東西,
歡迎學弟們先查查資料或 找社長或是教學們一起討論喔 ~~!

3 則留言:

Unknown 提到...

"EOF = End of Film"→EOF = End of "File"
學弟筆誤了。

s89162504 提到...
作者已經移除這則留言。
ian 提到...

電影的結局...?