Problem Description
用递归算法将一个整数字符串转换为相应的整数并输出,如"123"转换输出为123。
Input
有多组数据,每组为由10个数字字符或正、负符号组成的一个整数字符串,正、负符号只可能会出现在首字符,序列长度不超过9。
Output
输出该字符串转换得到的相应整数。
Sample Input
+123 0123
Sample Output
123 123
#include<iostream>
#include<stdio.h>
#include<string.h>
const int MAX=51;
using namespace std;
void fun(int strlen,char* str,int * array,int i,int& count) {
if(i==strlen-1) {
array[count++]=str[i]-'0';
} else {
if(i==0&&str[i]=='+')
fun(strlen,str,array,i+1,count);
else if(str[i]=='0'&&count==0)
fun(strlen,str,array,i+1,count);
else if(count==1&&array[0]<0&&str[i]=='0')
fun(strlen,str,array,i+1,count);
else {
array[count++]=str[i]-'0';
fun(strlen,str,array,i+1,count);
}
}
}
void print(int* array,int len) {
int flag=0;
if(array[0]<0) {
flag=1;
if(array[1]!=0)
cout<<"-";
}
for(int i=flag; i<len; i++)
cout<<array[i];
cout<<endl;
}
int main() {
int n;
int array[MAX];
char str[MAX];
while(cin>>str) {
int len=strlen(str);
int count=0;
fun(len,str,array,0,count);
//cout<<count<<endl;
print(array,count);
}
return 0;
}