题目1105:字符串的反码

题目描述:

一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符‘a’的距离与它的反码和字符‘z’的距离相同;如果是一个大写字符,则它和字符‘A’的距离与它的反码和字符‘Z’的距离相同;如果不是上面两种情况,它的反码就是它自身。

举几个例子,‘a’的反码是‘z’;‘c’的反码是‘x’;‘W’的反码是‘D’;‘1’的反码还是‘1’;‘$‘的反码还是‘$‘。
    一个字符串的反码定义为其所有字符的反码。我们的任务就是计算出给定字符串的反码。

输入:

输入每行都是一个字符串,字符串长度不超过 80 个字符。如果输入只有!,表示输入结束,不需要处理。

输出:

对于输入的每个字符串,输出其反码,每个数据占一行。

样例输入:
Hello
JLU-CCST-2011
!
样例输出:
Svool
QOF-XXHG-2011

这道题得用gets()读入,不然Presentation Error
 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <cmath>
 6 #define MAX 102
 7
 8 char toDeal[MAX];
 9 int main(int argc, char const *argv[])
10 {
11     int n, m, k;
12     //freopen("input.txt","r",stdin);
13     gets(toDeal);
14     while(strcmp(toDeal, "!") != 0) {
15        for(int i = 0; i < strlen(toDeal); i++) {
16           if(toDeal[i] >= ‘a‘ && toDeal[i] <= ‘z‘) {
17               printf("%c", ‘a‘ + ‘z‘ - toDeal[i]);
18           }
19           else if(toDeal[i] >= ‘A‘ && toDeal[i] <= ‘Z‘) {
20               printf("%c", ‘A‘ + ‘Z‘ - toDeal[i]);
21           }
22           else {
23               printf("%c", toDeal[i]);
24           }
25        }
26        puts("");
27        gets(toDeal);
28     }
29     return 0;
30 }

时间: 2024-08-05 03:58:08

题目1105:字符串的反码的相关文章

【编程题目】字符串的排列(字符串)★

53.字符串的排列(字符串).题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串 abc,则输出由字符 a.b.c 所能排列出来的所有字符串abc.acb.bac.bca.cab 和 cba. 这道题花了我一天,要好好总结! 思路:这道题目感觉有些难,主要是字符串中的字符可能会有重复.我的想法是把一共有多少种字符和每种字符出现的次数统计出来,每个位置对这些字符变量,下一个位置的可用字符减小,再遍历. /* 53.字符串的排列(字符串). 题目:输入一个字符串,打印出该字符串中字

微软2014编程之美初赛第二场——题目2 : 字符串压缩

[来源] 题目2 : 字符串压缩 [分析] 把游程编码恢复为原始字符串,然后得出每一行的字符串的内容,放在一个vector中.用map统计vector中每一行的反复的次数. 比較两个游程编码得到的map是否同样就可以. 该算法占用空间太多,小数据AC,大数据MLE了. [代码] #include <iostream> #include <string> #include <vector> #include <map> #include <sstream

剑指Offer题目:字符串的排列

题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 题目分析: 最简单的是使用字典序生成法,这样可以把有重复字符串的情况也考虑进去. Java实现代码: import java.util.ArrayList; import java.util.Arrays; public class Solution { private ArrayList<String> r

NYOJ 题目915 +-字符串

题目描述: Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换.他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串.你现在要去帮助他完成那个这个问题 输入 多组测试数据 每组数据有两行,每行包含一个由"+"和"-"最成的字符串.每个子符串长度不超过5000. 输出 仅一个整数,输出最少需要操作的次数.如果答案不存在,输出-1. 样例输入 ++-+--+ -++--++ 样例输出 4 #include&

POJ 题目1105 S-Trees(二叉树模拟)

S-Trees Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1499   Accepted: 807 Description A Strange Tree (S-tree) over the variable set Xn = {x1,x2,...,xn} is a binary tree representing a Boolean function f:{0,1}->{0,1}. Each path of the

题目:字符串转整数

这个问题解答的思路跟上个翻转整数一样,都是通过long long类型存储一个结果字符串,然后返回int区域内大小的数字. 这道题我出了好几次问题,后来才发现是因为没有仔细读题,题目只说了去除刚开始遇到的空格而我去除全部了. 我写出的正确的代码如下(效率超过了100%): static const auto io_speed_up = []() { std::ios::sync_with_stdio(false); cin.tie(nullptr); return 0; }(); class So

NYOJ题目113字符串替换

-------------------------------------- 二连水. AC代码: 1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 5 public class Main { 6 7 public static void main(String[] args) throws IOException { 8 9 BufferedR

题目5 字符串内排序

1 import java.util.Arrays; 2 import java.util.Comparator; 3 import java.util.Scanner; 4 5 public class Main{ 6 public static void main(String[]args){ 7 Scanner in=new Scanner(System.in); 8 while(in.hasNext()){ 9 String input=in.nextLine(); 10 char[]

ACM俱乐部 字符串

数制转换分数: 2 时间限制:1 秒 内存限制:32 兆 特殊判题: 否 提交:59 解决: 24 标签 进制转换 题目描述 求任意两个不同进制非负整数的转换(2进制-16进制),所给整数在long所能表达的范围之内.不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F). 输入格式 输入只有一行,包含三个整数a,n,b.a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数.a,b是十进制整数,2 =< a,b <= 16.