题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。
解题思路:针对此字符串,从头到尾开始遍历,首先判断第一个字符,如果没有负号,继续遍历,有负号,将最终输出的整数以负数形式输出即可;其次针对后面的数字字符,将前面得到的整数乘以10再加上此字符对应的数字即可;碰到非法字符,转换停止;最后大数问题也是需要考虑的。代码如下:
#include <iostream>
using namespace std;
long int a_to_i(char* str){
int length = sizeof(str)/sizeof(str[0]);
bool flag = false;
if (str[0] == '-'){
flag = true;
}
long int sum = 0;
for (int i = 0; i < length; i++){
if (i == 0 && (str[0] == '-' || str[0] == '+')){
continue;
}
sum = sum * 10 + (str[i] - '0');
}
if (flag)
{
sum = -sum;
}
return sum;
}
int main(){
char num[] = "-122";
long int result = a_to_i(num);
cout << result << endl;
system("pause");
return 0;
}