#include <stdio.h>
//凯撒加密向后偏移
#define MAXN 80
#define M 26
int main()
{
int i=0,offset;
char str[MAXN];
printf("Enetr string:");
while((str[i]=getchar())!='\n'){
i++;
}
str[i]='\0';
printf("Enter offset:");
scanf("%d",&offset);
if(offset>=M){
offset%=M;
}
for(i=0;str[i]!='\0';i++){
if(str[i]>='A' && str[i]<='Z'){
if(str[i]-'A'+offset>=M){
str[i]=str[i]-(M-offset);
}
else{
str[i]+=offset;
}
}
else if(str[i]>='a' && str[i]<='z'){
if(str[i]-'a'+offset>=M){
str[i]=str[i]-(M-offset);
}
else{
str[i]+=offset;
}
}
}printf("After result:");
for(i=0;str[i]!='\0';i++){
putchar(str[i]);
}
printf("\n");
return 0;
}
//凯撒密码向前偏移
#include <stdio.h>
#define MAXN 80
#define M 26
int main()
{
int i=0,offset;
char str[MAXN];
printf("Enetr string:");
while((str[i]=getchar())!='\n'){
i++;
}
str[i]='\0';
printf("Enter offset:");
scanf("%d",&offset);
if(offset>=M){
offset%=M;
}
for(i=0;str[i]!='\0';i++){
if(str[i]>='A' && str[i]<='Z'){
if(str[i]-'A'-offset<=0){
str[i]=str[i]+M-offset;
}
else{
str[i]-=offset;
}
}
else if(str[i]>='a' && str[i]<='z'){
if(str[i]-'a'-offset<=0){
str[i]=str[i]+M-offset;
}
else{
str[i]-=offset;
}
}
}printf("After result:");
for(i=0;str[i]!='\0';i++){
putchar(str[i]);
}
printf("\n");
return 0;
}
//使用凯撒密码进行向右偏移或者向左偏移
#include<stdio.h>
#define MAXN 80
#define M 26
#include <math.h>
int main()
{
int i=0,offset;
char str[MAXN];
printf("Enetr string:");
while((str[i]=getchar())!='\n'){
i++;
}
str[i]='\0';
printf("Enter offset:");
scanf("%d",&offset);
if(fabs(offset)>=M){
offset%=M;
}
for(i=0;str[i]!='\0';i++){
if(offset>=0){
if(str[i]>='A' && str[i]<='Z'){
if(str[i]-'A'+offset>=M){
str[i]=str[i]-(M-offset);
}
else{
str[i]+=offset;
}
}
else if(str[i]>='a' && str[i]<='z'){
if(str[i]-'a'+offset>=M){
str[i]=str[i]-(M-offset);
}
else{
str[i]+=offset;
}
}
}
else{
if(str[i]>='A' && str[i]<='Z'){
if(str[i]-'A'-fabs(offset)<=0){
str[i]=str[i]+M-fabs(offset);
}
else{
str[i]-=fabs(offset);
}
}
else if(str[i]>='a' && str[i]<='z'){
if(str[i]-'a'-fabs(offset)<=0){
str[i]=str[i]+M-fabs(offset);
}
else{
str[i]-=fabs(offset);
}
}
}
}printf("After result:");
for(i=0;str[i]!='\0';i++){
putchar(str[i]);
}
printf("\n");
return 0;
}