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

admin2019-03-19  14

问题 请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“一1234”,则函数把它转换为整数值一1234。
    注意:部分源程序给出如下。
    请勿改动主函数maln和其他函数中的任何内容,仅在函数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 f1ag =1; if(*p==’一’)/*负数时置f1ag为一1*/ {p++;f1ag=一1;} else if(*p==’+’)/*正数时置f1ag为1*/ p++; while(*p!=’\0’) {n =n* 10+*p 一’0’;/*将字符串转成相应的整数*/ p++; } return n*f1ag; }

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

最新回复(0)