轻院1077字符串加密
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; }