问题 A: 数字判断(指针为函数参数)

问题 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;
}

猜你喜欢

转载自blog.csdn.net/weixin_41956151/article/details/88640415