博客
关于我
例5006 计算器设计
阅读量:267 次
发布时间:2019-03-01

本文共 2154 字,大约阅读时间需要 7 分钟。

例5006 计算器设计

Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others)

Total Submissions: 62 Accepted Submissions: 44
Problem Description
Really Neato计算器公司最近邀请你的团队为他们设计一款超级Neato一代计算器。作为计算机科学家,你建议该计算器能够在各种进制之间进行转换。他们认为这是一个很好的想法,并要求你的团队先给出实现进制转换的算法原型。公司经理告诉你,该计算器应该具有以下一些特征:
(1)可以显示7位;
(2)按键除了数字0到9外,还包括大写字母A到F;
(3)支持2~16进制。

Input

输入文件中的每行为一个进制转换,包括3个数,第1个数是原进制下的一个整数,第2个数就是原进制,第3个数是转换后的进制。这3个数的两边可能有一个或多个空格。输入数据一直到文件结尾。

Output

实现所有的进制转换,转换后的数右对齐到7位显示。如果转换后的数的位数太多,超过7位,则输出“ERROR”,也是右对齐到。

解题思路:

  #include 
#include
long b2ten(char *x,int b); int main(){ char srcnum[10],destnum[10],temp[10]; char error[10] = "ERROR"; int src,dest,j; long num; while(~scanf("%s %d %d",srcnum,&src,&dest)){ num = b2ten(srcnum,src); if(dest==10){ if(num>9999999) printf("%7s\n",error); else printf("%7ld\n",num); } else{ j=0; while(num){ if(num%dest<10) destnum[j++] = num%dest + '0'; else{ switch(num%dest){ case 10:destnum[j++] = 'A';break; case 11:destnum[j++] = 'B';break; case 12:destnum[j++] = 'C';break; case 13:destnum[j++] = 'D';break; case 14:destnum[j++] = 'E';break; case 15:destnum[j++] = 'F';break; } } num /= dest; } destnum[j] = '\0'; if(strlen(destnum)>7){ printf("%7s\n",error); } else{ int i=0; for(int k=j-1;k>=0;k--){ temp[i++] = destnum[k]; } temp[i] = '\0'; printf("%7s\n",temp); } } } return 0; } long b2ten(char *x,int b){ int ret=0; for(int i=0;i

这段代码实现了一个支持不同进制转换的计算器。程序从标准输入读取转换请求,逐个处理每个请求,进行数字转换并输出结果。代码结构清晰,主要包含以下几个部分:

  • 头部包含必要的库和头文件
  • 主函数实现进制转换的逻辑
  • 辅助函数b2ten用于将源进制数转换为十进制数
  • 输入处理与输出格式化
  • 错误处理机制
  • 程序支持进制转换之间的切换,输入数据经过转换后会右对齐到7位显示,超过7位则输出"ERROR"。代码注重处理细节,如字符范围判断和结果反转确保显示正确。

    转载地址:http://jcsa.baihongyu.com/

    你可能感兴趣的文章
    pandas -更改重新采样的时间序列的开始和结束日期
    查看>>
    SpringBoot+Vue+Redis前后端分离家具商城平台系统(源码+论文初稿直接运行《精品毕设》)15主要设计:用户登录、注册、商城分类、商品浏览、查看、购物车、订单、支付、以及后台的管理
    查看>>
    pandas :to_excel() float_format
    查看>>
    pandas :加入有条件的数据框
    查看>>
    pandas :将多列汇总为一列,没有最后一列
    查看>>
    pandas :将时间戳转换为 datetime.date
    查看>>
    pandas :将行取消堆叠到新列中
    查看>>
    pandas DataFrame 中的自定义浮点格式
    查看>>
    Pandas DataFrame 的 describe()方法详解-ChatGPT4o作答
    查看>>
    Pandas DataFrame中删除列级的方法链接解决方案
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    Pandas DataFrame中的列从浮点数输出到货币(负值)
    查看>>
    Pandas DataFrame多索引透视表-删除空头和轴行
    查看>>
    pandas DataFrame的一些操作
    查看>>
    Pandas Dataframe的日志文件
    查看>>
    Pandas df.iterrows() 并行化
    查看>>
    pandas GROUPBY+变换和多列
    查看>>
    pandas Groupby:创建两列的Groupby时,如何按正确的顺序对工作日进行排序?
    查看>>
    Pandas matplotlib 无法显示中文
    查看>>
    pandas PIVOT_TABLE保持索引
    查看>>