-
题目描述:
-
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
-
输入:
-
输入可能包含多个测试样例。
对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000)。
-
输出:
-
对应每个测试案例,
若输入为一个合法的字符串(即代表一个整数),则输出这个整数。
若输入为一个非法的字符串,则输出“My God”。
-
样例输入:
-
5 -5 +8
-
样例输出:
-
5 -5 8
代码如下:先根据第一个字符记录下是正数还是负数,或者直接是非法输入用flag变量记录下来。然后遍历后面的字符,转换成整数,如果遇到非法字符,则用flag变量记录下来。
#include <stdio.h> #include <stdlib.h> int main(){ int n,num; int flag,isNegtive; char input[100]; char *p; while(scanf("%s",input)!=EOF){ p=input; isNegtive=flag=num=0; if(*p=='+'){ p++; isNegtive=0; } else if(*p=='-'){ p++; isNegtive=1; } else if(*p!='+'&&*p!='-'&&!(*p>='0'&&*p<='9')) flag=1; while(*p!='\0'){ if(*p>='0'&&*p<='9'){ num=num*10+(*p-'0'); p++; } else{ flag=1; break; } } if(flag==1) printf("My God\n"); else if(flag==0&&isNegtive==0) printf("%d\n",num); else if(flag==0&&isNegtive==1) printf("%d\n",0-num); } return 0; }