将十进制转化成二进制
题目:编写一函数完成十进制整数到二进制的转换,函数的原型为:void itob(int n,char s[]),并测试你编写的函数。我是最近才学了调用函数这些内容,然后一下代码是我做的,但是是错误的,求指导
#include <stdio.h>
int main ()
{
int change(int str_1[],int n);
int a, i, str;
printf ("请输入一个整数:");
scanf ("%d",&a);
change(str,a);
if ( a < 0 )
printf ("-");
for (i = 10; i >= 0; i--)
printf ("%d",str);
printf ("\n");
return 0;
}
int change(int str_1[],int n)
{
int j;
while (n != 0)
{
n =(int)(n % 2);
for (j = 0;; j++)
str_1 = n;
n /= 2;
}
} #include <stdio.h>
int main ()
{
void change(char str_1[],int n);
int a;
char str;
printf ("请输入一个整数:");
scanf ("%d",&a);
change(str,a);
if ( a < 0 )
printf ("-");
printf("%s", str);
printf ("\n");
return 0;
}
void change(char str_1[],int n)
{
int i = 0;
while(n > 0){
str_1 = n % 2 + (int) '0';
n /= 2;
}
str_1 = '\0';
}
这是改进后后的
O_o: ..... .... . .. ...................(错误之处,请指正。)
本帖最后由 Whitehat_K 于 2016-5-13 12:32 编辑#include <stdio.h>
int main ()
{
int change(int str_1[],int n);
int a, i, str, j;
printf ("请输入一个整数:");
scanf ("%d",&a);
if ( a > 0 )
{
j = change(str,a);
for (i = j-1; i >= 0; i--)
printf ("%d",str);
printf ("\n");
}
else if( a < 0)
{
a = -a-1;
/*原理:http://blog.csdn.net/stpeace/article/details/43715781*/
j = change(str, a);
for (i = j-1; i >= 0; i--)
printf ("%d",!str);
printf("\n");
}
return 0;
}
int change(int str_1[],int n)
{
int j = 0;
while (n != 0)
{
str_1 = n%2;
n /= 2;
}
return j;
} 楼主错的地方如下:
1、change函数没有返回值
2、算法有误,在第一次n =(int)(n % 2);时,n的值只能是 1 或 0 ,后面自然出错,要不就用另一个变量保存起来,不然就像我一样。用 n 保存 n 对 2 取模的值是不对的。
还有,最好用char 型数组,虽然int 型也行, 不过char数组至少好打印不是。 倾天 发表于 2016-5-12 18:20
楼主错的地方如下:
1、change函数没有返回值
2、算法有误,在第一次时,n的值只能是 1 或 0 ,后面自然出 ...
不是不用返回值的吗 倾天 发表于 2016-5-12 18:20
楼主错的地方如下:
1、change函数没有返回值
2、算法有误,在第一次时,n的值只能是 1 或 0 ,后面自然出 ...
对了,那个符号怎么弄,就是如果输入的数是负数,我刚刚试了改几下,都弄不了 zhyin 发表于 2016-5-13 09:10
不是不用返回值的吗
你的change函数的声明是:int shange();
所以需要一个 int型的返回值(虽然没什么用) zhyin 发表于 2016-5-13 09:20
对了,那个符号怎么弄,就是如果输入的数是负数,我刚刚试了改几下,都弄不了
负数的话,可以先读入一个字符串,然后把数值和 负号分开,把数值转换为二进制后再把负号加上去就好了 倾天 发表于 2016-5-13 13:05
负数的话,可以先读入一个字符串,然后把数值和 负号分开,把数值转换为二进制后再把负号加上去就好了
好,谢谢你啦 zhyin 发表于 2016-5-13 19:46
好,谢谢你啦
我终于能解决别人的问题了,好激动 倾天 发表于 2016-5-14 13:15
我终于能解决别人的问题了,好激动
哈哈,加油哦{:10_265:}我还没有可以解决别人的问题的能力呢
页:
[1]