轻院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;
} 


posted @ 2017-10-13 19:42  moonlight987  阅读(288)  评论(0编辑  收藏  举报