博客
关于我
例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/

    你可能感兴趣的文章
    oracle 可传输的表空间:rman
    查看>>
    oracle 学习
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    oracle 行转列
    查看>>
    Oracle 表
    查看>>
    Oracle 递归
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle10g下载地址--多平台下的32位和64位
    查看>>
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>
    Oracle中DATE数据相减问题
    查看>>
    Oracle中merge into的使用
    查看>>
    oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
    查看>>