您的位置:首页 > 其它

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

2013-01-12 16:05 429 查看
cpp]
view plaincopyprint?
写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整型的函数) 

 
  
 
#include "stdafx.h" 

#include <stdlib.h> 
#include <stdio.h> 

#include <string> 
#include <iostream> 

 
using namespace std; 

 
long strtoint(char *str,int length); 

 
int main(int argc,
char* argv[]) 

    int i=0; 
char str[100]; 
while ((str[i]=getchar())!='0') { 

  i++; 

  
long n=strtoint(str,i); 

 
cout<<n<<endl; 
  
return 0; 

 
long strtoint(char *str,int length){ 

if(length > 1) { 

  return str[0]=='-' ? strtoint(str, length-1)*10-(str[length-1]-'0') : strtoint(str, length-1)*10+str[length-1]-'0'; 

} else { 
  return str[0]=='-' ? -1/10 : str[0]-'0'; 


  

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

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

3.对于字符串转换成正数的情况,一般是把字符串中相应位的内容取出来,然后减去0的ascaii:‘0’既可以得到他们的整数表示形式,这个很常见,一定是要有这种意识的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法
相关文章推荐