私は、10 進数から 8 進数に変換する関数を C で書くように求める宿題の問題に取り組んでいます。これが私がこれまでに持っているものです
int oct(int num) {
if (num < 8) {
return num;
}
else {
}
}
ええ、私はかなり立ち往生しています。どんな助けも大歓迎ですありがとう
10進数から8進数?超簡単、stdlib の 2 つの関数。
void dec2oct(char *dst, const char *src, size_t dstsz)
{
int n = strtoll(src, NULL, 10); // treat "src" as base-10
snprintf(dst, dstsz, "%o", n); // and write it to "dst" as base-8
}
次のように呼び出します。
char buf[32];
dec2oct(buf, "133742", sizeof(buf));
関数は整数を返す必要があるため、10 進数であるかのように 8 進数を構築する必要があります。
桁数を計算するには、8 で割り算します。Web には、C の長除算の例が無数にあります。
次に、数字ごとに 10 を掛けて、ランニング カウントに追加します。それから、8進数に扮した10進数になります...またはその逆ですか....
次のプログラムを参照してください。
これが役立つことを願っています。
void print_oct(int num)
{
if (num != 0) {
print_oct(num / 8);
printf("%d", num % 8);
}
}