Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6123
  • 博文数量: 3
  • 博客积分: 85
  • 博客等级: 民兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-15 18:51
文章分类
文章存档

2012年(3)

我的朋友
最近访客

分类:

2012-11-17 22:01:28

昨天写了一晚上,今天写了一天,最后还没有得出正确的结果,到目前写出的代码情况如下:
题目:(如何实现将两个二进制数相加的结果转为十进制,再将这个结果转为二进制输出)
#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语言需要深学
阅读(369) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

小灰灰滴sunny2012-11-18 10:33:52

最终结果:
#include<stdio.h>
#include<string.h>
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;
        int p=1;
        for(i=7;i>=0;i--)
        {
                if(a=='1')
      &

小灰灰滴sunny2012-11-17 22:35:16

第3条错了,应该是getchar和printf的反应速度不同