昨天写了一晚上,今天写了一天,最后还没有得出正确的结果,到目前写出的代码情况如下:
题目:(如何实现将两个二进制数相加的结果转为十进制,再将这个结果转为二进制输出)
#include
#include
#include
char* fun(char a[],char b[])
{
static char c[9]={'0','0','0','0','0','0','0','0'};
int s=0,m=0,n=0,i=0;
for(i=0;i<8;i++)
{
if(a[i]==1)
m+=pow(2,7-i);
if(b[i]==1)
n+=pow(2,7-i);
}
s=m+n;
printf("%d\n",s);
for(i=7;i>=0;i--)
{
c[i]=s%2;
s=s/2;
}
return c;
}
void main()
{
char a[9],b[9];
printf("请输入第一个八位二进制数:\n");
gets(a);
printf("请输入第二个八位二进制数:\n");
gets(b);
printf("两数相加后的结果为:\n");
puts(fun(a,b));
}
单步调试m、n得不到正确的结果。
第一题收获:
1.二进制数只有0和1;可以如下转为十进制:
if(a[i]==1)
m+=pow(2,7-i);
if(b[i]==1)
n+=pow(2,7-i);
2.一次性输入一串数据,以0结束的方法:
while(ch=getchar()!='0')
a[i++]=ch;
3.cin、cout、scanf、printf的区别;反应时间不同导致输出结果不同
4.局部变量在区域函数内的功能完成后内存被释放,如果返回此值会出错,用static来纠正;
5.与同在;
6.C语言需要深学

阅读(410) | 评论(2) | 转发(0) |