C primer plus 第六版 第九章 第十題 程式設計練習答案

Aeron-A發表於2018-06-01

Github 地址:這裡這裡φ(>ω<*)

/*
    本程式應 習題-10 建立。
  題目要求: 改寫程式清單 9.8 中的 to_binary() 函式。 
              編寫一個 to_base_n() 函式接受兩個引數,且第二個引數在2-10的範圍內;
   然後以第二個引數中指定的進位制列印第一個引數的數值。
     例子在 書 Page 276 。
*/


#include<stdio.h>


void to_base_n(int a, int b);


int main(void)

// 儲存輸入值和指定的進位制。
int one = 0;
int two = 0;


printf("Please input two numbers :");
scanf_s("%d %d", &one, &two);


// 不迴圈輸入只是懶得寫了 !!!!!演算法最重要。。當然這肯定不是懶的理由。。。
to_base_n(one, two);


printf("\nBye !\n");


getchar();
getchar();


return 0;
}


void to_base_n(int a, int b)
{
int count = 0;        // 計算用。


     // 本題 point !! 


if (b == 8)
{
count = a % 8;


if (a >= 8)
{
to_base_n( a / 8,  b);
}
else
{
// 空語句。
;
}


printf("%d", count);


}

else
{
// 題目指定在 2 - 10 的 範圍內。則為 2 進位制和 8 進位制。其他進位制。。。則忽略不計。
// 這個抄書上的。


count = a % 2;


if (a >= 2)
{
to_base_n(a / 2, b);
}
else
{
// 空語句。
;
}


putchar(count == 0 ? '0' : '1');


}

// 之所以用 return ; 是因為如果 void 類函式用 return 0 的話這個編譯器會報錯。
return;
}

相關文章