请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中

admin2020-06-16  23

问题 请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。
    注意:部分源程序给出如下。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    试题程序:
1  #include<stdio.h>
2   #include<string.h>
3   long fun(char*p)
4  {
5
6  }
7  void main()
8   {
9    char s[6];
10    long n;
11    printf("Enter a string:\n’’);
12    gets(s);
13    n=fun(s);
14    printf(’’%1 d\n’’,n);
15  }

选项

答案1 long fun(char*p) 2 { 3 long n=0; 4 int flag=1; 5 if(*p==’0’)/*负数时置flag为-1*/ 6 (p++;flag=-1;} 7 else if(*p==’+’)/*正数时置flaq为1*/ 8 p++; 9 while(8p!=’\0’) 10 {n=n*10+*p-’0’;/*将字符串转成相应的整数*/ 11 p++; 12 } 13 return n*flag; 14 }

解析 if语句的作用是判断该字符串为正数还是负数,while循环的作用是将字符串转成相应的整数。注意:*p是一个字符(例如’9’、’4’),并不是一个数,要将其转成相应的数字需令其减去’0’(不是’\0’),即*p-’0’就得到*p这个字符的相应数字,例如’0’-’0’=0、’8’-’0’=8等。必须在程序的前面加#include,函数atol的作用是将字符串转换成长整型数,它是一个库函数。
转载请注明原文地址:https://kaotiyun.com/show/RYCp777K
0

最新回复(0)