码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 实验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. }

  • 相关阅读:
    5分钟上手Python爬虫:从干饭开始,轻松掌握技巧
    短视频创作有什么建议吗?
    openstack搭建笔记-train版
    不确定度 Uncertainty
    Python究竟属不属于嵌入式语言?
    1、Sentinel基本应用&限流规则(1)
    【JavaEE】网络原理---TCP协议的易懂图文详解(确认应答、超时重传、连接管理、滑动窗口、流量控制)
    Bootstrap关于盒子(盒模型)边距的设置
    element拖拽表单拖拽排序
    室友说你怎么才学到数组,然后我用C语言做了个扫雷(递归展开+难度选择+优化打印)
  • 原文地址:https://blog.csdn.net/qq_53664308/article/details/136851959
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号