永发信息网

求将10进制换算成2,8,10,16进制的C++编程

答案:3  悬赏:10  手机版
解决时间 2021-08-19 13:11
  • 提问者网友:做自己de王妃
  • 2021-08-18 17:05

这是我们科协的题目,能不能帮下我,我大一,一些函数还没学过

最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-08-18 18:29

我给你个吧 你会看见真正的c++写的程序时什么样子!


#include<iostream>
#include<stack>
#include<cstdlib>
#include<string>
using namespace std;
void convert(int num ,int n)//把num数转换为n进制
{
stack<char> s;
char temp;
string Binary;
while(num/n)
{
temp=num%n+'0';
s.push(temp);
num=num/n;
if(num<n)
s.push(num+'0');
}


while(!s.empty())
{
if(n==16)
{
switch(s.top())
{
case ':':Binary+="A";break;
case ';':Binary+="B";break;
case '<':Binary+="C";break;
case '=':Binary+="D";break;
case '>':Binary+="E";break;
case '?':Binary+="F";break;
default:Binary+=s.top();
}
// Binary=s.top();
s.pop();
}
else
{
Binary+=s.top();
s.pop();
}

}
cout<<Binary<<endl;


}
int main()
{
string str;
int n,num;
cin>>str>>n;
if(str[0]=='-')
{
str.erase(0,1);
num=atoi(str.c_str());
cout<<"-";
convert(num,n);
}
else
{
num=atoi(str.c_str());
convert(num,n);
}
return 0;
}
要做成界面 是不是一般的桌面程序那个样子哦 用MFC桌界面很简单了 还有你也太吝啬了吧 给点分吧

全部回答
  • 1楼网友:duile
  • 2021-08-18 19:41

#include"iostream.h" #include"stdio.h" #include"stdlib.h" void change(int k,n) { int i,j,a[50]; char c; for(i=0;k!=0;i++) { a[i]=k%n; k=k/n; } for(j=i;j>=0;j--) {if(a[j]>=10){c=A+a[j]-10;cout<<c;} else cout<<a[j];} cout<<"("<<n<<")"; } int main() {int k,N; cout<<"输入一个十进制数:"; cin>>k; cout<<"你要转化成几进制:(输入2,8,16三个中的一个)"; cin>>N; if(N==2||N==8||N==16) change(k,N),cout<<k<<"(十)="; else cout<<"输入错误!"; return 0; }

  • 2楼网友:神鬼未生
  • 2021-08-18 19:12

#include <stdio.h> #include <string.h>

char t[] = "0123456789ABCDEF";

void Convert(int num, int k, char* d) { char* p = d; while (num) { *d++ = t[num%k]; num /= k; } *d = 0; int len = strlen(p) ; for (int i = 0; i < len / 2; i++) { char c = p[i]; p[i] = p[len - i - 1]; p[len - i - 1] = c; } }

int main() { char num[100]; Convert(100, 2, num); printf("%s\n", num); return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯