A. C语言凯撒加密是一种移位替代加密算法,即将字母表A-Z向左移位,然后用移位后的字母表替原来的明文得到密文
#include<iostream>
#include<string>
usingnamespacestd;
intmain()
{
stringcode;//储存初始字符串
stringd_code;//加密后的字符串
inti;
intn;//移位的个数
cout<<"Enterthestring"<<endl;
cin>>code;
cout<<"howmanystepdoyouwanttomove?"<<endl;
cin>>n;
for(i=0;i<code.size();++i)
{
if(int(code[i])>97)
{
if(int(code[i])+n>122)
d_code[i]=int(code[i])+n-26;
else
d_code[i]=int(code[i])+n;
}
elseif(int(code[i])+n>90)
d_code[i]=char(int(code[i])+n-26);
else
d_code[i]=char(int(code[i]+n));
}
for(i=0;i<code.size();++i)
{
cout<<d_code[i];
}
cout<<endl;
cout<<"Code="<<code<<endl;
return0;
}
B. 一个简单的加密算法:a加密成z,b加密成y,c加密成x。。。 我是个新手,我的程序哪里错了,求原因
switch(c[i]){
for(x1='a';x1<'n';x1=x1+1){
case x1 : y1=x1+(25-2*j);break;
}
default :printf("%c",c[i]);
}
这里有问题吧,switch...case语句中间是不能拆开的
C. c语言 a-z加密问题
假设原来的字符串数组中的元素为ch1,加密后的字符为ch2可以看出加密的过程是比原来的字符多3,可以采用取模运算进行循环,即Z之后可以用同样的方式计算到A,公式:ch2=ch1%26+3;其他加密计算方式相同
D. c++密码加密算法
加密解密是一样的,都可用以下程序:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
int i=0;
char MingText[1024], MiText[1024];
printf("请输入明文:");
gets(MingText);
while(MingText[i])
{
if(isupper(MingText[i]))
{
MiText[i]='Z'-(MingText[i]-'A');
}
else if(islower(MingText[i]))
{
MiText[i]='z'-(MingText[i]-'a');
}
else MiText[i]=MingText[i];
i++;
}
MiText[i]=0;
printf("密文为:");
puts(MiText);
return 0;
}
E. 用c语言设计了一个加密算法:用a代替z,用b代替y,用c代替x,……,用z代替a。
#include <stdio.h>
int main()
{
char s[100],*p;
printf("请输入字符串 : ");
gets(s);
p = s;
while(*p)
{
if((*p >= 'a') && (*p <= 'z')) /*处理小写*/
{
*p ='z' - *p + 'a';
}
if((*p >= 'A') && (*p <= 'Z')) /*处理大写,同理处理数字亦一样..自己例推*/
{
*p ='Z' - *p + 'A';
}
p++;
}
printf("转换后的字符串为 : %s\n\n",s);
return 0;
}
F. 字符加密,规则:a变为z,b变为y,c变为x,···,x变为c,y变为b,z变为a
单个字母转化:
#include<stdio.h>
int main()
{
char a;
while((a=getchar())!=EOF)
{
getchar();
if('A'<=a&&a<='Z')
a='Z'-a+'A';
putchar(a);
putchar('\n');
}
return 0;
}
字符串转化:
#include<stdio.h>
int main()
{
int i;
char a[1000];
while(gets(a))
{
for(i=0;a[i]!='\0';i++)
if('A'<=a[i]&&a[i]<='Z')
a[i]='Z'-a[i]+'A';
puts(a);
}
return 0;
}