鱼C论坛

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

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

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



  1. #include <stdio.h>
  2. #include "stdlib.h"
  3. #include "time.h"
  4. int main(int argc,char *argv[])
  5. {
  6.     int a[10][10],i,j;
  7.     srand((unsigned)time(NULL));
  8.     for(i=0;i<10;i++)
  9.         {
  10.         for(j=0;j<10;j++)
  11.                 printf("%3d",a[i][j]=rand()%100);
  12.         printf("\n");
  13.         }
  14. }
复制代码
最佳答案
2018-6-20 20:30:22
  1. #include <stdio.h>

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

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

  11.         } while (Dec > 0);

  12.         return Bin;
  13. }



  14. int main(void)
  15. {
  16.         printf("100Dec = %dBin", DecToBin(100));
  17.        

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

使用道具 举报

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

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

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

  11.         } while (Dec > 0);

  12.         return Bin;
  13. }



  14. int main(void)
  15. {
  16.         printf("100Dec = %dBin", DecToBin(100));
  17.        

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

使用道具 举报

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

  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(void)
  4. {
  5.         int a[100];
  6.         int b[100];

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

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

  12.         printf("\n");

  13.         return 0;
  14. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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 | 显示全部楼层
  1. #include <stdio.h>
  2. #include "malloc.h"
  3. #include "time.h"

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

  15. int main(int argc,char *argv[]){
  16.     int a[10][10],i,j;
  17.     char t_bit[256]={0};
  18.     srand((unsigned)time(NULL));
  19.     for(i=0;i<10;i++){
  20.        for(j=0;j<10;j++){
  21.                            printf("%3d",a[i][j]=rand()%100);
  22.                 }
  23.         printf("\n");
  24.     }
  25.         
  26.     for(i=0;i<10;i++){
  27.        for(j=0;j<10;j++){
  28.                       printf("%-5d:",a[i][j]);
  29.                           print(a[i][j],2,t_bit,0);
  30.                       printf("\t%s\n",t_bit);
  31.                 }
  32.     }        
  33.      
  34. }
复制代码

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 03:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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