将十进制转换为16进制这个程序那里错了:

#include<stdio.h>
void main()
{
int a,b,c,i;
char s[80];
scanf("%d",&a);
b=c=a;
for(i=0;c>0;i++)
{
b=b%16;
c=c/16;
if(b>=10)

s[i]=b-10+'A';
else
s[i]='0'+b;
}
for(i=i;i>=0;i--)
printf("%c",s[i]);
}

#include<stdio.h>
void main()
{
int a,b,c,i;
char s[80];
    scanf("%d",&a);
    b=c=a;
    for(i=0;c>0;i++)
    {
        b=c%16;    //这里要改成用c来取余
        c=c/16;
        if(b>=10)
            s[i]=b-10+'A';
        else
            s[i]='0'+b;
    }
    for(i=i-1;i>=0;i--)    //上面的循环结束后,i的下标多一个,这里要从i-1开始
        printf("%c",s[i]);
}

两处错误,注释里说明了,楼主看看

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-26
#include<stdio.h>
void main()
{
int a,b,c,i;
char s[80];
scanf("%d",&a);
b=c=a;
for(i=0;c>0;i++)
{
b=c%16;
c=c/16;
if(b>=10)
s[i]=b-10+'A';
else
s[i]='0'+b;
}
for(i=i-1;i>=0;i--)
printf("%c",s[i]);
}
应该是b=c%16;最后那点应该先减一。可以稍微减一点 这个程序。
#include<stdio.h>
void main()
{
int a,b,c,i;
char s[80];
scanf("%d",&a);
b=a;
for(i=0;c>0;i++)
{
b=a%16;
a=a/16;
if(b>=10)
s[i]=b-10+'A';
else
s[i]='0'+b;
}
for(i=i-1;i>=0;i--)
printf("%c",s[i]);
}
不用要c都行。
第2个回答  2013-05-26
for(i=i;i>=0;i--) 这里错了

修改为for(i=i-1;i>=0;i--) 因为前面多加了一次才推出for循环的

第二个问题
b=b%16; 这行应该修改为b=c%16; 因为进入循环后b和c分开了,无法得到b的正确值
第3个回答  2013-05-26
b=b%16; 改成 b=c%10;

for(i=i;i>=0;i--)
printf("%c",s[i]);

改成
for(i=i-1;i>=0;i--)
printf("%c",s[i]);

将十进制转换为16进制这个程序那里错了:
include<stdio.h>void main(){int a,b,c,i;char s[80]; scanf("%d",&a); b=c=a; for(i=0;c>0;i++) { b=c%16; \/\/这里要改成用c来取余 c=c\/16; if(b>=10) s[i]=b-10+'A'; else s[i]='0'+b; } for(i=i-1;i>=...

c51 keil中用十进制数转为16进制计算闰年的方法,错在哪里?大神帮忙看一...
不一定非得用 16 进制,十进制也可。改成:s = table2[3] - 0x30 + (table2[2] - 0x30) * 10 + (table2[1] - 0x30) * 100 + (table2[0] - 0x30) * 1000;if ((s % 4 == 0 && s % 100 != 0) || (s % 100 == 0 && s % 400 == 0))看起来,容易多了。

十进制如何转换成十六进制?请帮我看看下面的代码哪里出问题了?
0x的格式字符是以十六进制无符号形式输出整数,它不输出前导符0x.你若想输出07,可以在前面加一个输出语句printf("0");单独输出一个零啊,虽然是一个笨方法。

十进制转换成十六进制数是对是错?
答案:对 拓展:十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。例如十进制数57,在二进制写作111001,在16进...

EXCEL10进制转16进制
要将10进制转换为16进制,Excel提供了一个方便的函数DEC2HEX。这个函数用于将十进制整数转换为对应的十六进制表示。其基本语法为DEC2HEX(number, [places]),其中number是必需的输入参数,代表待转换的十进制数值,places则是可选参数,用于指定返回的十六进制字符串中零的填充数。Number参数的范围很重要:...

一个10进制转16进制的问题,急
还有,十进制标识,是d(decimal);八进制是o(octal);二进制是b(binary)。还有“skyalone81”的回答是错误的,带小数的进位制转换不能直接分成两部分转换。16进制到2进制可以按1位16进制数字对应4位2进制数字这样转,但其它的不行。通用的转换法是换成分数转换:比如你题中的“14.4ch”换成1...

十进制转十六进制
十进制的18,转换成十六进制是12H,转换过程:18÷16,余数是2,商数是1。余数2作为十六进制数的第0位。商数1小于16,不必再除,结果,18D=(1x16+2)D=12H。再看楼主的第一个例子:5621转换为16进制数的方法是“除以16取余”,方法是对的。换算过程:1、5621÷16,余数5,作为十六进制数的第0...

一个10进制转16进制的问题,急
; 输入一个0到255的数字,导入到BX后转换成16进制的输出 ;按Esc或输入错误则退出程序 code segment assume cs:code,ds:code org 100h start:push cs pop ds Again:lea dx,Tips1 mov ah,9 int 21h ;显示提示 xor bx,bx ;BX清0 mov cx,3 In:mov ah,0 int 16h ;无回显输入 cmp al,...

怎样将10进制转换成16进制
这是因为我们在操作过程中实际上是将原数不断地除以了16,而原数的每一位在十六进制表示中都对应一个位置。因此,当商不为零时,需要在最前面添加一个表示该数值起始位置的“0”。举个例子,将十进制数27转换为十六进制数的过程为:第一步:计算 27 ÷ 16 的结果和余数得到 1 ...

十进制如何转换16进制
十进制转十六进制的方法是通过连续除以16并取余数,然后将余数转换为对应的十六进制数,最后将得到的十六进制数从低位到高位排列。具体步骤如下:1. 将十进制数除以16,得到商和余数。2. 将商再次除以16,得到新的商和余数。3. 重复上述步骤,直到商为0为止。4. 将每一步得到的余数转换为对应的十六...

相似回答
大家正在搜