Description
输入一串字符(长度不超过100)和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。加密思想:将每个字母c加一个序数k,即用它后面的第k个字母代替,变换公式:c=c+k。如果字母为z,则后一个字母是a,也就是字母字符形成一个圆。
Input
输入第一行是若干字符,以回车结束。输入第二行是一个整数k,k是int范围内的正整数;
Output
输出加密后的字符串。
Sample Input
12kjsdZjk280
Sample Output
12edmxTde
题意概括:输入一个字符串,输出对应的新的字符串
解题思路:找规律即可
错误原因:
1:最主要的WA的原因是忽略了空格也是字符串中字符的一种,一直使用scanf("%s"); 导致一直WA。最后改用了gets(a),才AC。
经验总结:
1:任何时候提到字符串,都要考虑空格的情况,千万不能忽略。。。。。切记切记!!
我的AC代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[105];
int k, len, i;
gets(a);
scanf("%d", &k);
len = strlen(a);
k = k %26;
for(i = 0; i <= len - 1; i ++)
{
if(a[i] >= 'a'&& a[i] <='z' || a[i] >= 'A' && a[i] <= 'Z')
{
if(a[i] >= 'a'&& a[i] <='z' && a[i] + k <= 'z')
{
a[i] +=k;
}
else if(a[i] >= 'A' && a[i] <= 'Z'&& a[i] +k <='Z')
{
a[i] +=k;
}
else
{
a[i] -= 26-k;
}
}
}
printf("%s\n", a);
return 0;
}