菜鸟求教,如何自己设计程序实现十进制含小数的数字转换为二进制,八进制,十六进制的数
包括负数的,小数保留八位即可
程序代码:
#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; }