将一个4字节的整数的二进制表示中的001替换为011,输出替换后的整数
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- /***将十进制转换成二进制,采用递归方法***/
- char * DectoBin(int n)
- {
- static char bin[32]="0000000000000000000000000000000";
- static i = 0;
- int temp ;
- temp= n%2;
- n = n/2;
- if(n==0)
- {
- if(temp==0)
- {
- bin[31-i]='0';
-
- }
-
- else
- {
- bin[31-i]='1';
-
- }
- i++;
- return bin;
- }
- else
- {
- if(temp==0)
- {
- bin[31-i]='0';
-
- }
-
- else
- {
- bin[31-i]='1';
-
- }
- i++;
- DectoBin(n);
- }
- return bin;
- }
- /***将001替换成011**/
-
- char * replace001(char *s,char *p)
- {
- char *temp=s;
- while(temp!=NULL)
- {
- temp=strstr(temp,"001");
- if(temp)
- {
-
- strncpy(temp,"011",3);
- temp++;
- }
-
-
- }
-
- return s;
- }
- /**将二进制转换成10进制**/
- int BintoDec(char *bin)
- {
- int i,j=0;
- char string[33]="0000000000000000000000000000000";
- int Dec=0,temp=bin;
- for(i=31;i>=0;i--)
- {
- string[j++]=*(bin+i);
- }
- string[33]='\0' ;
-
- printf("string=%s\n",string);
- for(j=0;j<32;j++)
- {
- temp=string[j]-'0';
- Dec+=temp*pow(2,j);
- }
- printf("string=%d\n",Dec);
- return Dec;
- }
-
- void main()
- {
- char *temp2;
- char *temp=DectoBin(3);
- printf("The binary is %s\n",temp);
- temp2=replace001(temp,"001");
- printf("The binary is %s\n",temp2);
- printf("the int is %d\n",BintoDec(temp2));
-
- }