10月18日每日總結
今天PTA選擇題上有三個點總結:
首先2-9題
這一題我在做的時候,沒什麼問題,可是在老師講的時候,我居然忘了這題錯在哪裡,考點很白痴,既然忘了就再總結一次:
if-else語句中若真/假的執行語句不止一條,要用{ }給括起來。
其次2-11題
在codeblock裡,if()裡不能用賦值“=”,會顯示編譯錯誤,必須改成比較中的等於“ = = ”。但其實,if()的判斷語句中是可以用賦值的,因為if語句只吃判斷語句的真假,即 !=0或 =0。故,這裡並沒有語法錯誤,只是codeblock中不允許而已。若在if()中用賦值語句,此時真假取決於“=”右邊的值(反正會賦到左邊,就用右邊的值就好。。。我是這麼理解的),比如在這題中,X2+X3=0,所以if為假執行printf(“# # # #”)。
(我一定要強調一下,這題我沒錯!只是覺得重要)
最後2-7題
唯一錯的一題,不難,但錯就錯在我沒仔細讀題,這是最遺憾的
仔細看第一行if(X>Y);,看起來很正常的if語句,我一眼就過去了當然看不見後面還有個“;”!!所以當X>Y時執行真,即空語句(;),其後沒有else所以此時if語句結束,也就是這題可以改成:
x=-x;
if(x<y)
y=-y;
printf(“x=%d,y=%d\n”,x,y);
即無論xy的值為多少,後面第二行的x=-x;都會執行。
以此題為鑑,以後審題一定細心!!!最後這題應該是選B
而且這兩天做題又學到倆個新語句:
如何開平方根和如何求絕對值
他們都要用到標頭檔案#include<math.h>(額外加的,其他的像<stdio.h>還得加)
平方根:x=sqrt(y);
絕對值:x=abs(y); x=fabs(y);
理論上abs是給int整型用的,而fabs是給float浮點型用的,但我在codeblock上發現一個問題:
abs可以用於整型和浮點型,但用於整型時會給警報warning,但不影響執行而且輸入輸出並無問題;
而fabs只能用於浮點型,若用於整型則會警報並且執行時會出錯。
PS:補充一個之前誤會的問題,在codeblock上寫程式碼時,編譯過程有可能會有warning和error提示出現,我一直以為只要有其中一個就是編譯錯誤,實則不然。warning只是警報,可以編譯但程式執行可能有問題;error才是錯誤,此時編譯失敗程式無法執行。這件事告訴我,思考歸思考,不能想當然。