题目:给定一个字符串,您需要做以下步骤
①读入字符串,如果字符串有空格直接丢弃。 比如:" 123",直接丢弃空格,变为"123"
②读取下一个字符,如果为"-",则表示结果输出为负数,如果为"+",则结果输出为正数,如果没有"-"和"+"直接默认结果为正数。比如" -234",结果输出为-234;"+123"或者"123",结果输出为123
③继续读取下一个字符,直到出现不是数字字符或者到了字符串尾部。字符串剩下的就被忽视掉。比如:"-551df5665",输出为-551,后面的直接被忽视掉
④将读入的正数作为返回值,如果字符串没有数字字符,直接返回整数0.
⑤返回的整数要在[-2^31,(2^31)-1],如果超出范围就直接返回临界值,即-2^31(负数超出范围的返回值),(2^31)-1(整数超出范围的返回值),2^31=2147483647
栗子:
①输入为s="-42",返回值为-42,在无符号整形范围内
②输入为s=" 0123 456",返回值为123,注意:3下一个字符为空格,这时的空格不再是丢弃,空格直接在所有字符之前才丢弃,之后碰到都会作为字符串的终止符号
在这里在提醒大家一点:在输入的字符串中,一旦扫描到不是空格的字符开始,下一个只要碰到不是数字字符的都直接退出程序
好了,这道题的题目有点长,过程可能会有点复杂,相信你一定可以做到的。
已知代码给大家:
动手完整myAtoi函数
已知代码源代码给大家:
#include <stdio.h>
#include <math.h>
int myAtoi(char* s){
}
int main(){
char s[20];
int ret;
printf("请输入字符串:>");
fflush(stdin); //清空缓存区
scanf("%s",s);
//动手实现myAtoi函数
ret=myAtoi(s);
printf("%d\n",ret);
return 0;
}
其实说实话,这道题想不清楚就非常绕,因为需要注意的点很多,一旦你这修改完成,那边又会出错,所以写代码之前自己就要先想清楚,把所有存在的情况尽可能的列出来,根据自己列出来的情况写代码。
答案: