C语言编写凯撒加密(简单版的),网上搜到的那个大哥200多行代码用不着……

已知的最古老的一种加密算法技术是凯撒加密。该方法把一条消息中的每个字母用字母表中固定距离之后的那个字母来替代。(如果越过Z,会绕回到字母表的起始位置。例如,如果每个字母都... 已知的最古老的一种加密算法技术是凯撒加密。该方法把一条消息中的每个字母用字母表中固定距离之后的那个字母来替代。(如果越过Z,会绕回到字母表的起始位置。例如,如果每个字母都用字母表中两个位置之后的字母代替,那么Y就被替为A, Z就被替为B.)编写程序用凯撒加密算法对消息进行加密。用户输入待加密的消息和移位计数(字母移动的位置数目):
输入待加密的消息:Go ahead, make my day.
输入移位数:3
加密后的消息: Jr dkhdg, pdnh pb gdb.
注意:当用户输入26与移位计数的差值时,程序可以对消息进行解密:
输入待解密的消息: Jr dkhdg, pdnh pb gdb.
输入移位数:23
加密后的消息: Go ahead, make my day.
可以假定消息的长度不超过80个字符。不是字母的那些字符不要改动。此外,加密时不要改变字母的大小写。
提示:为解决前面的绕回问题,要以用表达式((ch-'A')+n)%26+'A'计算大写字母的密码,其中ch存储字母,n存储移位计数。(小写字母也需要一个类似的表达式。)
展开
 我来答
ls_985
推荐于2017-12-15 · TA获得超过244个赞
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:225万
展开全部
#include<ctype.h>

int jiami(char str[],int len)
{
for(int i=0;i<len;i++)
{
if(!isalpha(str[i]))// 判断是否为字符
{
str[i]=str[i]+3;
if(str[i]>'Z'&&str[i]<'a')str[i]=str[i]-'Z'+'A'-1;//控制X,Y,Z回到A,B,C
if(str[i]>'z')str[i]=str[i]-'z'+'a'-1;//控制x,y,z回到a,b,c
}
}
return 1;
}

这是我写的,已经可以用了,你试试
更多追问追答
追问
ctype salpha是什么意思?
追答
ctype是处理字符用的头文件,应为后面我使用了isalpha()函数,所以需要这个头文件!该函数的意思是判断a[i]是不是字母
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ln7xs
2018-12-07
知道答主
回答量:1
采纳率:0%
帮助的人:787
展开全部

#include <stdio.h>

#include<ctype.h>

#define N 40

int read_line(char sen1[], int n);

void encrypt(char sen1[], char sen2[], int i, int n);

void print_arr(char sen[], int i);

int main() {

char sen1[N], sen2[N];

int i;

i = read_line(sen1, N);

print_arr(sen1, i);

encrypt(sen1, sen2, i, 3);

print_arr(sen2, i);

}

int read_line(char sen1[], int n) {

char ch;

int i;

for(i = 0; i < n-1; i++){

ch = getchar();

if (ch != '\n') {

sen1[i] = ch;

}

else break;

}

return i-1;

sen1[i] = '\0';

}

void encrypt(char sen1[], char sen2[], int i, int n) {

int j;

for (j = 0; j <= i; j++) {

if (islower(sen1[j]))

sen2[j] = 'a' + (sen1[j] - 'a' + n) % 26;

else if (isupper(sen1[j]))

sen2[j] = 'A' + (sen1[j] - 'A' + n) % 26;

else sen2[j] = sen1[j];

}

}

void print_arr(char sen[], int i) {

int j;

for (j = 0; j <= i; j++) {

printf("%c", sen[j]);

}

printf("\n");

}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dycg521
2012-10-02
知道答主
回答量:30
采纳率:0%
帮助的人:4.5万
展开全部
嵌入式、 应该是Z变A Y变B吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式