(练习一下struct的使用,用数组存各个struct的指针,每个格雷码使用一个struct)
#include <stdio.h> #include <stdlib.h> #include <math.h> int bnry[10]={0}; char* change(char*); // num of bits, current bit, name of int array int* toBinary(int, int, int*); int* toGray(int,int, int*); // name of int array, num of bits void printIntArray(int*,int); struct earlGray { int ch[100]; }; int main(int argc, const char * argv[]) { // insert code here... //char ch[]="sf adfaf dffd"; //printf("%s\n",ch); int numOfBits=3; int i=0; int totalNum=8; struct earlGray* p[8]; while(i<totalNum){ p[i]=(struct earlGray*)malloc(sizeof(struct earlGray)); toBinary(numOfBits,i,p[i]->ch); // printIntArray(p[i]->ch, numOfBits); toGray(numOfBits,i,p[i]->ch); printIntArray(p[i]->ch, numOfBits); i++; } system("pause"); return 0; } char* change(char* ch){ ch[0]='0'; ch[1]='1'; return ch; } //No need to return, since it revise ch dierectly, not the copy. int* toBinary(int n,int current, int* ch ){ //to binary int j,l; j=l=0; do { if(current>=0){ j=current%2; current=current/2; ch[n-1]=j; }else if (current==0) { ch[n-1]=0; } n--; } while (n!=0); return ch; } int* toGray(int n,int current, int* ch ){ while(n>1){ if (ch[n-1]==ch[n-2]) { ch[n-1]=0; }else { ch[n-1]=1; } n--; } return ch; } void printIntArray(int* ch,int n){ int k=0; while(k<n){ printf("%d",ch[k]); k++; } printf("\n"); }