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

原创 2004年07月17日 15:19:00

//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;
}

全国计算机等级考试二级Java笔试题知识点

1.栈:先进后出。栈是限定在表的一端进行插入和删除操作的线性表,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。 2.        队列:先进先出。 3.     ...
  • qq_14985223
  • qq_14985223
  • 2014年11月07日 22:21
  • 1643

字符串变换

题目描述 现有一个字典,同时给定字典中的两个字符串s和t,给定一个变换,每次可以改变字符串中的任意一个字符,请设计一个算法,计算由s变换到t所需的最少步数,同时需要满足在变换过程中的每个串都...
  • wzhwhust
  • wzhwhust
  • 2016年07月20日 21:13
  • 519

浪潮笔试

12月12日下午2点开始笔试的,先填写了一份浪潮的职位申请表,很多与我简历中的内容都重复,所以填写的有些不耐烦,后面几项还有点意思。是否可以外驻:可以是否服从岗位分配:否期望月薪:3000在进考场之前...
  • bingdian37
  • bingdian37
  • 2006年12月18日 19:43
  • 2311

C语言学习 编程经典例题(近年二级编程题真题)

1,201603编程题 编函数fun()实现:移动一位数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p...
  • FunkyFrog821951259
  • FunkyFrog821951259
  • 2016年09月25日 19:12
  • 304

C语言经典69题(又易到难)每日更新5道题

/* 第一题C语言第一个程序,使用C语言编写程序,在屏幕上输出“hello world” #include int main() { printf("hello world!\n"); ...
  • dai_wen
  • dai_wen
  • 2017年09月24日 19:13
  • 209

计算机二级考试中的几道题目

1:从键盘输入5个数,输入最大数,和最小数。2:编写程序,计算200到700之间所有能被11整除的奇数之和。3从键盘接受一个字符串,统计其中小写字母的个数,4:一个素数加上1000以后是37的倍数,输...
  • owldestiny
  • owldestiny
  • 2011年03月16日 12:49
  • 1514

好像是腾讯的几道题

1.10亿个int 数,找出top100万大的数.. 2.a[] b[] c[]三个数组,找出共同的数 3 类似非诚勿扰..每个男嘉宾对每个女嘉宾有不同的好感度,同样每个女嘉宾对每个男嘉宾也有不同...
  • Challenge_C_PlusPlus
  • Challenge_C_PlusPlus
  • 2011年09月05日 22:16
  • 507

字符变换

题目描述 输入一个字符串,将其中大写字母转换为对应小写字母之后的第五个字母,若原始大写字母为V~Z, 则转换为对应小写字母的值减21。其他字符不变,输出转换后的字符串。 例如,对于字母A,则转换为小...
  • u011190556
  • u011190556
  • 2013年09月08日 21:11
  • 580

二级C语言常见易错题

1.         数据溢出 int a = 32767; a = a + 1; 此时a的值为 –32768 2.         (-1)&&(-1) 值为:1 非0的数,逻辑...
  • douyuhua0918
  • douyuhua0918
  • 2012年03月20日 20:08
  • 1352

杂谈:关于计算机等级考试二级评分标准

考题题型: 计算机二级现在实行的是无纸化考试, 40分选择题+60分程序题。 其中选择题是40道单项选择题, 程序题(上机题)包括程序填空题(18分)、程序改错题(18分)、程序设计题(24分...
  • u013174689
  • u013174689
  • 2014年03月05日 13:36
  • 5784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符变换(好像是二级的题)?
举报原因:
原因补充:

(最多只允许输入30个字)