进制转换:
1 //C语言算法:十进制转为二进制 2 #include<stdio.h> 3 int main() 4 { 5 int b,i,c=0,a[30]; 6 scanf("%d",&b); 7 while(b!=0) 8 { 9 i=b%2; 10 a[c]=i; 11 c++; 12 b=b/2; 13 } 14 c--;//因为c代表存入数据的长度而下表范围是0~c-1 15 for(;c>=0;c--)//倒序输出即为这个数字对应的二进制 16 { 17 printf("%d",a[c]); 18 } 19 printf("\n"); 20 return 0; 21 } 22 23 /****************样例二*********************************/ 24 # include <stdio.h> 25 26 int main() 27 { 28 int i, n = 0, b[16]; 29 scanf("%d", &i); //对十进制数的读取 30 31 for ( ; i; i>>=1) //把i右移一位 i = i >>1; 32 b[n++] = i&1; 33 for (; n; ) 34 printf("%d", b[--n]); //二进制数一个个输出 35 // getchar(); 36 printf("\n"); 37 return 0; 38 } 39 举例: 40 123 41 1111011 42 43 44 /********************对十进制数取反***************************/ 45 5的二进制是00000101,取反后是11111010,因为%d是按照有符号十进制数字输出, 46 所以会把11111010按照有符号十进制数字处理,根据进制转换的规则对11111010先减一, 47 再取反,得到00000110,即6,但是有符号数中的符号位是1,所以会输出-6。 48 49 输入一个十进制整数,将他们对应的二进制数的各位反序,形成新的十进制数输出?? 50 51 参考: 52 #include <stdio.h> 53 void main() 54 { 55 int i,j,n; 56 scanf("%d",&n); 57 for(i=n,j=0;i;i/=2) 58 j=j*2+i%2; 59 printf("%d\n",j); 60 } 61 /***********************************/ 62 #include <stdio.h> 63 int main() 64 { 65 int m,n=0,p=1; 66 scanf("%d",&m); 67 for(;m;) 68 { 69 n=(1-m%2)*p+n; 70 m/=2; 71 p*=2 72 } 73 printf("%d\n",n); 74 } 75 /********************************/ 76 #include <stdio.h> 77 void main() 78 { 79 int i,n; 80 scanf("%d",&n); //n大于0 81 for(i=1;i<n;i*=2); 82 i=(i-1)&~n; 83 printf("%d\n",i); 84 } 85 /****************************/
标签:百题,一练,include,int,scanf,C语言,printf,main,十进制 From: https://www.cnblogs.com/xiaosanxian/p/17304752.html