写一个函数,检查字符是否是整数,如果是,返回其整数值

cpp] view plaincopyprint?

  1. 写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整型的函数) 
  2.  
  3.   
  4.  
  5. #include "stdafx.h" 
  6. #include <stdlib.h> 
  7. #include <stdio.h> 
  8. #include <string> 
  9. #include <iostream> 
  10.  
  11. using namespace std; 
  12.  
  13. long strtoint(char *str,int length); 
  14.  
  15. int main(int argc, char* argv[]) 
  16.     int i=0; 
  17. char str[100]; 
  18. while ((str[i]=getchar())!='0') { 
  19.   i++; 
  20.   
  21. long n=strtoint(str,i); 
  22.  
  23. cout<<n<<endl; 
  24.   
  25. return 0; 
  26.  
  27. long strtoint(char *str,int length){ 
  28. if(length > 1) { 
  29.   return str[0]=='-' ? strtoint(str, length-1)*10-(str[length-1]-'0') : strtoint(str, length-1)*10+str[length-1]-'0'
  30. } else
  31.   return str[0]=='-' ? -1/10 : str[0]-'0'
  32.   

以下为自己对算法的描述:

1.首先考虑一些测试用例:正数和负数的情况,负数的情况就是必须考虑到字符串的第一个字符是不是‘-’ ,如果不是‘-’,就标记一下字符串的最后一位,然后前面的字符串再次进行递归。(其实递归完全没有必要啊,只要扫描字符串即可,时间复杂度是0(n),这和求10的余数,求被10整除之后的数的方法是一样的)。

2.对于编码时,应该考虑的就是给了一个函数原型,要明白输入是什么,输出是什么,哪些能够改变,哪些需要在函数中申请地址空间等等一些细节问题。

3.对于字符串转换成正数的情况,一般是把字符串中相应位的内容取出来,然后减去0的ascaii:‘0’既可以得到他们的整数表示形式,这个很常见,一定是要有这种意识的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值