定义一个10*11二维数组,将数组中数据转换为二进制并转存到另一数组中输出
1个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define P 3 //请自行修改二维数组行数 10
#define N 3 //请自行修改二给数组列数 11
#define M 64 //按64位机器字和定义二进制长度,可以修改
void change(long n, char a[]){//整数转换成二进制数组返回
int t[M];
int i,k=0;
while(n){
t[k++]=n%2;
n/=2;
}
for(i=0;k>=1;){
a[i++]=(char)(t[--k]+'0');
}
a[i]='\0';
}
int main(){
int arr[P][N]={0};
int i,j,k=0;
char res[P*N][M];
for(i=0;i!=P;++i){
for(j=0;j!=N;++j){
scanf("%d",&arr[i][j]); //输入二维数组数值
change(arr[i][j],res[k++]);//转换,本质上,二维数组在存储区就是一片连续区域,
//所以,把转换结果放到一个长度为P*N的字符串数组res[]中.res[i]的第二维表示第i字符串长度
}
}
i=0;
printf("二进制输出:\n");//输出
while(i!=k){
printf("%d : %s\n", arr[i/P][i%N],res[i]);//输出格式
//如有不符,请自行调整
++i;
}
return 0;
}
图示是3x3的二维数组转换结果.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询