/*********************************************************************************
以下为本人的基础测试题,所表答案为我的答案,分析也是自己的理解,如有不对,还望指正。
**********************************************************************************/
编程题1:
编程实现对键盘输入的英文名句子进行加密。用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。比如245a95n加密后是245bcd95opq。
我的实现:
- #include <stdio.h>
- #include <string.h>
- #define MAX 100
- int main(){
- char a[MAX];
- int i,len;
- scanf("%s", a);
- len=strlen(a);
- for (i = 0; i < len; i++){
- if ((a[i] <= 'Z' && a[i] >= 'A') || (a[i] <= 'z' && a[i] >= 'a')){
- printf("%c%c%c", a[i] + 1, a[i] + 2, a[i] + 3);
- }
- else{
- printf("%c", a[i]);
- }
- }
- printf("\n");
- return 0;
- }
复制代码 此题我比较偷懒,默认了输入的字符串中没有空格和回车,严格应该用gets获得所有的字符,然后保存在个字符数组里。实现更简单,直接通过一个循环,扫描每个字符,为字母就输出ascII表后三位的数值,由于我懒,所以我是一边扫一边输出,感觉存到一个新的数组一次性输出更好。还是由于我懒,我没有做xyz的边界检测,也就是说当输入的字符串中出现'x','y','z',的时候我这段码的输出的就会混进一些奇怪的字符。大家可能会说这是很严重的错误,你怎么能因为懒就不做呢?事实是我忘了,因为感觉题目太简单,所以写完也没测试(因为是记事本写的),提交上去的就是这个版本,真实地展现在了大家面前,而这个问题,我也是现在刚刚才发现的。看官们请轻喷。有什么问题欢迎大家一起讨论。
|
|