基本上我必須創建一個凱撒密碼,它是完全取代每個字母給出的int'k'。這需要2個命令行參數:'./caesar'和'k',由用戶給出。它工作正常;但有一個問題:凱撒密碼重複字母
它加密「BARFOO」爲「EDUIRR」用3關鍵是正確 加密「BaRFoo」爲「FeVJss」使用4作爲正確
關鍵,但它不加密「barfoo」作爲「onesbb」使用65作爲關鍵字,它將其加密爲「oonneess | bb | bb」。
請注意標點符號;帽子等等。
看到問題在這裏?它也爲其他隨機單詞這樣做;它重複字母。幫我......
PS:我對編程非常陌生,因爲你可以在我的代碼中看到,所以請嘗試用英文解釋!
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, string argv[])
{
string s;
//int d;
int c;
int a;
if(argc != 2)
{
printf("Please run with a command line argument.");
return 1;
}
else
{
s = GetString();
}
int k = atoi(argv[1]);
for(int i = 0; i < strlen(s); i++)
{
a = s[i];
if(a<'A'||a>'z')
{
printf(" ");
}
else
{
if(a>='A'&&a<='Z')
{
c = a+k;
while(c>'Z')
{
c = 'A'+(c-'Z')-1;
printf("%c", c);
}
if(c<='Z')
{
printf("%c", c);
}
}
else if(a>-'a'&&a<='z')
{
c = a+k;
while(c>'z')
{
c = 'a'+(c-'z')-1;
printf("%c", c);
}
if(c<='z')
{
printf("%c", c);
}
}
}
}
printf("\n");
}
這是什麼:a> - 'a' –
幫我....確定!在您的調試器下運行您的代碼,並逐步處理失敗的案例。 –
你寫了「c = a + k;」如果k是1000,會發生什麼?如果你傳遞了多少個字母?你有%操作員使用它。 – JoulinRouge