活动设计题   请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入的字符串为“-1234”,则函数把它转换为整数值-1234。
    注意:部分源程序给出如下。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若千语句。
    试题程序:
    #include<stdio.h>
    #include<string.h>
    long fun(char*p)
    {
    }
    void main()
    {
    char s[6];
    long n;
    printf('Enter a string:\n');
    gets(s);
    n=fun(s);
    printf('%ld\n',n);
    }
 
【正确答案】long fun(char*p) { long n=0; int flag=1; if(*p=='-') /*负数时置flag为-1*/ {p++;flag=-1;} else if(*p=='+') /*正数时置flag为1*/ p++; while(*p!='\0') (n=n*10+*p-'0'; /*将字符串转成相应的整数*/ p++; } return n*flag; }
【答案解析】[考点] 本题关键字有:字符串转换为整数的算法;指针型变量。通过将字符减去“0”可以将字符转换成相应的数字。 转换后整数的符号通过if语句判断,*p是一个字符而不是一个数,*p字符的相应数字为*p-‘0’,通过while循环将字符转换成整数。