c_cpp CS50 vigenere.c
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp CS50 vigenere.c相关的知识,希望对你有一定的参考价值。
/**
* Eugenio Streliaev Filho
* geninhofloripa@hotmail.com
* vigenere.c
*/
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("usage: ./vigenere k\n");
return 1;
}
for (int i = 0, n = strlen(argv[1]); i < n; i++)
{
if (!isalpha(argv[1][i]))
{
printf("usage: ./vigenere k\n");
return 1;
}
}
printf("plaintext: ");
string p = get_string();
int text_size = strlen(p);
int k_size = strlen(argv[1]);
printf("ciphertext: ");
for (int i = 0, j = 0; i < text_size; i++)
{
if (isalpha(p[i]))
{
if (isupper(p[i]))
{
if (isupper(argv[1][j]))
{
printf("%c", 'A' + ((p[i] - 'A') + (argv[1][j % k_size] - 'A')) % 26);
j++;
}
else
{
printf("%c", 'A' + ((p[i] - 'A') + (argv[1][j % k_size] - 'a')) % 26);
j++;
}
}
else
{
if (isupper(argv[1][i]))
{
printf("%c", 'a' + ((p[i] - 'a') + (argv[1][j % k_size] - 'A')) % 26);
j++;
}
else
{
printf("%c", 'a' + ((p[i] - 'a') + (argv[1][j % k_size] - 'a')) % 26);
j++;
}
}
}
else
{
printf("%c", p[i]);
}
}
printf("\n");
return 0;
}
以上是关于c_cpp CS50 vigenere.c的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 vigenere.c 不工作?
c_cpp conditions.c#CS50
c_cpp answer.c#CS50
c_cpp C语言-CS520
c_cpp cs_stepper_01.ino
Vigenere密码[关闭]