标题:十进制转8 、16 进制
只看楼主
qiqicai
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2021-3-23
结帖率:84.62%
已结贴  问题点数:20 回复次数:6 
十进制转8 、16 进制
#include <stdio.h>
int main()
{
int n,m;
printf("输入十进制数:");
scanf("%d",&n);
printf("输入转换的进制数:");
scanf("%d",&m);
int s,ys,er,i;
if(m==2){
while(n!=0)
{
n=n/2;                         这个二进制是对的 那转换为8进制和16进制的这样写为什么不对呢
ys=n%2;
er+=ys*i;
i=i*10;                                                              
}
printf("%d进制数为:%llu",m,er);
}
else if(m==8){
while(n!=0)
{
n=n/8;                        
ys=n%8;
er+=ys*i;
i=i*10;                                                              
}   
printf("%d进制数为:%o",m,er);
}
else if(m==16){
while(n!=0)
{
n=n/16;                        
ys=n%16;
er+=ys*i;
i=i*10;                                                              
}   
printf("%d进制数为:%x",m,er);

}
return 0;
}
   
   






搜索更多相关主题的帖子: 十进制 进制 int while printf 
2021-04-12 21:43
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
不说别的,我就想问问16进制A-F你在er里怎么存
2021-04-12 23:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
各种错误花样太多

程序代码:
#include <stdio.h>
#include <limits.h>

int main( void )
{
    unsigned n, m;
    printf( "输入一个十进制数非负整数: " );
    if( scanf("%u",&n) != 1 )
        return 1;
    printf( "输入转换的进制数: " );
    if( scanf("%u",&m)!=1 || m<2 || m>36 )
        return 1;

    char buf[sizeof(n)*CHAR_BIT + 1];
    char* p = buf + sizeof(buf)/sizeof(*buf);
    *--p = '\0';
    for( unsigned t=n; t!=0; t/=m )
        *--p = t%m<10 ? t%m+'0' : t%m-10+'A';
    if( p[1] == '\0' )
        *--p = '0';
    printf( "%u进制数为:%s\n", m, p );
}
2021-04-13 08:38
qiqicai
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2021-3-23
得分:0 
回复 2楼 apull
    那16进制的怎么存  
2021-04-13 20:11
夏天q
Rank: 4
来 自:七月
等 级:业余侠客
威 望:5
帖 子:33
专家分:227
注 册:2021-4-4
得分:20 
回复 4楼 qiqicai
程序代码:
#include <stdio.h>

int main(void) {
    int input, count = 0, i;
    int num[100];
    printf("输入十进制数:");
    scanf("%d", &input);
    if(input == 0) {
        printf("%d", input);
        return 0;
    }
    while(input != 0) {
        i = input;
        input = input / 16;
        num[count] = i % 16;
        count++;
    }
    for(i = count - 1; i >= 0; i--) {
        if(num[i] > 9 && num[i] < 16)
            printf("%c", (num[i] - 10 + 'A'));
        else
            printf("%d", num[i]);
    }
    return 0;
}


[此贴子已经被作者于2021-4-13 21:14编辑过]

2021-04-13 21:07
qiqicai
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2021-3-23
得分:0 
回复 5楼 夏天q
#include <stdio.h>

int main(void) {
    int input, count = 0, i;
    int num[100];
    printf("输入十进制数:");
    scanf("%d", &input);
    if(input == 0) {
        printf("%d", input);
        return 0;
    }
    while(input != 0) {
        i = input;
        input = input / 16;
        num[count] = i % 16;               //我想问一下这里只是在求余数 没有进行转换吗
        count++;                                    
    }
    for(i = count - 1; i >= 0; i--) {           
        if(num[i] > 9 && num[i] < 16)   
            printf("%c", (num[i] - 10 + 'A'));  //还有这里输出的只有A吗 哪例如1B这种的没法输出吗   上面没有转换这里输出的是余数?
        else
            printf("%d", num[i]);
    }
    return 0;
}
2021-04-15 11:56
夏天q
Rank: 4
来 自:七月
等 级:业余侠客
威 望:5
帖 子:33
专家分:227
注 册:2021-4-4
得分:0 
回复 6楼 qiqicai
可以参考
https://zh.
理解下

[此贴子已经被作者于2021-4-15 22:46编辑过]

2021-04-15 18:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505428-1-1.html




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

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