对C语言islower、isupper、isdigit函数的测试

今天朋友问起了这三个函数,我就帮忙测试了下,测试后发现谭浩强第四版课本附录上上讲的不是很严谨.

我们先看下这三个函数介绍:

谭浩强第四版课本附录第396页上这样介绍:

函数名 函数原型 功能 返回值 包含文件
islower   
int islower(int ch); 检查ch是否是小写字母(a-z) 是则返回1;不是返回0 ctype.h
isupper
int isupper(int ch); 检查ch是否是大写字母(A-Z) 是则返回1;不是返回0 ctype.h
isdigit int isdigit(int ch); 检查ch是否是数字(0-9) 是则返回1;不是返回0 ctype.h

百度百科这样介绍:

函数名 函数原型 功能 返回值 包含文件
islower   
int islower(int ch); 检查ch是否是小写字母(a-z) 是则返回TRUE,否则返回NULL(0)。 ctype.h
isupper
int isupper(int ch); 检查ch是否是大写字母(A-Z) 是则返回非零值,否则返回零 ctype.h
isdigit int isdigit(int ch); 检查ch是否是数字(0-9) 是则返回TRUE,否则返回NULL(0)。 ctype.h

而我的测试结果:

函数名 函数原型 功能 返回值 包含文件
islower   
int islower(int ch);

检查ch是否是小写字母

(a-z)

vc++6.0是小写字母则返回2,

否则返回NULL(0)。

 

codeblocks是小写字母则返回2,

 否则返回NULL(0)。

 

TC是小写字母则返回8,

否则其他返回0

ctype.h
isupper

int isupper(int ch);

检查ch是否是大写字母

(A-Z)

 vc++6.0大写字母是则返回1,

否则返回NULL(0)。

 

codeblocks是则返回0,

否则小写字母返回2,

数字返回0,特殊符号返回0

 

TC是大写字母则返回4,

否则小写字母返回0,

数字返回0 特殊符号返回0

ctype.h
isdigit int isdigit(int ch); 检查ch是否是数字(0-9)

VC++6.0是数字则返回4,

否则返回NULL(0)。

 

codeblocks是数字则返回0,

否则小写字母返回2

,大写字母返回0,

特殊符号返回0

 

TC是数字则返回2,

否则大写字母返回0,

小写字母返回0

特殊符号返回0

ctype.h

测试数据:

百度上说:int islower(int c)函数判断是否是小写字母,是则返回true,否则返回0,

谭浩强书上说 int islower(int c)函数判断是否是小写字母,是则返回1,否则返回0,

而我使用 VC++6.0测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0.

        codeblocks测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0.

        TC编译器测试结果显示:int islower(int c)函数判断是否是小写字母,是则返回8,否则返回0.

测试代码如下:

/*************

测试环境:VC++6.0

测试人:星云

测试时间:2015-1-10

***************/
#include<stdio.h>
#include<ctype.h>
int main()
{
    char b;
    int a;
    printf("请输入第一个字符:");    
    scanf("%c",&b);
    a=islower(b);//判断是否是小写字母,是则返回true,否则返回0
  // VC++6.0测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0.

  //codeblocks测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0.

  //TC编译器测试结果显示:int islower(int c)函数判断是否是小写字母,是则返回8,否则返回0.
    printf("%d\n",a);
    return 0;
}

 VC++6.0程序截图:

codeblocks程序截图:

 

TC编译器程序截图:

 

posted @ 2015-01-10 23:11  技术宅星云  阅读(2542)  评论(4编辑  收藏  举报