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

原创 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
  • 1556

二级指针的问题汇总

二级指针的问题标签(空格分隔): c如何在被调用函数里面新建数据,然后将数据的地址传递出来呢?一般来说有两种方法,第一种思路是将数据的首地址以返回值的方法返回,第一种方法如下:#include #i...
  • lishuhuakai
  • lishuhuakai
  • 2015年05月18日 00:23
  • 2799

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

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

matlab小知识点(一)转换字符等

matlab小知识点(一)转换字符等 字符串转换函数 abs          字符串到ASCII转换 dec2hex      十进制数到十六进制字符串转换 fprintf      把格式化的...
  • fangjin_kl
  • fangjin_kl
  • 2015年05月25日 19:34
  • 626

C——提高(2)字符串一级指针、二级指针内存模型

字符串一级指针C语言里没有实质的字符串类型,通过字符数组来模拟。 C语言的字符串是以0结尾的字符串。 C语言字符串的内存分配 可以分配在堆上、栈上、全局区上。1、字符串一级指针内存模型buf数组与...
  • wuseyukui
  • wuseyukui
  • 2015年12月16日 22:39
  • 1501

经典算法面试题目-替换字符串的内容(1.5)

题目Write a method to replace all spaces in a string with ‘%20’.写一个函数,把字符串中所有的空格替换为%20 。解答简单题(有2种方法,一种...
  • qq_26525215
  • qq_26525215
  • 2016年07月27日 22:32
  • 11333

霍夫变换-----特征提取

霍夫变换:从黑白图像中检测直线和曲线。 优点:对数据的不完全或噪声不是非常敏感。 首先对图像进行边缘检测的处理,即霍夫线变换的直接输入只能是边缘二值图像。 多尺度霍夫变换(MSHT)是经典霍夫变换(标...
  • m0_37264397
  • m0_37264397
  • 2017年05月25日 15:02
  • 532

2016年计算机二级《C语言》基础练习题及答案

2016年计算机二级《C语言》基础练习题及答案(11)      1[单选题] 有以下程序:   以上程序执行后abc.dat文件的内容是( )。   A.China   B.Chinan...
  • hubeitmkk
  • hubeitmkk
  • 2016年02月07日 19:48
  • 679

华为机试题(替换字符串)——Java解法

package com.abuge; import java.io.IOException; import java.io.InputStream; /** * 题目要求:输入一个字符串,然后再输...
  • hxysea
  • hxysea
  • 2014年07月29日 22:06
  • 588

字符串方面的几道简单算法题

字符串问题,也是笔试面试的重头戏,可以考察很多方面,比如思路,比如基础的算法。温故而知新,今天整理了几道有关字符串的简单算法题,解法如下代码所示。不对之处,欢迎大家批评指正。 package Ch...
  • u010589037
  • u010589037
  • 2016年07月31日 17:55
  • 1142
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符变换(好像是二级的题)?
举报原因:
原因补充:

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