1475 m进制转十进制——http://codevs.cn/problem/1475/
2016-03-30 14:43
267 查看
第一部分:题目
题目描述 Description
将m进制数n转化成一个十进制数 m<=16
题目保证转换后的十进制数<=100
输入描述 Input Description
共一行
n和m
输出描述 Output Description
共一个数
表示m进制的n化成十进制的数
样例输入 Sample Input
1010 2
样例输出 Sample Output
10
第二部分:思路
举例:(1010)2=1*2^3+0*2^2+1*2+0*2^0=(((1*2+0)*2+1)*2+0)*1.
把n存入到字符串数组中,逐一乘m求和,注意字符的问题:因为题目没有说字母大写还是小写。这里以大写为例:A,B,C,D,E,F分别对应10,11,12,13,14,15.
当然,根据进制的定义,最后一位其实是乘m的0次方。所以最后一个字符不乘。
第三部分:代码
题目描述 Description
将m进制数n转化成一个十进制数 m<=16
题目保证转换后的十进制数<=100
输入描述 Input Description
共一行
n和m
输出描述 Output Description
共一个数
表示m进制的n化成十进制的数
样例输入 Sample Input
1010 2
样例输出 Sample Output
10
第二部分:思路
举例:(1010)2=1*2^3+0*2^2+1*2+0*2^0=(((1*2+0)*2+1)*2+0)*1.
把n存入到字符串数组中,逐一乘m求和,注意字符的问题:因为题目没有说字母大写还是小写。这里以大写为例:A,B,C,D,E,F分别对应10,11,12,13,14,15.
当然,根据进制的定义,最后一位其实是乘m的0次方。所以最后一个字符不乘。
第三部分:代码
#include<stdio.h> #include<string.h> int main() { int m,sum=0,i,len; char s[10]; scanf("%s %d",s,&m);//这里需要稍微注意,因为scanf不接收空格以及回车,所以这样一步就把空格两边的值赋给了数组s,和整数m. len=strlen(s);//获取字符长度 for(i=0;i<len;i++) { switch(s[i])//对当前进制的每一位数值进行判断 { case 'F': case 'f': { sum+=15; break; } case 'E': case 'e': { sum+=14; break; } case 'D': case 'd': { sum+=13; break; } case 'C': case 'c': { sum+=12; break; } case 'B': case 'b': { sum+=11; break; } case 'A': case 'a': { sum+=10; break; } default: { sum+=s[i]-'0'; } } if(i<len-1)//最后一位乘1. { sum*=m; } } printf("%d\n",sum); return 0; }
相关文章推荐
- TCP/IP协议原理
- 如何使用okhttp访问百度三方API-频道新闻API_易源
- 如何做网络流量监控
- TCP连接中TIME_WAIT连接过多
- TCP和UDP的区别
- Jquery ajax 请求容易出现的问题http415,http400
- socat:通过网络控制串口设备案例分析
- 1474 十进制转m进制——http://codevs.cn/problem/1474/
- java Socket编程初探_TCP
- HTTP/1.1
- windows中mac虚拟机网络连接
- HttpUtils
- HttpServletResponse对象
- 全栈工程师眼中的HTTP
- 网络好文章
- 自定义网络请求图片的大小
- CentOS7 网络配置
- javaweb学习总结(十)——HttpServletRequest对象(一)
- Linux网络编程简单示例
- [shell]通过ping检测整个网段IP的网络状态脚本