判斷句
if條件式的語法:
if (條件式)
指令一;
else
指令二;
包含多個指令時:
if (條件式){
指令1;
指令2;
}
else{
指令3;
指令4;
}
關係運算子Operator:
< 小於
> 大於
== 等於 (注意,是兩個等號)
<= 小於或等於
>= 大於或等於
!= 不等於
&& 且(And)
|| 或(Or)
! 非(Not)
[練習題一] 判斷浮點數是否為整數?
double n;
if(n!=(int)n)
浮點數(有小數點)
else
整數
[練習題二] 輸入一個整數,判斷奇偶數。
範例一:int a;
scanf("%d",&a);
if(a%2==0)
printf("偶數");
else
printf("奇數");
※使用這種方式,一定是初學者。※
範例二:
if(a%2)
printf("奇數");
else
printf("偶數");
※好多了,條件式內的運算等於0為false、任何非0的數值則為true,應該已經比較瞭解C語言了。※
範例三:
if(a&1)
printf("奇數");
else
printf("偶數");
※使用位元運算子&,只跟1做且的運算,可以測出最右邊位元為0或1。
[練習題] 輸入一個整數,判斷是否為2的次方?並算出為2的幾次方?
判斷式:n>0 && (n & (n-1)) == 0
主程式
int main ()
{
long num;
scanf("%d",&num);
if(num>0 && !(num&(num-1)))
printf("%d是2的%d次方\n",num,log2(num));
else
printf("%d不是2的次方\n",num);
return 0;
}
以遞迴計算次方:
int log2(int value){
if(value==1)
return 0;
else
return 1+log2(value>>1);
}
以迴圈計算:
int log2(int value){
int x=-1;
while(value>0){
value>>=1; //右移一個位元
x++; //計數加1
}
return x;
}
判斷一個數是否為整數
方法一:自己 減掉 (int)後的自己 是否<1的-8次方(0.000000001)?
float x;
...
if(fabs(x-(int)x)<1e-8) printf("x是一個整數\n");
else printf("x不是一個整數\n");
方法二:將本身複製給兩個整數、其中一個先加上0.999999在取整數,是否相等?
int c = (int)b,d = (int)(b + 0.999999);
if( c == d )
printf("是整數\n");
else
printf("不是整數\n");
方法三:自己 減掉 整數後的自己 是否等於0?
float b;
...
if(b - (int)b == 0)
printf("是整數\n");
else
printf("不是整數\n");
方法四:自己 是否 等於 整數後的自己?
float b;
...
if( b != (int)b )
printf("不是整數\n");
else
printf("是整數\n");