问答题 请编写一个函数fun,它的功能是:将一个表示正整数的数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“1234”,则函数把它转换为整数值1234。函数fun中给出的语句仅供参考。 注意:部分源程序存在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入需要编写的若干语句。 给定源程序: #include <stdio.h> #include <string.h> long fun(char *p) { /*以下代码仅供参考*/ int i,len;/*len为串长*/ long x=0; len=strlen(p); /*以下完成数字字符串转换为一个数字。注意:字符'0'不是数字0*/ return x; } main() /*主函数*/ { char s[6]; long n; printf("Enter a string:/n"); gets(s); n=fun(s); printf("%ld/n",n); }
【正确答案】i=0; if(*p=='-') /*负数时置flag为-1*/ { p++; i++; flag=-1; } else if(*p=='+') /*正数时置flag为1*/ { p++; i++; } for(;i<len;i++) { x=x*10+*p-'0'; /*将字符串转成相应的整数*/'0' p++; } x=x*flag;
【答案解析】[解析] if()语句的作用是判断该字符串应当为正数还是负数。注意:*p是一个字符(如'9'、'4'),并不是一个数,要将其转成相应的数字需令其减去'0'(不是'/0'),即*p-'0'就得到*p这个字符的相应数字,如'0'-'0'=0、'8'-'0'=8等。