输入八个字符,将其转为ASCLL十进制值,再转为二进制,如果不满八个数用零补齐,这样组成了一个八行八列的数组,将这个数组转置,求出每行的十进制数,输出这八个十进制数
- 提问者网友:不爱我么
- 2021-05-09 16:45
- 五星知识达人网友:低音帝王
- 2021-05-09 16:55
我的思想是有的,只是C++很少写,呵呵写得不是太简洁,谅解则个
#include "stdafx.h"
#include <stdlib.h>
#include "iostream"
using namespace std;
//从CHAR转为二进制,只不过是倒序的,所以后面就是那样形成了两个数组,如果做成顺序的,就可以在一个数组中转换了,呵呵,这个你自己做
int* returnOne(char inputx){
int temp=(int)(inputx);
int *tej=new int[8];
for(int i=0;i<8;i++){
tej[i]=temp%2;
temp/=2;
}
return tej;
}
void main()
{
int *newA[8];
char a,b,c,d,e,f,g,h;
//输入8个字符,回车结束
//这儿其实是可以以字符数组的方式输入的,嘿嘿自己写
cin>>a>>b>>c>>d>>e>>f>>g>>h;
newA[0]= returnOne(a);
newA[1]= returnOne(b);
newA[2]= returnOne(c);
newA[3]= returnOne(d);
newA[4]= returnOne(e);
newA[5]= returnOne(f);
newA[6]= returnOne(g);
newA[7]= returnOne(h);
int *uiid[8];
//初始化目标数组
for(int di=0;di<8;di++){
uiid[di]=new int[8];
}
int x=0;
int y=0;
int tempind=0;
int m=8;
while(x<8){
y=0;
while(y<8){
uiid[y][7-x]=newA[x][y];
y++;
}
x++;
}
//输出来给自己看
x=y=0;
while(x<8){
y=0;
while(y<8){
cout<<uiid[x][y];
y++;
}
cout<<endl;
x++;
}
//最后自己把二进制转成十进制就是一个每一位*2^n次方的事
cout<<endl;
}