CSDN-字符串转整数

来源:互联网 发布:指纹打卡机考勤软件 编辑:程序博客网 时间:2024/05/16 08:19
题目详情

输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345。

请完成函数StrToInt,实现字符串转换成整数的功能。

 

友情提醒

提交代码之前,请复查下你的程序,比如当给的字符串是如左边图片所示的时候,有考虑到么?

当然,它们各自对应的正确输出如右边图片所示(假定你是在32位系统下,编译环境是VS2008以上)

input:                                          output:

                         


注:以上只是部分测试数据,不代表上述数据通过了,即挑战成功。

答题说明

  1. 完成功能函数StrToInt即可,但不要去改动函数名,参数,至于main函数是为方便你在提交代码之前进行在线编译测试;
  2. 不得用库函数atoi。

这题没有什么方法,就像刚学c语言那样,就是code

#include<stdio.h>#include<limits.h>#include<string.h>int StrToInt(const char * str){int i=0,j;long long sum=0;while(str[i]==' ')//去除字符串开头的空格 {i++;}if(str[i]=='-'){i++;j=i;while(str[j]!= '\0'){if(str[j]> '9' || str[j]< '0')break;sum=sum*10-(str[j]-48);j++;}if(sum<INT_MIN)return INT_MIN;else return sum;}else if(str[i]=='+'){i++;j=i;while(str[j]!= '\0'){if(str[j]> '9' || str[j]< '0')break;sum=sum*10+(str[j]-48);j++;}if(sum>INT_MAX)return INT_MAX;else return sum;}else{j=i;while(str[j]!= '\0'){if(str[j]> '9' || str[j]< '0')break;sum=sum*10+(str[j]-48);j++;}if(sum>INT_MAX)return INT_MAX;else return sum;}}int main(){char s[100];while(gets(s)!=NULL){printf("%d\n",StrToInt(s));}return 0;}


 

0 0
原创粉丝点击