EOJ 2442.sunny的密码

/* 记录一下,虽然只是一道水题~~*/

题面:

单点时限: 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的思考过程也正是我们所需要学习的地方,代码也需要简洁,总之希望自己之后可以做得更好吧。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值