0
任务:凯撒算法(cipher(c))通过按键(k)位置“旋转”每个字母来加密消息。在保存案例的同时使用密钥加密文本?
实现:ci =(pi + k)mod26 其中ci是密码,pi是明文,k是密钥。
我的伪代码:从命令行参数
- 获取密钥。
- 将密钥(k)转换为整数。
- 为纯文本(PI)
- 每个纯文本字符,保存的情况下提示用户(使用因而isalpha,isupper和islower判断功能中C.
- 通过例如键明文字符最后转移 - “回家! “--- ”惠普Ipnf!“(如果密钥k = 1,并保留字母/小写,!仍为!)。** 我这个。
- 打印密文挣扎。
int main (int argc, string argv[]) //get key from command line argument
{
if (argc != 2 || atoi(argv[1]) < 0)
{
printf ("print valid key");
return 1;
}
int k = atoi(argv[1]);
string p = get_string(); //prompt for plaintext
for (int i=0, n = strlen(p); i < n; i++)
{ if (isalpha('p'))
{
if (isupper('p'))
{
printf ("%c", p[i]);
}
if (islower('p'))
{
printf ("%c", p[i]);
}
}
}
c[i]=(p[i]+k)%26;
printf ("%c", c[i]);
}
有没有问题在这里的某个地方? –
刚编辑我的问题。正如我在我的伪代码中提到的,我正在努力改变这些信件。 – Aakash
'c'是什么?它没有在这个范围内声明。你有正确的想法,但是当你'%26'结束时你会得到一个介于0到25之间的数字,这些大多数是不可打印的ASCII字符,你需要添加''a'或''A'到它让他们在字母表中。 –