| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1618 人关注过本帖
标题:十进制转二进制
只看楼主 加入收藏
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
十进制转二进制
问题如下
大家都知道,数据在计算机里中存储是以二进制的形式存储的。
有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。
你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。
输入格式
第一行,一个数字T(T<=1000),表示下面要求的数字的个数。
接下来有T行,每行有一个数字n(0<=n<=10^8),表示要求的二进制串。
输出格式
输出共T行。每行输出求得的二进制串。​
输入样例
5
23
535
2624
56275
989835
输出样例
10111
1000010111
101001000000
1101101111010011
11110001101010001011

代码如下:
#include <stdio.h>
int main()
{
    int t, n;
    int str[105];
    int arr[4];
    scanf_s ("%d", &t);
    for (int j = 0; j < t-1; j++)
    {
        scanf_s("%d", arr[j]);//请问哪个环节出错了???
    }
    while (t--)
    {
        int num = 0;
        int d=0;
        n = arr[d];
        if (d < 4)
            d++;
        while (n != 0)
        {
            str[num++] = n % 2;
            n = n / 2;
        }
        for (int i = num - 1; i >= 0; i--)
        {
            printf("%d", str[i]);
        }
        printf("\n");

    }
}
搜索更多相关主题的帖子: 输出 进制转 二进制 int str 
2020-09-28 21:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned t;
    scanf( "%u", &t );

    while( t-- )
    {
        unsigned n;
        scanf( "%u", &n );

        char bin[28] = { 0 }; // 10^8 以二进制方式表示共需 27bits
        char* p = bin+26;
        for( ; n!=0 || p==bin+26; n/=2 )
            *--p = '0'+n%2;
        puts( p );
    }
}
2020-09-29 08:39
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:566
专家分:3690
注 册:2019-7-29
收藏
得分:10 
for(int j=0; j<t; j++)
    {
        scanf_s("%d",&arr[j]);//请问哪个环节出错了???
    }

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-09-29 08:43
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <limits.h>

void fun(unsigned int n)
{
    int i;
    for (i=sizeof(unsigned int)*CHAR_BIT-1; i>=0 && !((n>>i)&1); --i);
    for (; i>=0; --i)
        printf("%d",(n>>i)&1);
    printf("\n");
}

int main()
{
    fun(23);
    fun(535);
    fun(2624);
    fun(56275);
    fun(989835);
}
2020-09-29 10:00
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
收藏
得分:0 
回复 3楼
图片附件: 游客没有浏览图片的权限,请 登录注册

就是改了之后,的确编译成功了
但是出现了上面的状况,是算法不对还是啥子问题呢

我不曾拥有梦想,但我坚信我有未来……
2020-09-29 10:27
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
收藏
得分:0 
#include <stdio.h>
int main()
{
    int t, n;
    int str[105];
    int arr[4];
    int d = 0;
    scanf_s ("%d", &t);
    for (int j = 0; j < t; j++)
    {
        scanf_s("%d",&arr[j]);
    }
    while (t--)
    {
        int num = 0;
        long n = 0;//在这个位置,int类型最大只能存储数256,要用long类型
                   //此处,定义d变量应该在while(t--)之外,否则每次循环d的值都会重置为0
        if (d < 5) {
            n = arr[ d++ ];
        }
        while (n != 0)
        {
            str[num++] = n % 2;
            n = n / 2;
        }
        for (int i = num - 1; i >= 0; i--)
        {
            printf("%d", str[i]);
        }
        printf("\n");

    }
    return 0;
}

//终于问题解决了,感谢大家的帮助

我不曾拥有梦想,但我坚信我有未来……
2020-09-29 14:24
快速回复:十进制转二进制
数据加载中...
 
   



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

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