標籤:style 檔案 os 2014 io 問題
要點:要考慮到各種非法參數。
實現:
/**********************************字串轉整數by Rowandjj2014/7/15***********************************/#include<iostream>#include<stdlib.h>//不加這個標頭檔在九度oj上會編譯錯誤using namespace std;int state = 0;//0代表串非法,1代表正常long Str2Int(const char *str){long num = 0;if(str == NULL)//輸入null{state = 0;return 0;}const char* digit = str;int minius = 0;//0代表正數,1代表負數while(*digit == ' ')//跳過空格{digit++;}if(*digit == '+'){digit++;}else if(*digit == '-'){minius = 1;digit++;}if(*digit == '\0')//只輸入+或者-{state = 0;return 0;}while(*digit != '\0'){if(*digit > '9' || *digit < '0')//非法字元{state = 0;return 0;}state = 1;num = num*10 + (*digit - '0');//核心代碼digit++;}//越界if(*digit>0x7fffffff || *digit<(signed int)0x80000000){state = 0;return 0;} return minius?(0-num) : num;}int main(){long digit;char str[1000];char *p = str;while(cin>>p){digit = Str2Int(p);if(state==0){cout<<"My God\n";}else//state == 1{cout<<digit<<endl;} }return 0;}