标题:输出结果如何别显示,请老师们帮忙看看。谢谢!!
只看楼主
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
结帖率:93.33%
已结贴  问题点数:5 回复次数:12 
输出结果如何别显示,请老师们帮忙看看。谢谢!!
如下一段代码:
#include <stdio.h>
int main()
{
    int number;
    printf("输入一个整数:");
    while (scanf("%d", &number))
        {
        int a[16] = {0};
        int i = 0, n = 0;
        while(number)
            {
                a[i++] = number%2;
                number /= 2;
             }
        for (i--; i>=0; i--)
                 {
                     printf("a[%d]=%d ", n++, a[i]);
                     
            }   
        printf("\n");
        }
    return 0;
}
运行是正确的,比如输入一个18.显示的是:
a[0]=1 a[1]=0 a[2]=0 a[3]=1 a[4]=0,
这里其值为0 和为1的值都显示在一排了,如何修改使其为0的值和为1的值分开来显示,就如同这样:
a[1]=0  a[2]=0 a[4]=0
a[0]=1  a[3]=1
同时对应的a[i]还不能错,再举个例:
输入144
要显示如下就好了:
a[1]=0  a[2]=0 a[4]=0 a[5]=0 a[6]=0 a[7]=0
a[0]=1  a[3]=1
搜索更多相关主题的帖子: 输出 显示 int number 输入 
2017-11-30 15:19
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:1 
可以可以~执行完毕后最后再分类输出~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-30 15:24
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
可以
2017-11-30 16:09
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
#include <stdio.h>
int main()
{
    int number;
    printf("输入一个整数:");
    while (scanf("%d", &number))
        {
        int a[16] = {0};
        int i = 0, n = 0,m=0;
        while(number)
            {
                a[i++] = number%2;
                printf("%d\t",a[i-1]);
                number /= 2;
             }
         m=i-1;
         n=m;
         i=m;
          printf("\n");
        for (; i>=0; i--)
                 {
                    if(a[i])continue;
                     printf("a[%d]=%d ", n-i, a[i]);
            }   
        printf("\n");
        i=m;
        for (; i>=0; i--)
                 {
                     if(!a[i])continue;
                     printf("a[%d]=%d ", n-i, a[i]);
                  }   
        }
    return 0;
}
但是,这样,还有点小小的问题,还要继续努力。
2017-11-30 23:17
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
上面的程序运行后,有点小问题就是:假如输入16.显示的二进制数本来应该是10000,但却变成了00001,与需要的刚好反过来了,不知道该怎么改过来。
2017-12-02 22:04
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
真的不能改吗?
2017-12-03 12:56
liaohs
Rank: 4
等 级:业余侠客
威 望:7
帖 子:61
专家分:292
注 册:2017-11-26
得分:1 
两个for语句都应采用
for(i=0;i<n;i++)的样式
2017-12-03 17:09
liaohs
Rank: 4
等 级:业余侠客
威 望:7
帖 子:61
专家分:292
注 册:2017-11-26
得分:0 
两个for语句都应采用
for(i=0;i<n;i++)的样式
2017-12-03 17:14
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
不对,那样根本不能解决问题。
2017-12-03 22:42
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:2 
以下是引用自学的数学在2017-12-2 22:04:43的发言:

上面的程序运行后,有点小问题就是:假如输入16.显示的二进制数本来应该是10000,但却变成了00001,与需要的刚好反过来了,不知道该怎么改过来。

这个转二进制算法就是这样的,需要你自己进行倒序。
2017-12-04 12:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482956-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.104008 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved