【C语言】练习题一道

一道练习题

有一行电文,已按下面规律译成密码:A->Z a->z;B->Y b->y;即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求C语言编程将密码译回原文,并输出密码和原文。

可以定义一个数组ch,在其中存放电文。如果字符ch[j]是大写字母,则它是26个字母中的第(ch[j]-64)个大写字母,
由于此密码的规律是对称转换,即第1个字母转换为最后一个字母,最后一个转换为第1个字母,因此从原文译为密码和从密码译为原文,都是同一个公式。

#include<stdio.h>//头文件 
int main()//主函数 
{
	int j,n;//定义整型变量 
	char ch[80],tran[80];//定义字符数组 
	printf("输入密码:\n");//提示语句 
	gets(ch);//键盘输入 
	printf("\n密码是:\n%s",ch);//密码 
	j=0;//赋初值 
	while(ch[j]!='\0')//不是最后一个字符时 
	{ 
		if((ch[j]>='A')&&(ch[j]<='Z'))//ASCII中A对应的值是65,a对应的值是97 
		{
			tran[j]=155-ch[j];
		}
		else if((ch[j]>='a')&&(ch[j]<='z'))//小写 
		{
			tran[j]=219-ch[j];
		}
		else
			{
				tran[j]=ch[j];
			}
		j++;
	}
	n=j;
	printf("\n输出原文:\n");//提示语句 
	for(j=0;j<n;j++)//遍历输出 
	{ 
		putchar(tran[j]);
	} 
	printf("\n");//换行 
	return 0;//函数返回值为0 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心如止水Long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值