判斷句

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");