typedef?unsigned?long?u32;?/*?將無符號長整型取別名為u32?*/
typedef?signedlong?s32;?/*?將有符號長整型取別名為s32?*/
typedef?enum?Boolean?{?/*?定義壹個枚舉類型,將1取名為True(真),0為False(假)?*/
True=1,
False=(!True)
}?Boolean;
Boolean?isTypeA(u32?naturalNumber);?/*?isTypeA函數原型?*/
int?main()
{
u32?i=1;
Boolean?type;
s32?amountOfA=0,amountOfB=0;?/*?兩個變量分別統計A類數和B類數?*/
while(type=isTypeA(i),i<=1000)
{
if(type)
++amountOfA;
else
++amountOfB;
++i;
}
printf("1到1000中A類數有%ld個,B類有%ld個\n",amountOfA,amountOfB);
return?0;
}
Boolean?isTypeA(u32?naturalNumber)
{
u32?n=naturalNumber;
s32?numberOf0=0,numberOf1=0;
while(n>0)
{
if(?0==(n&1)?)?/*?判斷1個無符號數最低位為0還是為1?*/
++numberOf0;
else
++numberOf1;
n=n>>1;?/*向右移1位*/?
}
if(numberOf1>numberOf0)
return?True;
else
return?False;
}