有一道C语言的题,急需解答
发布网友
发布时间:2023-05-18 08:49
我来回答
共2个回答
热心网友
时间:2023-09-28 14:47
#include "stdio.h"
void encrypt(char ch[],char chp[])
{
for(int i=0;ch[i]>0;i++)
{
if(ch[i]>='A'&ch[i]<='Z')
chp[i]=63+'A'+26-ch[i]+1;
else if(ch[i]>='a'&ch[i]<='z')
chp[i]=91+'a'+26-ch[i]+1;
else
chp[i]=ch[i];
}
}
void decode(char chp[],char ch[])
{
for(int i=0;chp[i]>0;i++)
{
if(chp[i]>='A'&chp[i]<='Z')
ch[i]=63+'A'+26-chp[i]+1;
else if(chp[i]>='a'&chp[i]<='z')
ch[i]=91+'a'+26-chp[i]+1;
else
ch[i]=chp[i];
}
}
void initialize(char ch[],char chp[],int n ,int m)
{
for(int i=0;i<n;i++)
ch[i]=-1;
for(int i=0;i<m;i++)
chp[i]=-1;
}
void main()
{
int m=1;
while(m)
{
char ch[100],chp[100];
char sel;
initialize(ch,chp,100,100);
printf("选择加密或解密:1 加密,2 解密,Other Key for 退出\n");
scanf("%c",&sel);
if(sel=='1')
{
printf("加密程序,输入原文:");
scanf("%s",ch);
encrypt(ch,chp);
printf("生成的密文:");
for(int i=0;chp[i]>0;i++)
printf("%c",chp[i]);
printf("\n");
getchar();
}
else if(sel=='2')
{
printf("解密程序,输入密文:");
scanf("%s",chp);
decode(chp,ch);
printf("生成的原文:");
for(int i=0;ch[i]>0;i++)
printf("%c",ch[i]);
printf("\n");
getchar();
}
else
m=0;
}
}
热心网友
时间:2023-09-28 14:48
include"ctype.h"
#include"stdio.h"
#include"math.h"
void main()
{
char c;
c=getchar();
while(c!='@')//输入电文以@结束
{
if(isalpha(c))
{
if(c>='a'&&c<'z') c=c+1;
if(c=='z') c='a';
}
putchar(c);
c=getchar();
}
printf("\n");
}
输入: dfyt GFHTRH)(*&*^&^tyhhjj@
输出: egau hgiusi)(*&*^&^uaiikk
这是根据你文字描述写的。即第一个字母变成了第二个字母,第I个字母变成了第(26-I+1)个字母
A-Z,a-z,B-Y,b-y,C-X,c-x.......,好像不是这个意思吧
如果是这样,也是可以改的