所以这是我为CS50Vigenère问题提供的解决方案;我对编程还很陌生,大概只有几个星期,所以我很抱歉我的代码形式。
这里的问题是输出不是我期望的那样。
示例:
./ vigenere ABC
输入:您好
输出:hfnLp
./ vigenere ABC
输入:HELLO
输出:HFN,P
./ vigenere培根
输入:上午11点在公园与我见面
输出:Neg zF av uf pCx bT gzrwEP OZ
(应该是“ Negh zf av huf pcfx bt gzrwep oz”)
我一无所知,因为它似乎在起作用,但是有些不正常。
我检查了几乎每一个我正在使用的整数,它们都按照我的意图工作。
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context mContext = v.getContext();
final Intent intent;
switch (getAdapterPostion()){
case 0:
intent = new Intent(context, FirstActivity.class);
break;
case 1:
intent = new Intent(context, SecondActivity.class);
break;
...
default:
intent = new Intent(context, DefaultActivity.class);
break;
}
mContext.startActivity(intent);
}
答案 0 :(得分:1)
在strlen(k)
迭代之后,isupper(k[j])
使用的索引超出k
的结尾。
您可以更改:
if (isupper(k[j]))
{
ci = 65;
}
else
{
ci = 97;
}
K = k[j % strlen(k)] - ci;
收件人:
K = toupper(k[j % strlen(k)]) - 'A';
(请注意,这依赖于C标准不能保证的属性,即字母的字符代码是连续的并且按字母顺序排列。)