我正在处理一个函数问题,要求我们在C中编写一个函数,它将从十进制转换为八进制.这是我到目前为止所拥有的
int oct(int num) {
if (num < 8) {
return num;
}
else {
}
}
Run Code Online (Sandbox Code Playgroud)
所以是的,我很卡住,非常感谢任何帮助谢谢
我觉得我遗漏了一些关于数字系统的基本知识,但我真的很困惑我正在尝试使用按位运算符的下面一段代码:
x=56;
printf("\nHere :\n%x %x\n",x,077);
x=x& ~077;
printf("%x\n",x);
Run Code Online (Sandbox Code Playgroud)
它将077视为八进制(hex 3f).如果我只放77,则将其视为十进制(十六进制4d).如果放177,则将其视为十进制(十六进制b1).我指的是Richie和Kernighan的C编程书.
请帮忙.
目前我正在使用while循环:
std::string to_octal(unsigned int num)
{
int place = 1, remainder, octal = 0;
while (num != 0)
{
remainder = num % 8;
decimal /= 8;
octal += remainder * place;
place *= 10;
}
return std::to_string(octal);
}
unsigned int to_num(std::string octal)
{
unsigned int octal_n = std::stoi(octal);
int place = 1, remainder, num = 0;
while (num != 0)
{
remainder = octal_n % 10;
octal_n /= 10;
num += remainder * place;
place *= 8; …Run Code Online (Sandbox Code Playgroud) 考虑以下计划:
#include <iostream>
int main()
{
std::cout<<std::ios::showbase<<123<<", "<<std::hex<<123<<", "<<std::oct<<123<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
预期输出:123,0x7b,0173
获得的输出:512123,7b,173(参见现场演示:http://ideone.com/Khzj5j )
但如果我稍微修改上述程序如下:
#include <iostream>
using namespace std;
int main()
{
cout<<showbase<<123<<", "<<hex<<123<<", "<<oct<<123<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
现在我得到了理想的输出.(请参阅http://ideone.com/gcuHbm上的现场演示).
为什么第一个程序输出不正确但第二个程序没有?第一个项目出了什么问题?