C语言问题

C语言 码拜 9年前 (2015-11-15) 1146次浏览
# include <stdio.h>
# include<string.h>
# define N 100
int htoi(int n);
int main()
{
int a;
printf(“请输入一个十进制数”);
scanf_s(“%d”, &a);
htoi(a);
printf(“%d”, htoi(a));
return 0;
}
int htoi(int n)
{
int i, j;
int temp;
char s[N];
i = 0;
while (n >= 1)
{
s[i] = n % 2;
n = n / 2;
i++;
}
for (i = i – 1; i >= 0; i–)
{
printf(“%d”, s[i]);
}
return s[i];
}
那位高手帮本人看一下,该代码是为了实现将十进制数转化成二进制数。
错误原因:本人输入10时,输出为10101010-52,为何会输出两次1010,-52是怎么回事。
解决方案:20分
1、调用了两次htoi(a)函数,所以输出两个1010;
2、在htoi(a)结束时返回了s[i],但i此时为-1,所以实际返回的是一个越界的值(值不确定),所以printf函数打印出了-52。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C语言问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)