这是我们科协的题目,能不能帮下我,我大一,一些函数还没学过
求将10进制换算成2,8,10,16进制的C++编程
- 提问者网友:做自己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; }