Phenothalin @ 2017-08-28 21:58:30
#include<iostream>
#include<cstring>
using namespace std;
char bala(char a,int n)
{
a+=n;
if(a>122) a-=26;
a=char(a);
return a;
}
int main()
{
char a[1000];
int n;
cin>>n>>a;
for(int i=0;i<=strlen(a)-1;i++)
{
a[i]=bala(a[i],n);
}
cout<<a;
return 0;
}
哪里的问题???? 听说ASCII只能到z后五位??
但是我int转换了啊??
char的时候不会超啊??
但是比较小的数的确行??
懵逼。。
大佬救我。。。
by ezоixx130 @ 2017-08-28 22:08:30
char bala(char a,int n)
{
if(int(a)+n>122) a-=26;
a+=n;
a=char(a);
return a;
}
by Windows_XP @ 2017-08-28 22:23:22
为什么要a = (char)a。。
by Windows_XP @ 2017-08-28 22:24:55
#include <bits/stdc++.h>
using namespace std;
int main(){
int n; char c; cin>>n; n%=26;
while(scanf("%c",&c)!=EOF) if(c>='a' && c<='z') cout<<(char)((c-'a'+n)%('z'-'a'+1)+'a');
return 0;
}
//我及其随意的贴了个代码
by Windows_XP @ 2017-08-28 22:26:42
减去a再膜26再加上a就行了(脑残少写一行)
by Phenothalin @ 2017-08-29 14:54:02
@WindowsXP456
大佬写的看不懂hhhh(捂脸笑哭)。。
我还只是一个学了一个周的蒟蒻。。。hhh
by Windows_XP @ 2017-08-30 13:16:30
@Phenothalin
如果你看不懂代码也可以不看。。。
设一个字母为 zimu(hhh) 我们设这个 zimu 的ascii码等于 'a'+x 显然 x>=0&&x<26,我们移动的相当于是x,当x=25时zimu=='z',当x==26时,应该让x等于0。
所以我们先把 (int)zimu -='a',再膜26,再加上'a'。操作起来就是(c-'a'+n)%('z'-'a'+1(加一是非常必要的))+'a'。
by Phenothalin @ 2017-08-30 13:24:57
@WindowsXP456 、
大佬……大佬…………
明白了……
不过新手村的题依旧都不会………………没有会的……
by Windows_XP @ 2017-08-30 22:11:07
@Phenothalin
不会你就看题解,如果不懂你就抄题解,抄了一遍如果还是不懂就再抄一遍,如果还是不懂就再抄一遍,你一直抄下去,总有一年你将会懂,加油。(hhh)