Error_404 @ 2021-07-22 16:12:29
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int n;
cin>>n;
string pw;
char ps[51];
cin>>pw;
for(int i=0;i<=pw.length();i++)
{
for(int j=0;j<=26;j++)
{
if(pw[i]==a[j])
{
ps[i]=pw[i];
if(j+n<=26)
{
ps[i]=a[j+n];
}
else
{
ps[i]=a[j+n-26];
}
}
}
cout<<ps[i];
}
}
输入数据
1
z
输出结果
@
输入数据
4
werv
输出结果
@ivz
可见这个程序 -------把 a”变成“@”------- 了....
@的ASCII码和a的ASCII码差了不止一点点......
(诚恳)有大佬知道这个是什么吗?
还是我写错了?
by 君の名 @ 2021-07-22 16:15:58
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string a;
int main()
{
int n;
cin>>n;
cin>>a;
int m=a.size();
for(int i=0;i<m;i++)
{
for(int j=1;j<=n;j++)
{
a[i]++;
if(a[i]>'z')
a[i]='a';
}
}
cout<<a;
return 0;
}
by simple_dream @ 2021-07-22 16:17:34
把亿些小于等于改成小于就可以了
by 君の名 @ 2021-07-22 16:17:39
枚举容易出错,你得挨个儿判断
by Error_404 @ 2021-07-22 16:20:17
@W文韬武略W
已解决,感谢
不过:为什么?
by simple_dream @ 2021-07-22 16:20:26
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int n;
cin>>n;
string pw;
char ps[51];
cin>>pw;
// for(int i=0;i<pw.length();i++)
{
// for(int j=0;j<26;j++)
{
if(pw[i]==a[j])
{
ps[i]=pw[i];
// if(j+n<26)
{
ps[i]=a[j+n];
}
else
{
ps[i]=a[j+n-26];
}
}
}
cout<<ps[i];
}
}
by simple_dream @ 2021-07-22 16:28:21
因为数组是从0开始的,所以是0到25
而pw.length()
返回的是长度,是取不到的,应该是从 0 到 长度 - 1
语文不好,见谅
by Error_404 @ 2021-07-22 16:38:58
已解决,谢谢各位