精華區beta NTUE-CS99 關於我們 聯絡資訊
※ 引述《yantchen (球童 / 資一甲12歲小蘿莉)》之銘言: : 正確顯示位數 ( 由高位輸出至個位 ) : 負數會數 2 補數 : 此版本會使用老師所說以後會交到的陣列,程式較為複雜,僅供參考 : #include<iostream> : using namespace std; : int main(){ : int i=0,j,a[99]; : cout<<"請輸入一個10進位整數\n"; : cin>>i; : if(i==0){ // 等於零 或 非整數 當作 0 : j=1; : a[0]=0; : }else if(i>0){ // 正整數 : j=0; : for(i;i>0;i/=2){ : a[j]=i%2; : j++; : } : }else{ // 負整數 : j=0; : for(i=-i;i>0;i/=2){ : a[j]=(i%2)?0:1; // 取 1 補數 : j++; : } : a[0]+=1; : for(i=0;i<j;i++){ // 取 2 補數 : if(a[i]>1){ : a[i]-=2; : a[i+1]+=1; : } : } : cout<<"( 負數的二進位第一位為正負符號 )\n1"; : } : for(i=j-1;i>=0;i--) cout<<a[i]; // 由高位輸出至個位 : cout<<endl; : system("pause"); : } 解釋一下三元運算子 (a)?b:c a是運算式 b是a=1或非0(true)的時候回傳 c是a=0(false)的時候回傳 依照上面的解釋 程式裡面用到 a[j]=(i%2)?0:1; 等於是下面這行的縮寫 if(i%2==1) a[j]=0; else a[j]=1; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.186.34