编写函数fun将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。PTA
请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。字符串在主函数输入,转换后的整数在主函数输出。注意如果是非负数字符串,则输入无需带符号。
long fun ( char *p);
其中,p接受主函数传来的字符串的首地址。char *p同char p[ ]。
裁判测试程序样例:
#include "string.h"
long fun ( char *p);
main()
{ char s[10];
long n;
gets(s);
n = fun(s);
printf("%ld\n",n);
}
/* 请在这里填写答案 */
输入样例:
-1234
输出样例:
-1234
输入样例:
1234
输出样例:
1234
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include "string.h"
#include<stdio.h>
long fun (char *p) {
long res = 0;
int i = 0;
int sign = 1; // 记录数的正负性,默认为正数
if (p[0] == '-') { // 如果第一个字符是负号
sign = -1; // 将正负性标记为负数
i++; // 从第二个字符开始读取数字
}
int len = strlen(p);
for (; i < len; i++) { // 从第 i 个字符开始,遍历字符串
if (p[i] >= '0' && p[i] <= '9') { // 如果该字符是数字
res = res * 10 + (p[i] - '0'); // 将数字累加到 res 中
} else {
return 0; // 如果该字符不是数字,返回 0 表示转换失败
}
}
return sign * res;
}
int main() {
char s[10];
long n;
gets(s);
n = fun(s);
printf("%ld\n", n);
return 0;
}