问题描述 :
编写一个加密程序,用来加密一个字符串。加密规则如下:
把字符串中的所有数字0、1 … 9分别换成小写英文字母a、b … j。
把字符串中的所有小写英文字母a、b … j分别换成数字0、1 … 9。
其它字符保持不变。
输入说明 :
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组输入数据占一行,其中只包含一个字符串,即需要被加密的字符串。该字符串包含不超过100个字符,只包含可见的ASCII字符,并且不包含空格、制表符或换行符。在行首和行尾没有多余的空格;所有数据前后没有多余的空行;两组数据之间没有多余的空行。
输出说明 :
对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的文本终端,例如你在Windows中启动该程序所用的命令行终端)依次输出一组对应的答案。每组答案占一行,其中只包含一个字符串,即问题描述中的加密结果。在行首和行尾不要输出多余的空格;在所有数据前后不要输出多余的空行;在两组数据之间不要输出多余的空行
总结
1.郁闷死了,不知道为什么数字转成小写字母我用
str[i]+=49;
也就是利用整数和小写字母的ascll码之间的关系不行,
而小写字母转化成0-9就可以
str[i]-=49;
简直了!!!
2.这道题不难,就是用了很长时间才AC,加油,我太菜了。
#include <stdio.h>
#include <string.h>
#include<ctype.h>
int main(){
char str[101];
int i,len;
while(gets(str)){
len=strlen(str);
for( i=0;i<len;i++){
if(isdigit(str[i]))
str[i]=str[i]-'0'+'a';
else if(str[i]>='a'&&str[i]<='j')
str[i]=str[i]-'a'+'0';
putchar(str[i]);
}
printf("\n");
}
return 0;
}