今天做啦一个进制转换的题,改来改去最终倒是过啦,本来挺开心的,然后去翻啦一下题解,瞬间就有小情绪啦,哎,人家的代码辣么辣么短,实在是不开心,不过谁让咱是小渣渣呢,在此总结一下strtol 函数。

先来看看把我整不开心的这道题

Hrbust1896 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1896

题目简单,只要足够细心就能AC的

看我自己的代码

  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<string.h>
  5. #include<stack>
  6. #include<math.h>
  7. using namespace std;
  8. int main()
  9. {
  10.  
  11. int n,m;
  12. char s[];
  13. while(~scanf("%d%s",&n,&s)){
  14. int t=;int ss[];
  15. int len=strlen(s);
  16. for(int i=;i<len;i++){
  17. if(s[i]=='a'||s[i]=='A')ss[t++]=;
  18. else if(s[i]=='b'||s[i]=='B')ss[t++]=;
  19. else if(s[i]=='c'||s[i]=='C')ss[t++]=;
  20. else if(s[i]=='d'||s[i]=='D')ss[t++]=;
  21. else if(s[i]=='e'||s[i]=='E')ss[t++]=;
  22. else if(s[i]=='f'||s[i]=='F')ss[t++]=;
  23. else {ss[t++]=s[i]-'';
  24.  
  25. }
  26.  
  27. }
  28.  
  29. int sum=;int j=;
  30. for(int i=t-;i>=;i--){
  31. sum+=ss[i]*pow(n,j++);
  32. }
  33.  
  34. cout<<sum<<endl;
  35.  
  36. }
  37. }

至于我发现的很牛很短的代码是这个样子的

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <stdlib.h>
  6. using namespace std;
  7. int main()
  8. {
  9. int m;//base(代表进制)
  10. char n[];//char*nptr
  11. while(~scanf("%d %s",&m,&n))
  12. {
  13. printf("%d\n",strtol(n,NULL,m));
  14. //必须设定endptr为NULL 否则返回非法字符串
  15. }
  16. }

里面的注释是大神打上去的。。。

嘎嘎嘎,罪魁祸首就是strtol这个函数,不过他真的太方便啦嘿嘿

long int strtol(const char *nptr, char **endptr, int base)

*nptr指向的是在不同的进制下数的表示的字符串,base则为进制,char **endptr一般为空。

strtol函数的更多相关文章

  1. strtol函数 将字符串转换为相应进制的整数

    转自http://hi.baidu.com/qwpsmile/blog/item/9bc44efa4f41018a9f514637.html +----------------+|      strt ...

  2. POJ1331 Multiply(strtol函数练习)

    题目链接:http://poj.org/problem?id=1331 主要介绍strtol函数: long int strtol(const char *nptr,char **endptr,int ...

  3. 浅析C语言中strtol()函数与strtoul()函数的用法

    转自:http://www.jb51.net/article/71463.htm C语言strtol()函数:将字符串转换成long(长整型数) 头文件: ? 1 #include <stdli ...

  4. strtol 函数用法

    strtol是一个C语言函数,作用就是将一个字符串转换为长整型long,其函数原型为: long int strtol (const char* str, char** endptr, int bas ...

  5. strtol()函数

    #include <stdlib.h>#include <stdio.h> int main(){ char a[] = "100"; char b[] = ...

  6. strtol函数的用法——字符串转长整形

    /* strtol example */ #include <stdio.h> /* printf */ #include <stdlib.h> /* strtol */ in ...

  7. string.h文件中函数用法

    下面为string.h文件中函数的详细用法: strcpy函数名:strcpy功 能: 拷贝一个字符串到另一个用 法: char *strcpy(char *destin, char *source) ...

  8. C字符串处理函数

    部分参考百科. C常用字符串函数:字符串输入函数,字符串输出函数,字符串处理函数,标准输入输出流 字符串处理函数: 1.字符串长度:strlen(str),返回字符串实际长度,不包括'\0',返回值类 ...

  9. strtol详解

    文章装载自:http://blog.csdn.net/happylife1527/article/details/8441799,大家看到这篇文章想转载的请注明出处,尊重原作者劳动成果. 今天,在re ...

随机推荐

  1. struts checkbox选中

    <input type="checkbox" id="something" name="something" /> ↓ < ...

  2. @GeneratedValue - fancychendong的专栏 - 博客频道 - CSDN.NET

    登录|注册 收藏成功 确定 收藏失败,请重新收藏 确定 标题 标题不能为空 网址 标签 摘要 公开 取消收藏 分享资讯 传PPT/文档 提问题 写博客 传资源 创建项目 创建代码片 设置昵称编辑自我介 ...

  3. vmware在非正常关机后无法启动虚拟机

    昨天使用vmware,由于笔记本温度过高,系统自动断电,导致实体机非正常关机.然后发现vmware无法启动虚拟机了,提示为‘This virtual machine appears to be in ...

  4. 使用express搭建第一个Web应用【Node.js初学】

    来源:http://jingyan.baidu.com/article/bad08e1ee501e009c8512106.html express是一个开源的node.js项目框架,初学者使用expr ...

  5. activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

  6. Hbase伪分布式

    其实我就是要让数据存储在hdfs上而已........ 多配置点东西就好了,在hbase-site.xml中加入: <configuration> <property> < ...

  7. POJ 2393 贪心 简单题

    有一家生产酸奶的公司,连续n周,每周需要出货numi的单位,已经知道每一周生产单位酸奶的价格ci,并且,酸奶可以提前生产,但是存储费用是一周一单位s费用,问最少的花费. 对于要出货的酸奶,要不这一周生 ...

  8. 为FaceBook审核提交模拟器包及自己验证模拟器包

    为FaceBook审核提交模拟器包及自己验证模拟器包折腾了一番,因为我的项目是用cocoapods管理的,所以跟普通直接运行name.xcodeproj项目有所不同. 切入正题 1.先设置 relea ...

  9. Vim 中截取部分内容保存到其他文件

    最近无聊,突然想跟着玩玩天池数据挖掘,发现数据好大,想转换到mysql数据库,phpmyadmin import 导入时抱错! 数据文件大大! 于是乎,准备截取一小段到另外一个文件测试先,然后,发现了 ...

  10. ios模拟器未能安装此应用程序

    网上介绍了很多方法,觉得有些不太靠谱.这里只解释我试验过的最简单最粗暴的方法: 删除模拟器上旧的APP 以外,也可以做 CLEAN (cmd+shift+K) 把旧的build 删掉.