| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1793 人关注过本帖
标题:求进制数算法上的问题
取消只看楼主 加入收藏
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
结帖率:96.15%
收藏
已结贴  问题点数:20 回复次数:1 
求进制数算法上的问题
题目如下所示,我找到网上的答案跟自己的对照,调用函数里的算法我有些不解的地方,比方像,
    n1 = x /y ;
    n2 = x %y;
    if(n1 < y)
        putchar('0' + n1);
这个步骤,我不明白为什么要计算 n1 = x / y;并且用if(n1 < y)是个什么含义我也不太理解。

第九题:为了使程序清单9.8中的函数to_binary()更一般化,可以在心的函数to_base_n()中使用第二个参数,且该参数的范围从2到10。然后,这个新函数输出第一个参数在第二个参数规定的进制数下的数值结果。例如,to_base_n(129,8)的输出时201,也就是129的八进制数值。最后在一个完整的程序中对该函数进行测试。
解:
代码如下:
#include <stdio.h>
void to_base_n(int x,int y);
int main(void)
{
    int x,y;


    printf("Input a int for number and a int for like binary:\n");
    scanf("%d %d",&x,&y);
    to_base_n(x,y);
    printf("\n");
    return 0;
}
void to_base_n(int x,int y)
{
    int n1,n2;


    n1 = x /y ;
    n2 = x %y;
    if(n1 < y)
        putchar('0' + n1);
    else
        to_base_n(n1,y);
    putchar('0' + n2);
}
搜索更多相关主题的帖子: 八进制 网上 
2016-09-04 02:22
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
贴上自己的代码:
#include <stdio.h>
void to_base_n(unsigned m, unsigned n);
int main(void)
{
    unsigned long number;
    unsigned n;
    printf("enter an integer (q to quit): \n");
    while(scanf("%lu%u", &number, &n) == 2)
    {
        printf("Binary equivalent: ");
        to_base_n(number, n);
        putchar('\n');
        printf("Enter an integer(q to quit: \n");
    }
    printf("Done.\n");
   
    return 0;
}

void to_base_n(unsigned m, unsigned n)
{
    int r;
   
    if((n>=2)&&(n<=10))
    {
        r = m % n;
        if(m >= 2)
            to_base_n(m/n, n);
        putchar('0' + r);
    }
    return;
   
}
2016-09-04 02:22
快速回复:求进制数算法上的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016546 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved