输入一串字符和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。加密思想:将

输入一串字符和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。加密思想:将每个字母c加一个序数k,即用它后面的第k个字母代替,变换公式:c=c+k。如果字母为z,则后一个字母是a,也就是字母字符形成一个圆。先输字符串后输入k的值

main()

{

 char s[200];

 int i,k;

 gets(s);

 scanf("%d",&k);

 for(i=0;i<strlen(s);i++)

 {

  if(s[i]>='a'&&s[i]<='z')

  {

   if(s[i]-'a'+k>25)s[i]=s[i]-26+k;

   else s[i]=s[i]+k;

  }

  else if(s[i]>='A'&&s[i]<='Z')

  {s[i]=s[i]+k;

   if(s[i]>'Z')s[i]=s[i]-26;}

}

puts(s);

}

追问

题目要求先输入k啊

追答

我看到的题目是:“输入一串字符和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。”

若要求“要求先输入k”,只要交换二个语句就成了啊:

main()
{
char s[200];
int i,k;
scanf("%d",&k);

gets(s);
for(i=0;i='a'&&s[i]25)s[i]=s[i]-26+k;
else s[i]=s[i]+k;
}
else if(s[i]>='A'&&s[i]'Z')s[i]=s[i]-26;}
}
puts(s);
}

追问

高手啊,佩服佩服!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-29
#include <stdio.h>
void main()
{
char a[100] = {0};
int i = 0;
gets(a);
while (a[i] != 0)
{
if ((a[i]>='a'&& a[i]<='z') || (a[i]>='A'&& a[i]<='Z'))//检测是否为英文字母
{
a[i] = a[i]-1;//这里有一点点小问题,如果字母为z的话,就有问题了,这里是加密
}
i++;
}
解密的话,就反过来就行
puts(a);望采纳追问

怎么没输入k

第2个回答  2013-11-29
#include<stdio.h> main(){ char s[]={""}; int i; gets(s); for (i=0;s[i]!='\0';i++){ if (s[i]>='a' && s[i]<='z
相似回答