A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

现在有一个二进制的数组int two[16];
当时赋值的时候是从数组的two[0]开始顺序赋值的。
现在想把这个二进制数打出来。如果
for (int i = 15; i >= 0; i++)
{
      printf("%d", two[i]);
}
这样前面会打很多0.怎样添加一个判断方法(不是再添加循环),让其从第一个非0的元素开始打印?
之前记得研究过,但是学oc又给忘了,实在想不起来了。忘大神指点。谢谢!!

7 个回复

倒序浏览
for循环写的有问题吧,不是应该i--么...
你可以添加一个变量用来做记录,
比如设置个 int n=0;然后判断当遇到two[i]不为0是把n得值变为1;打印的时候加个条件就好
大概这样...同为新手错了别怨我....
    int n =0;
    for (int i = 15; i >= 0; i--)
    {
        if(n==0 && two[i]!=0)
        {
            n=1;
        }
        if(n)
        {
        printf("%d", two[i]);
        }
    }
回复 使用道具 举报
ab63333334 发表于 2015-3-18 14:58
for循环写的有问题吧,不是应该i--么...
你可以添加一个变量用来做记录,
比如设置个 int n=0;然后判断当遇到 ...

首先谢谢啊,我刚才看到是i--了,之前确实写错了,我刚刚改进了方法,跟你的差不多,但是问题是不知道是xcode不识别&&还是怎么了,运行时总是if(n==0 && two != 0)这句报错
回复 使用道具 举报
ab63333334 发表于 2015-3-18 14:58
for循环写的有问题吧,不是应该i--么...
你可以添加一个变量用来做记录,
比如设置个 int n=0;然后判断当遇到 ...

问题解决了,刚才傻乎乎的把int n = 0写到循环里面了,哎,不知是不是没吃饭给饿昏头脑了....

谢谢你哈!
回复 使用道具 举报
还记得我吗?今天你解答了我的疑惑,我也来解答一下你~~
  1.   for (inti=0;i<16;i++){  //找到不等于O的数

  2.     if (two[i]) {
  3.          for(i;i<16;i++){  //依次打印

  4.                 printf("%d",two[i]);
  5.           }
  6.           break;  //只取最外面for循环的的一个,退出循环体
  7.      }   
  8.     }
复制代码


回复 使用道具 举报
whymerain 发表于 2015-3-18 15:14
还记得我吗?今天你解答了我的疑惑,我也来解答一下你~~

嘻嘻,有道理。谢啦!现在我在研究怎么把黑苹果的东西拷贝到U盘上,把我写的一些代码发到论坛上
回复 使用道具 举报
a380vs747` 发表于 2015-3-18 15:59
嘻嘻,有道理。谢啦!现在我在研究怎么把黑苹果的东西拷贝到U盘上,把我写的一些代码发到论坛上 ...

只要不是NTFS U盘都可以直接拷贝吧,U盘的格式也可以直接改的吧,改成FAT,FAT32
回复 使用道具 举报
whymerain 发表于 2015-3-18 16:09
只要不是NTFS U盘都可以直接拷贝吧,U盘的格式也可以直接改的吧,改成FAT,FAT32 ...

问题我的就是NTFS格式,没关系。我去网上下了个Mounty,解决了。刚刚发表了一个我今天刚写的程序。请指教。待会再发表一个昨晚写到2点的习题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马