标题:函数题看你们了
只看楼主
秃头大凡
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-10-28
结帖率:50%
 问题点数:0 回复次数:3 
函数题看你们了
C语言标准函数库中包括 isdigit 函数,用于判断数字字符。作为练习,我们自己编写一个功能与之相同的函数。

函数原型
int IsDigit(char x);
说明:参数 x 是字符的 ASCII 码。若 x 是数字字符的 ASCII 码,则函数值为 1 (真),否则为 0 (假)。

裁判程序
#include <stdio.h>

int IsDigit(char x);

int main()
{
    char c;
    c = getchar();
    if (IsDigit(c))
    {
        putchar('Y');
    }
    else
    {
        putchar('N');
    }
    putchar('\n');
    return 0;
}

/* 你提交的代码将被嵌在这里 */
输入样例1
8
输出样例1
Y
输入样例2
W
输出样例2
N
搜索更多相关主题的帖子: 字符 int isdigit putchar 函数 
2021-11-23 19:33
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
程序代码:
int IsDigit(char x)
{
    return x>='0' && x<='9';
}
2021-11-24 09:43
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
得分:0 
程序代码:
#define _UPPER          0x1     /* upper case letter */
#define _LOWER          0x2     /* lower case letter */
#define _DIGIT          0x4     /* digit[0-9] */
#define _SPACE          0x8     /* tab, carriage return, newline, */
                                /* vertical tab or form feed */
#define _PUNCT          0x10    /* punctuation character */
#define _CONTROL        0x20    /* control character */
#define _BLANK          0x40    /* space char */
#define _HEX            0x80    /* hexadecimal digit */

const int maskTable[] = 
{
    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x20, 0x20,
    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
    0x48, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
    0x84, 0x84, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    0x10, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x01,
    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
    0x01, 0x01, 0x01, 0x10, 0x10, 0x10, 0x10, 0x10,
    0x10, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x02,
    0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
    0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
    0x02, 0x02, 0x02, 0x10, 0x10, 0x10, 0x10, 0x20,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

int isupper(unsigned char c)
{
    return maskTable[c] & _UPPER;
}

int islower(unsigned char c)
{
    return maskTable[c] & _LOWER;
}

int isdigit(unsigned char c)
{
    return maskTable[c] & _DIGIT;
}

int isspace(unsigned char c)
{
    return maskTable[c] & _SPACE;
}

#include <stdio.h>
void main()
{
    printf("%d\n", isdigit(3));
    printf("%d\n", isdigit('3'));
}
2021-11-24 12:02
op123
Rank: 6Rank: 6
等 级:贵宾
威 望:21
帖 子:170
专家分:461
注 册:2022-6-4
得分:0 
bool IsDigit(int c){
    return IsDigit(c);
}
2022-06-27 20:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507619-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.354904 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved