/* 记录一下,虽然只是一道水题~~*/
题面:
单点时限: 2.0 sec
内存限制: 256 MB
现在的 sunny 供职与一家大公司,但是 sunny 的工作方式与常人不一样,由于公司之间通信为了保密,都采取了加密措施,所以他的工作就是为公司把信加密发送出去 ! 时久 sunny 发现实在太无聊,所以他让编程高手的你帮他写一个程序,自动加密!
信的加解密规则如下:每封信只由小写字母 (a−z) 组成,每个字母有一个唯一的两位数字对应 (01−26)。每封信的密文只是简单的把每个字母替换成他对应的数字,比如,t 对应的数字是 20,e 对应的数字是 05,s 对应的数字是 19,如果信的内是 test,那么对应的密文就是 20051920。
输入格式
第一行一个数字 T(0<T⩽200), 表示有 T 组测试数据!
对于每组测试数据,输入只有一行,为一个只由小写字母组成的字符串 message,为信的内容,长度小于 100.
输出格式
对于明文,输出对应的密文!
样例:
input |
---|
2 |
abcdefghigklmnopqrstuvwxyz |
test |
output |
0102030405060708090711121314151617181920212223242526 |
20051920 |
想法1:
直接大量使用if判断整个字符串的每一个字符,输入对应的数字,这种方法很笨,但是相应的也有效,就是会写一大串,还要判断小于10的情况(即添0的问题)和最后一个字符串后面的换行符。。。。。。总之影响心情~~
代码就不粘贴了~~
反正我是不会写的,芜湖~~
想法2:
将每个字符串对应的ASCII码减去96(因为从a到z的ASCII码是97到122)输出即可,这样可以少判断很多~~
代码如下(C代码):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int t,i;
scanf("%d",&t);
getchar();
for(i=0;i<t;i++){
char mess[101];
int j;
scanf("%s",mess);
getchar();
int len=strlen(mess);
for(j=0;j<len;j++){
if(j<len-1){
if(mess[j]-96<10){
printf("0%d",mess[j]-96);
}
else{
printf("%d",mess[j]-96);
}
}
else{
if(mess[j]-96<10){
printf("0%d\n",mess[j]-96);
}
else{
printf("%d\n",mess[j]-96);
}
}
}
}
return 0;
}
总结:
比较水的一题,只要读懂了题目就可以写出来,不用动太多脑筋,也就只有我这种小菜鸡才会记录(也因为是第一次写,有不够好的地方欢迎指正~~)。。。。。。但是像从方法1到方法2的思考过程也正是我们所需要学习的地方,代码也需要简洁,总之希望自己之后可以做得更好吧。