问题 A: 数字判断(指针为函数参数)
时间限制: 1 Sec 内存限制: 128 MB
提交: 569 解决: 369
[提交][状态][讨论版]
题目描述
输入一个字符串,判断这个字符串是否一个完全整数值的字符串,例如输入"1234",那么表示整数1234,输入"12a3"就表示只是一个字符串,不是一个整数
要求编写函数isNumber,参数是一个字符指针,返回值是整数类型
如果字符串表示一个整数,则计算出这个整数并且返回
如果字符串不是表示一个整数,则返回-1
主函数必须调用isNumber来判断字符串,不能使用任何C++自带或第三方的类似函数
输入
输入t表示有t个测试实例
每行输入一个字符串
依次输入t行
输出
每行输出判断结果
样例输入
3
1234
567a
0890
样例输出
1234
-1
890
解决方法如下:
#include<iostream>
using namespace std;
int flag = 1;
int isNumber(char *p, int len) {
for (int i = 0; i < len; i++)
{
int num = *(p + i) - '0';
if (num <= 9 && num >= 0)
{
//cout << num<<" ";
flag = 1;
continue;
}
else
{
flag = 0;
return flag;
}
}
return flag;
}
void print(char *p, int len) {
int flag1 = 0;
for (int i = 0; i < len; i++)
{
int num = *(p + i) - '0';
if (num == 0 && flag1 == 0)
{
continue;
}
if (num != '0' || flag1 != '0')
{
flag1 = 1;
cout << num;//输出数字
}
}
cout << endl;
}
int main() {
int t;
cin >> t;
while (t--)
{
char str[100];
cin >> str;
int len = strlen(str);
//int num = isNumber(str);
if (isNumber(str, len))
{
print(str, len);
}
else
{
cout << "-1" << endl;
}
flag = 0;
}
return 0;
}