>>268
offsset は -26 〜 26、入力文字 in の範囲チェックはどっかでやっておく

int offset = 3;
char in, en, de;

in = getchar();

/* 暗号化 */
en = (in - 'a' + offset + 26) % 26 + 'a';

/* 復号 */
de = (en - 'a' - offset + 26) % 26 + 'a';

printf("入力文字 = %c\n暗号化された文字 = %c\n復号された文字 = %c\n", in, en, de);