#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'更好。 –