强啊,佩服
----------------解决方案--------------------------------------------------------
李彦宏同志,您应该把二进制数以数组形式存放输出。不然你的存放二进制的s值会很容易超出long的范围。
根据你的题意和我的想法,写了个程序,不过整数部分成功了,小数部分和输出格式还未成功。时间太晚了,明天作好后发上来。
好好学C,共同进步。
----------------解决方案--------------------------------------------------------
我记得飞燕好像有个数字转2~36进制的代码……
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define P(n) putchar(n<10?n+48:55+n)
int NumConvert(int n, int k)
{
int b=n/k,a=(n%=k)<0?-n:n;
if(b)NumConvert(b,k),P(a);
else n<0&&putchar('-'),P(a);
return 0;
}
----------------解决方案--------------------------------------------------------
用ssanf不是很好吗?
----------------解决方案--------------------------------------------------------
int main()
{
int a,b=1,c=0,d,e,f,g,h;
printf("十进制\t二进制数\t八进制\t\t十六进制\n");
for(a=1;a<=256;a++){
printf("%d\t",a);
while(a>=b){
b=b*2;
c++;
}
b=b/2;
e=a;
while(c>0){
d=e/b;
printf("%d",d);
e=e%b;
b=b/2;
c--;
}
printf("\t\t");
b=1;
while(a>=b){
b=b*8;
c++;
}
b=b/8;
f=a;
while(c>0){
d=f/b;
printf("%d",d);
f=f%b;
b=b/8;
c--;
}
printf("\t\t");
b=1;
while(a>=b){
b=b*16;
c++;
}
b=b/16;
g=a;
while(c>0){
d=g/b;
h=d;
switch(h){
case 10: h='A'; printf("%c",h); break;
case 11: h='B'; printf("%c",h); break;
case 12: h='C'; printf("%c",h); break;
case 13: h='D'; printf("%c",h); break;
case 14: h='E'; printf("%c",h); break;
case 15: h='F'; printf("%c",h); break;
default:
printf("%d",d);
}
g=g%b;
b=b/16;
c--;
}
printf("\n");
b=1;
}
return 0;
}
----------------解决方案--------------------------------------------------------
发生地震了,当然都看电视了
----------------解决方案--------------------------------------------------------
各位编程的时候能不能加上注释啊
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
这样不可以的
~~~~~~~~~~~~~~~~李彦宏同志,您应该把二进制数以数组形式存放输出。不然你的存放二进制的s值会很容易超出long的范围。
根据你的题意和我的想法,写了个程序,不过整数部分成功了,小数部分和输出格式还未成功。时间太晚了,明天作好后发上来。
好好学C,共同进步。
----------------解决方案--------------------------------------------------------
我记得飞燕好像有个数字转2~36进制的代码……
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define P(n) putchar(n<10?n+48:55+n)
int NumConvert(int n, int k)
{
int b=n/k,a=(n%=k)<0?-n:n;
if(b)NumConvert(b,k),P(a);
else n<0&&putchar('-'),P(a);
return 0;
}
----------------解决方案--------------------------------------------------------
用ssanf不是很好吗?
----------------解决方案--------------------------------------------------------
十转二,八,十六
#include<stdio.h>int main()
{
int a,b=1,c=0,d,e,f,g,h;
printf("十进制\t二进制数\t八进制\t\t十六进制\n");
for(a=1;a<=256;a++){
printf("%d\t",a);
while(a>=b){
b=b*2;
c++;
}
b=b/2;
e=a;
while(c>0){
d=e/b;
printf("%d",d);
e=e%b;
b=b/2;
c--;
}
printf("\t\t");
b=1;
while(a>=b){
b=b*8;
c++;
}
b=b/8;
f=a;
while(c>0){
d=f/b;
printf("%d",d);
f=f%b;
b=b/8;
c--;
}
printf("\t\t");
b=1;
while(a>=b){
b=b*16;
c++;
}
b=b/16;
g=a;
while(c>0){
d=g/b;
h=d;
switch(h){
case 10: h='A'; printf("%c",h); break;
case 11: h='B'; printf("%c",h); break;
case 12: h='C'; printf("%c",h); break;
case 13: h='D'; printf("%c",h); break;
case 14: h='E'; printf("%c",h); break;
case 15: h='F'; printf("%c",h); break;
default:
printf("%d",d);
}
g=g%b;
b=b/16;
c--;
}
printf("\n");
b=1;
}
return 0;
}
----------------解决方案--------------------------------------------------------
发生地震了,当然都看电视了
----------------解决方案--------------------------------------------------------
各位编程的时候能不能加上注释啊
----------------解决方案--------------------------------------------------------