题目描述
输入一个字符串,判断这个字符串是否一个完全整数值的字符串,例如输入"1234",那么表示整数1234,输入"12a3"就表示只是一个字符串,不是一个整数,即若输入的字符串有一个非数字字符,则不是一个整数。
要求编写函数isNumber,参数是一个字符指针,返回值是整数类型
如果字符串表示一个整数,则计算出这个整数并且返回
如果字符串不是表示一个整数,则返回-1
主函数必须调用isNumber来判断字符串,不能使用任何C++自带或第三方的类似函数
输入
输入t表示有t个测试实例
每行输入一个字符串,字符串的最大长度不超过20
依次输入t行
输出
每行输出判断结果
输入样例1
3
1234
567a
0890
输出样例1
1234
-1
890
输入样例2
4
0000
0abc
a460
000912a
输出样例2
0
-1
-1
-1
输入样例3
4
0001
070030
00800
50000
输出样例3
1
70030
800
50000
该题主要考察指针作为函数参数的知识点
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include <iomanip>
#include<cmath>
using namespace std;
int isNumber(char* p)
{
int num[20];
int sign = 1,sum=0,cn=0;
for (; (*p) != '\0'; p++)
{
if ((*p) < '0' || (*p) > '9')
{
sign = 0;
}
num[cn++] = (*p) - '0';
}
for (int i = 0; i < cn; i++)
{
sum += num[i] * pow(10, cn - i - 1);
}
if (!sign)
{
return -1;
}
else
{
return sum;
}
}
int main()
{
int n;
char arr[25];
cin >> n;
while (n--)
{
cin >> arr;
cout << isNumber(arr) << endl;
}
return 0;
}