C代码块:十进制转二进制(非浮点型)
话不多说,直接上代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXNUM 256
/*删除字符串字符*/
void delete_char(char str[], char target)
{
int i, j;
for(i = j =0; str[i] != '\0'; i ++)
if(str[i] != target)
str[j ++] = str[i];
str[j] = '\0';
}
int main()
{
char scanfDecimal[MAXNUM]; // 输入字符型十进制
int saveDec = 0; // 数型十进制
char saveBinary[MAXNUM]; // 输出二进制
gets(scanfDecimal);
if(scanfDecimal[0] == '-') // 输入负数
{
delete_char(scanfDecimal, scanfDecimal[0]); // 删除负号
saveDec = atoi(scanfDecimal); // 转数型
itoa(saveDec,saveBinary,2); // 转二进制字符型
for(int i = 0; saveBinary[i] != '\0'; i ++) // 取反
{
if(saveBinary[i] == '1')
saveBinary[i] = '0';
else
saveBinary[i] = '1';
}
for(int i = strlen(saveBinary) - 1; i > 0; i --) // 补码
{
++saveBinary[i] ;
if(saveBinary[i] > '1')
saveBinary[i] = '0';
else
break;
}
}
else // 输入正数
{
saveDec = atoi(scanfDecimal); // 转数型
itoa(saveDec,saveBinary,2); // 转二进制字符型
}
puts(saveBinary);
return 0;
}
运行结果:
注意:
浮点型没有测试过
删除字符串的特定字符我查阅了相关资料,选择了一种相对更简单而容易理解的方法
参考文献
文章仓促,代码尚有许多不足,如有改进方法,欢迎指出!