GYP123 @ 2022-04-18 21:36:55
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char a[50];
int i,j,n,m;
scanf("%d",&n);
scanf("%s",a);
m=strlen(a);
for(i=0;i<m;i++)
{
if(a[i]>='a' && a[i]<'z'-n)
{
a[i]+=n;
}
else if(a[i]='z'-n)
{
a[i]='a'+n;
}
}
puts(a);
return 0;
}
by LYqwq @ 2022-04-18 21:45:49
else if(a[i]='z'-n)
是否缺了个=
(
还有,a
数组建议开大点,数据范围+5或+10都行
by GYP123 @ 2022-04-18 22:12:50
@LYqwq 改了哦还是40分
by 编码落寞 @ 2022-04-19 08:27:35
@GYP123
n可能很大,所以需要取模。 编程n%26
by GYP123 @ 2022-04-19 17:00:53
@编码落寞 取了还是40分
by 编码落寞 @ 2022-04-20 08:08:20
@GYP123
你需要考虑这种情况 如果此时输入为z,那么加1,此时需要变为a,而不是ASCII加1
by GYP123 @ 2022-04-24 17:42:59
@编码落寞 你好,代码修改后得分80,求助
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
//对字符串向后取n个大小,n若大于26,取余
//若加的字母大于'z'的处理:我是两个if(a[i]>='a'&&a[i]-n<='z'),在字母内,外else{a[i]=n-z-a[i]+'a' }
int main()
{
int n,p,i;
char a[55];
scanf("%d",&n);
n=n%26;
scanf("%s",a);
p=strlen(a);
for(i=0;i<p;i++)
{
if(a[i]>='a'&&a[i]-n<='z')
{
a[i]=a[i]+n;
}
else
{
a[i]=n-('z'+a[i])+'a';
}
}
printf("%s",a);
return 0;
}
by 编码落寞 @ 2022-04-25 08:26:15
@GYP123
a[i]=n-('z'+a[i])+'a';
你这里应该处理有点问题。不用那么麻烦
a[i]=a[i]+n-26;