写一个c语言函数判断char* p=”35.5“是实数还是整数,并给出测试代码
时间: 2024-09-23 09:10:05 浏览: 24
在C语言中,我们可以编写一个函数来检查字符串是否表示整数或浮点数。这里我们假设输入是一个只包含数字、小数点以及可能的正负号的字符串。以下是实现该功能的一个函数`isRealOrInteger`及其简单的测试代码:
```c
#include <stdio.h>
#include <ctype.h>
// 判断字符串是否表示实数或整数
int isRealOrInteger(char *p) {
int i = 0;
while (p[i] != '\0') {
if (!isdigit(p[i]) && p[i] != '.') { // 检查字符不是数字也不是小数点
return p[i] == '-' || p[i] == '+' ? 'invalid' : 'integer'; // 如果遇到非数字字符,返回'integer'或'invalid'
}
if (isdigit(p[i])) { // 如果是数字字符,继续检查下一个
continue;
} else if (i > 0 && p[i] == '.') { // 如果找到第一个小数点并且之前是数字
if (isdigit(p[i + 1])) { // 检查之后是否有更多数字
i++; // 进入小数部分
} else { // 小数点后无数字
return 'real';
}
}
i++;
}
return 'integer'; // 如果遍历完整个字符串都是数字,视为整数
}
// 测试代码
int main() {
char str1[] = "35";
char str2[] = "-35.5";
char str3[] = "35.";
char str4[] = "3.14";
char str5[] = "abc";
printf("str1: %s\nResult: %s\n", str1, isRealOrInteger(str1));
printf("str2: %s\nResult: %s\n", str2, isRealOrInteger(str2));
printf("str3: %s\nResult: %s\n", str3, isRealOrInteger(str3));
printf("str4: %s\nResult: %s\n", str4, isRealOrInteger(str4));
printf("str5: %s\nResult: %s\n", str5, isRealOrInteger(str5));
return 0;
}
```
这个测试代码会输出字符串对应的判断结果,比如"35"被视为整数,"-35.5"被视为实数等。