c语言编程 为了使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。

为了使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。例如:将每一个字母变成它后面的第4字母,即将A变成E,B变成F,…,Z变成D,非字母字符不变,“!”作为电文结束标志。要求:输入一行字符,输出其相应的密码。

#include <stdio.h>
void main()
{
char context[256];
int i=0;//context数组的下标
printf("Type the original text:\n");
gets(context);
while(context[i]!='!'&&context[i]!=0)//如果原字符串忘加“!”也应能正常结束
{
if ((context[i]>='A'&&context[i]<='V')||(context[i]>='a'&&context[i]<='v'))
context[i]=context[i]+4;
else if ((context[i]>='W'&&context[i]<='Z')||(context[i]>='w'&&context[i]<='z'))
context[i]=context[i]-22;
i++;
}
puts(context);
getchar();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-22
这个是你要的程序,比楼上的精简,vc6通过调试运行了。
#include <stdio.h>
main()
{
char str[200]="";
int nCounti;
printf("input the content:\n");
gets(str);
for(nCounti=0;*(str+nCounti)!='!';nCounti++)
{
if((*(str+nCounti)>='A'&&*(str+nCounti)<='Z')||(*(str+nCounti)>='a'&&*(str+nCounti)<='z'))
{
*(str+nCounti)=*(str+nCounti)+4;
if((*(str+nCounti)>'z')||(*(str+nCounti)>'Z'&&*(str+nCounti)<'a'))
{
*(str+nCounti)=*(str+nCounti)-26;
}
}
}
puts(str);
getchar();
}本回答被提问者和网友采纳
第2个回答  推荐于2018-03-11
#include<stdio.h>
void main()
{
int c;
while(c = getchar())
'a'<=c&&c<='v'||'A'<=c&&c<='V'?putchar(c+4):'w'<=c&&c<='z'||'W'<=c&&c<='Z'?putchar(c-22):putchar(c);
}
----------------------------------------
估计这是代码最少的
第3个回答  2011-06-22
#include<stdio.h>
#include<string.h>
int main()
{
char p[80];
char ch;
int len;
int i=0;
while((ch=getchar())!= '!')
{
p[i] = ch;
i++;
}
len = i;
p[len] = '\0'; //加上结束符。
for(i =0;i<len;i++)
{
if( p[i]>='A' && p[i]<='V')
{
p[i] = p[i]+4;
}
if(p[i] == 'W')
{
p[i] = 'A';
}
if(p[i] == 'X')
{
p[i] = 'B';
}
if(p[i] == 'Y')
{
p[i] = 'C';
}
if(p[i] == 'Z')
{
p[i] = 'D';
}
}
printf("%s",p);
getchar();
return 0;
}
相似回答