题目描述
输入一个字符串,判断这个字符串是否一个完全整数值的字符串,例如输入"1234",那么表示整数1234,输入"12a3"就表示只是一个字符串,不是一个整数
要求编写函数isNumber,参数是一个字符指针,返回值是整数类型
如果字符串表示一个整数,则计算出这个整数并且返回
如果字符串不是表示一个整数,则返回-1
主函数必须调用isNumber来判断字符串,不能使用任何C++自带或第三方的类似函数
输入
输入t表示有t个测试实例
每行输入一个字符串
依次输入t行
3
1234
567a
0890
输出
每行输出判断结果
1234
-1
890
代码
#include<iostream>
using namespace std;
int isNumber(char *p)
{
int flag = 0, n = 0;
for(; *p != '\0'; p++)
{
if((*p) < '0' or (*p) > '9')
{
flag++;
}
else
{
n = n * 10 + (*p - 48);
}
}
if(flag == 0)
return n;
else
return -1;
}
int main()
{
int t,i;
cin >> t;
for(i = 0; i < t; i++)
{
char arr[10] = {0};
cin >> arr;
cout << isNumber(arr)<<endl;
}
return 0;
}
笔记
这道题目本身没有难度,需要注意的是:
if((*p) < '0' or (*p) > '9')
{
flag++;
}
else
{
n = n * 10 + (*p - 48);
}
*p是字符串数组的指针,在判断是否为数字时,0和9要使用引号或者使用ASCII值。
(*p) < '0' or (*p) > '9'
同时在后续的计算时应该给*p减去48。
n = n * 10 + (*p - 48);
另外发现一个问题,在建立数组arr时,已经定义数组内有十个元素,故无法通过用sizeof计算数组长度来判断输入字符串长度。至于如何用sizeof来计算输入字符串长度,我还没有想到,等待后续补充,欢迎大家评论补充。