问答题
请编写一个函数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等。