C语言【程序48】题目:八进制转换为十进制、二进制转换为十进制、十进制转换为二进制 、十进制转换为八进制、十六进制转换为十进制、十进制转换为十六进制

骑猪看日落 2023-07-16 09:00 122阅读 0赞

基本思想: 八进制转十进制,二进制转十进制都一样的道理

在这里插入图片描述

八进制 —> 十进制

  1. //【程序48】
  2. //题目:八进制-->十进制
  3. #include<stdio.h>
  4. #include<math.h>
  5. int main()
  6. {
  7. int i=0,n,tmp,sum=0;
  8. scanf("%d",&n);
  9. while(n)
  10. {
  11. tmp=n%10;
  12. n=n/10;
  13. sum+=tmp*pow(8,i);
  14. i++;
  15. }
  16. printf("%d",sum);
  17. return 0;
  18. }

二进制 —> 十进制

  1. #include<stdio.h> //二进制-->十进制
  2. #include<math.h>
  3. int main()
  4. {
  5. int i=0,n,tmp,sum=0;
  6. scanf("%d",&n);
  7. while(n)
  8. {
  9. tmp=n%10;
  10. n=n/10;
  11. sum+=tmp*pow(2,i);
  12. i++;
  13. }
  14. printf("%d",sum);
  15. return 0;
  16. }

十进制 —> 二进制

  1. #include<stdio.h> //十进制-->二进制
  2. int main()
  3. {
  4. int i=0,n,str[15];
  5. scanf("%d",&n);
  6. while(n)
  7. {
  8. str[i]=n%2;
  9. n=n/2;
  10. i++;
  11. }
  12. for(int j=i-1;j>=0;j--)
  13. printf("%d",str[j]);
  14. return 0;
  15. }

十进制 —> 八进制

  1. #include<stdio.h> //十进制-->八进制
  2. int main()
  3. {
  4. int i=0,n,str[15];
  5. scanf("%d",&n);
  6. while(n)
  7. {
  8. str[i]=n%8;
  9. n=n/8;
  10. i++;
  11. }
  12. for(int j=i-1;j>=0;j--)
  13. printf("%d",str[j]);
  14. return 0;
  15. }

十六进制 —> 十进制

  1. #include<stdio.h> //十六进制-->十进制 eg. (十六进制)AB-->171(十进制)
  2. #include<math.h> //ABCD-->43981
  3. int main()
  4. {
  5. int i,j,k=0;
  6. long int sum=0,tmp;
  7. char str[15],a[15];
  8. gets(str);
  9. for(i=0;str[i]!='\0';i++)
  10. {
  11. if(str[i]>='0'&&str[i]<='9')
  12. a[i]=str[i]-'0';
  13. if(str[i]>='a'&&str[i]<='z')
  14. a[i]=str[i]-'a'+1+9;
  15. if(str[i]>='A'&&str[i]<='Z')
  16. a[i]=str[i]-'A'+1+9;
  17. }
  18. for(j=i-1;j>=0;j--)
  19. {
  20. tmp=a[j]*pow(16,k);
  21. sum+=tmp;
  22. k++;
  23. }
  24. printf("%ld",sum);
  25. return 0;
  26. }
  27. //#include<stdio.h> //方法二:参看大佬的解法
  28. //int main() //16-->10进制
  29. //{
  30. // int num = 0;
  31. // printf("输入一个十六进制数: ");
  32. // scanf("%x", &num);
  33. // printf("十六进制数 %x 转换为十进制为 %d\n", num, num);
  34. // return 0;
  35. //}

十进制 —> 十六进制

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n,i=0,j;
  5. char ten[16],str[17]="0123456789ABCDEF"; //10进制-->16进制
  6. scanf("%d",&n); //46-->2E; 59-->3B
  7. while(n) //46= 2*16^1 + 14*16^0
  8. {
  9. ten[i++]=str[n%16];
  10. n=n/16;
  11. }
  12. for(j=i-1;j>=0;j--)
  13. printf("%c",ten[j]);
  14. return 0;
  15. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,122人围观)

还没有评论,来说两句吧...

相关阅读