输入一串字符和一个正整数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);
}
高手啊,佩服佩服!
怎么没输入k