问答题
请编写一个函数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++)0
{ x=x*10+*p-"0";/*将字符串转成相应的整数*/
p++;
}
x=x*flag;
[解析] if()语句的作用是判断该字符串应当为正数还是负数。
注意:★p是一个字符(如"9"、"4"),并不是一个数,要将其转成相应的数字需令其减去"0"(不是"/0"),即★p-"0"就得到★p这个字符的相应数字,如"0"-"0"=0、"8"-"0"=8等。