C语言学习 - 0005 给定值给定位数储存
1 #include<stdio.h> 2 void main() 3 { 4 void readi(int* num_small,int* num_big,int* num_1,int* num_2); 5 int stand(int num_small,int num_big); 6 int dif(int num_small,int num_1,int num_2,int stand); 7 int num_1=0,num_2=1,num_new=0; 8 int i1=0; 9 int i2=0; 10 int stand_1=0; 11 readi(&i1,&i2,&num_1,&num_2); 12 stand_1=stand(i1,i2); 13 num_new=dif(i1,num_1,num_2,stand_1); 14 printf("以前的数%x\n,现在的数%x",num_1,num_new); 15 if((getchar())=='\n') 16 getchar(); 17 } 18 void readi(int* num_small,int* num_big,int* num_1,int* num_2) 19 { 20 printf("输入低位"); 21 scanf("%d",num_small); 22 printf("输入高位"); 23 scanf("%d",num_big); 24 printf("输入待处理数字",num_1); 25 scanf("%x",num_1); 26 printf("输入插入数字",num_2); 27 scanf("%x",num_2); 28 } 29 int stand(int num_small,int num_big) 30 { 31 if(num_small>num_big) 32 printf("wrong!"); 33 else{ 34 int a=num_small-1; 35 int b=0; 36 int c=1; 37 c=c<<a; 38 for(;a<=num_big-1;a++){ 39 b=b+c; 40 c=c<<1; 41 } 42 return(b); 43 } 44 } 45 int dif(int num_small,int num_1,int num_2,int stand) 46 { 47 printf("%x\n",stand); 48 int stand_fan=~stand; 49 printf("%x\n%x\n",stand_fan,num_1); 50 int num_new=num_1&stand_fan; 51 printf("%x\n",num_new); 52 num_small=num_small-1; 53 int num_3=num_2<<num_small; 54 printf("%x\n",num_3); 55 num_new=num_new|num_3; 56 printf("%x\n",num_new); 57 return(num_new); 58 }