菜鸟求教,如何自己设计程序实现十进制含小数的数字转换为二进制,八进制,十六进制的数
包括负数的,小数保留八位即可
程序代码:#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int d,f,n;
char str[100];
char s[100];
char *p=str;
scanf("%s",str); //以字符串形式输入数据
scanf("%d",&n); //输入转换进制
if (str[0]=='-') //判断正负数
p++;
p=strtok(p,"."); //字符串分割函数
p=strtok(NULL,".");
if (str[0]!='-') //判断正负数并对其分别进行处理
d=atoi(str);
else
{
strcpy(s,"-");
d=atoi(str+1);
}
if (p) //当str不含小数时,此时p为NULL(不懂请参考strtok函数的用法),此处处理当str含小数的情况
f=atoi(p);
if (str[0]!='-')
itoa(d,s,n);
else
itoa(d,s+1,n); //负数字符串首地址要加一,第一个留给'-'
if (p)
{
strcat(s,".");
itoa(f,s+strlen(s),n);
}
puts(s);
return 0;
}
