鱼C论坛

 找回密码
 立即注册
查看: 3746|回复: 6

[已解决]求一个代码:将一个二维数组中的数据转换为二进制并转存

[复制链接]
发表于 2018-6-20 20:30:21 | 显示全部楼层 |阅读模式
5鱼币
转换二进制
功能要求:
将数组中的数据转换为二进制并转存到另一数组中输出


#include <stdio.h>
#include "stdlib.h"
#include "time.h"
int main(int argc,char *argv[])
{
    int a[10][10],i,j;
    srand((unsigned)time(NULL));
    for(i=0;i<10;i++)
        {
        for(j=0;j<10;j++)
                printf("%3d",a[i][j]=rand()%100);
        printf("\n");
        }
}
最佳答案
2018-6-20 20:30:22
#include <stdio.h>

//此函数主要模拟除二取余,要在转换的地方使用此函数即可
signed int DecToBin(signed int Dec)
{
        signed int Bin = 0;

        do 
        {
                Bin *= 10;                        //升级十进制的位
                Bin += Dec % 2;                //取余
                Dec /= 2;                        //除二

        } while (Dec > 0);

        return Bin;
}



int main(void)
{
        printf("100Dec = %dBin", DecToBin(100));
        

        getchar();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 20:30:22 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

//此函数主要模拟除二取余,要在转换的地方使用此函数即可
signed int DecToBin(signed int Dec)
{
        signed int Bin = 0;

        do 
        {
                Bin *= 10;                        //升级十进制的位
                Bin += Dec % 2;                //取余
                Dec /= 2;                        //除二

        } while (Dec > 0);

        return Bin;
}



int main(void)
{
        printf("100Dec = %dBin", DecToBin(100));
        

        getchar();
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 21:14:32 | 显示全部楼层
不明白你在问什么
#include <stdio.h>
#include <string.h>

int main(void)
{
        int a[100];
        int b[100];

        for(int i = 0; i < 100; ++i)
                a[i] = i;

        memcpy(b, a, 100 * sizeof(int));
        for(int i = 0; i < 100; ++i)
                printf("%d ", b[i]);

        printf("\n");

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-6-20 21:49:11 | 显示全部楼层
人造人 发表于 2018-6-20 21:14
不明白你在问什么

可以写一个除二取余法转换二进制吗
接在我上面写的代码的下面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 22:46:56 | 显示全部楼层
千杯不醉的关关 发表于 2018-6-20 21:49
可以写一个除二取余法转换二进制吗
接在我上面写的代码的下面

把数字转换成二进制字符串?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 23:15:17 | 显示全部楼层
千杯不醉的关关 发表于 2018-6-20 21:49
可以写一个除二取余法转换二进制吗
接在我上面写的代码的下面

可以的  就按照我的那个函数来实现就OK了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-21 12:02:52 | 显示全部楼层
#include <stdio.h>
#include "malloc.h"
#include "time.h"

int print(int n,int m,char * p,int index){
        if(n){
                int i= print(n/m,m,p,1+index);                        //递归(转换到值,进制,保存转换的信息,长度累计) 
                printf("%d",n%m);                                                //打印效果 
                *(p+i)=n%m ? '1': '0';                                        //这里可以写一个 整数转字符的函数,实现其他进制转换  1='1'  
                return i+1;                                                                //插入次数+1                                
        }else{
                *(p+index)='\0';                                                //index 记录字符的次数,为了在添加结尾标志 
                return 0;                                                                //从index0开始插入字符 
        }
}

int main(int argc,char *argv[]){
    int a[10][10],i,j;
    char t_bit[256]={0};
    srand((unsigned)time(NULL));
    for(i=0;i<10;i++){
       for(j=0;j<10;j++){
                           printf("%3d",a[i][j]=rand()%100);
                }
        printf("\n");
    }
        
    for(i=0;i<10;i++){
       for(j=0;j<10;j++){
                      printf("%-5d:",a[i][j]);
                          print(a[i][j],2,t_bit,0);
                      printf("\t%s\n",t_bit);
                }
    }         
     
}
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 14:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表