• 实验7-3-6 字符串转换成十进制整数(PTA)


    题目:

    输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

    输入格式:

    输入在一行中给出一个以#结束的非空字符串。

    输出格式:

    在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

    输入样例:

    +-P-xf4+-1!#

    输出样例:

    -3905

    解:

    1. #include<stdio.h>
    2. int huan(char s[100]){//将十六进制转换为十进制的函数
    3. int i=0,sum=0,n;
    4. while(s[i]!='#'){
    5. if(s[i]=='A' || s[i]=='a'){
    6. n=10;
    7. sum=sum*16+n;
    8. }
    9. else if(s[i]=='B' || s[i]=='b'){
    10. n=11;
    11. sum=sum*16+n;
    12. }
    13. else if(s[i]=='C' || s[i]=='c'){
    14. n=12;
    15. sum=sum*16+n;
    16. }
    17. else if(s[i]=='D' || s[i]=='d'){
    18. n=13;
    19. sum=sum*16+n;
    20. }
    21. else if(s[i]=='E' || s[i]=='e'){
    22. n=14;
    23. sum=sum*16+n;
    24. }
    25. else if(s[i]=='F' || s[i]=='f'){
    26. n=15;
    27. sum=sum*16+n;
    28. }
    29. else if(s[i]>='0'&&s[i]<='9'){
    30. n=s[i]-'0';//注意这里,因为这里是字符,所以必须减掉'0'才是数字的值
    31. sum=sum*16+n;
    32. }
    33. i++;
    34. }
    35. return sum;
    36. }
    37. int zhangfu(char s[100]){
    38. int i=0,flag=1;
    39. while(s[i]!='/0'){
    40. if(s[i]>='A'&&s[i]<='F' || s[i]>='a'&&s[i]<='f'){
    41. break;//如果先检测到指定字符,直接返回flag=1
    42. }
    43. if(s[i]=='-'){//如果先检测到负号,则返回flag=-1
    44. flag=-1;
    45. }
    46. i++;
    47. }
    48. return flag;
    49. }
    50. int main(){
    51. char s[100];
    52. gets(s);
    53. int flag=zhangfu(s);
    54. int sum=huan(s);
    55. printf("%d",flag*sum);
    56. return 0;
    57. }

    合并起来写:

    1. #include<stdio.h>
    2. #include<string.h>
    3. int main(){
    4. int flag,i=0,j,sum=0;
    5. char s[100];
    6. gets(s);
    7. while(s[i]!='#'){
    8. if(s[i]=='-'){
    9. flag=-1;
    10. break;
    11. }
    12. if((s[i]>='1'&&s[i]<='9') || (s[i]>='A'&&s[i]<='F') || (s[i]>='a'&&s[i]<='f')){
    13. flag=1;
    14. break;
    15. }
    16. i++;
    17. }
    18. i=0;
    19. while(s[i]!='#'){
    20. if(s[i]>='1'&&s[i]<='9'){
    21. sum=sum*16+(s[i]-'0');
    22. }
    23. else if(s[i]=='a' || s[i]=='A'){
    24. sum=sum*16+10;
    25. }
    26. else if(s[i]=='b' || s[i]=='B'){
    27. sum=sum*16+11;
    28. }
    29. else if(s[i]=='c' || s[i]=='C'){
    30. sum=sum*16+12;
    31. }
    32. else if(s[i]=='d' || s[i]=='D'){
    33. sum=sum*16+13;
    34. }
    35. else if(s[i]=='e' || s[i]=='E'){
    36. sum=sum*16+14;
    37. }
    38. else if(s[i]=='f' || s[i]=='F'){
    39. sum=sum*16+15;
    40. }
    41. i++;
    42. }
    43. printf("%d",sum*flag);
    44. return 0;
    45. }

  • 相关阅读:
    idea(添加jsp文件模板)
    Tesla P40千元级大显卡主机装机实践
    IDEA 搭建 SpringCloud 项目【超详细步骤】
    NFS介绍与搭建
    命令模式 rust和java实现
    关于微前端,你理解到究极奥义了么?
    vue3——pixi初学,编写一个简单的小游戏,复制粘贴可用学习
    机器学习基础之《回归与聚类算法(1)—线性回归》
    工程材料知识点总结(全)
    springboot265基于Spring Boot的库存管理系统
  • 原文地址:https://blog.csdn.net/qq_53664308/article/details/136851959