字符变换(好像是二级的题)?

//isalpha和isupper函数是标准库函数,其的简要功能如下:
int islower(int c)
{
    return 'a' <= c && c <= 'z';
}
int isupper(int c)
{
    return 'A' <= c && c <= 'Z';
}
int isalpha(int c)
{
    return islower(c) || isupper(c);
}

//testXXXX函数是测试用例.
////////////////////////////////////////////////////////////////
#include <assert.h>
#include <ctype.h>
#include <stdio.h>

char Postpone(char orig, int distance)
{
    //不处理非字母
    if (isalpha(orig) == 0)
    {
        return orig;
    }

    int d = distance % 26;
    char top = (isupper(orig) ? 'Z' : 'z') - d;

    //隐含orig < base + 4, 因为isalpha(orig)
    if (orig > top)
    {
        d -= 26;
    }

#ifndef NDEBUG
    printf("if '%c'[%3d] > '%c'[%3d] then put off %3d get %c[%3d]n", orig, orig, top, top, d, orig + d, orig + d);
#endif
    return orig + d;
}
void testPostponeNoneAlpha()
{
    assert(Postpone(' ', 4) == ' ');
    assert(Postpone('_', 4) == '_');
    assert(Postpone('~', 4) == '~');
}

void testPostpone4Letter()
{
    assert(Postpone('A', 4) == 'E');
    assert(Postpone('a', 4) == 'e');

    assert(Postpone('V', 4) == 'Z');
    assert(Postpone('v', 4) == 'z');

    assert(Postpone('W', 4) == 'A');
    assert(Postpone('w', 4) == 'a');

    assert(Postpone('Z', 4) == 'D');
    assert(Postpone('z', 4) == 'd');
}

void testPostpone0Letter()
{
    assert(Postpone('V', 0) == 'V');
    assert(Postpone('v', 0) == 'v');

    assert(Postpone('W', 0) == 'W');
    assert(Postpone('w', 0) == 'w');

    assert(Postpone('Z', 0) == 'Z');
    assert(Postpone('z', 0) == 'z');
}

int main()
{
    testPostponeNoneAlpha()
    testPostpone4Letter();
    testPostpone0Letter();
    return 0;
}

阅读更多
文章标签: distance c 测试
想对作者说点什么? 我来说一句

c语言 二级题目 100道

2008年11月27日 3.29MB 下载

cfa二级金程内部资料

2010年09月15日 90KB 下载

cfa二级金程付费内部资料

2010年09月15日 141KB 下载

计算机二级二叉树试题专题

2010年03月29日 164KB 下载

西华大学校二级考题VB

2010年07月05日 1.08MB 下载

计算机二级公共基础题

2010年09月17日 4KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭