#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define N 30
int main()
{ char c, y, input[N];
int X, i=0, j;
printf("Give displacement\n");
scanf("%d",&X);
printf("Give chars\n");
while(((c=getchar()) !=EOF) && (i<N-1)){
input[i]=c;
i++;
}
input[i]='\0';
j=0;
for(j=0; j<=i-1; j++){
if (isalpha(input[j])){
if (isupper(input[j]))
y=(input[j]-'A'+X)%26+'A';
else
y=(input[j]-'a'+X)%26+'A';
putchar(y);
}
}
return 0;
}
嘿所有。好吧,這段代碼似乎並不像它應該那樣工作。它在桌子上跳過2個位置而不是一個。這使得程序無法使用,因爲我需要一個包含30個職位的表格。我認爲問題出現在while循環中,但我真的無法找到它。任何幫助都會有所改觀。 在此先感謝。雖然循環表C
請更具體一些;根據我的猜測,這個程序運行正常,即當給定一堆字符和一個位移時,它會將相同的字符「向右移動」(凱撒的密碼)返回。 – szczurcio
只是一種風格nit-pick:對於(j = 0; j = i-1; j ++)'更容易被讀爲'for(j = 0; j
'char c' - >'int c'因爲這是函數'getchar()'返回類型,它必須區分(一般情況下) EOF'從'255'。因爲這是'putchar()'的參數類型,並且因爲''A''計算爲'int',所以變量'char y'也會比'int y'更好。 –