首页 > 学院 > 开发设计 > 正文

运用递归函数来转化进制

2019-11-10 18:05:43
字体:
来源:转载
供稿:网友
int r[1000], cnt = 0;void suan(int a, int b){    if (a == 0)    return ; //值得注意的是,因为返回值是void, 所以不能return任何值。    suan(a/b, b);    r[cnt++] = a%b;

}

直接用递归函数把进制转化完存入数组。

我的代码:

#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<iomanip>#include<string.h>using namespace std;int r[1000]; int cnt = 0;void suan(int a, int b){    if (a == 0)    return ;    suan(a/b, b);    r[cnt++] = a%b;}int main(){   int a1, b1, i;   while (scanf ("%d %d", &a1, &b1)!=EOF)   {    cnt = 0;    if (a1 == 0)    cout << "0" ;    else if (a1 < 0)    {        cout << "-";        a1 = -a1;        suan (a1, b1);        for (i = 0; i < cnt ; i++)        {            if (r[i] < 10)            cout << r[i];            else            cout << (char)('A' + r[i] -10);        }    }    else if (a1 > 0)    {        suan (a1, b1);        for (i = 0; i < cnt; i++)        {            if (r[i] < 10)            cout << r[i];            else           cout << (char)('A' + r[i] -10);        }    }    cout << endl;   }    return 0;}

注意, 要输出一个变量(如a)的ascll码值,如果用PRintf,就写printf(“%d”, &a)

如果是cout, 就写cout<<(int)a;

如果要输出一个ascll值代表的字符,用printf,就写printf(“%c”, &a)

如果是cout, 就写cout<<(char)a;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表