题目1001和1002没有亮点,就不记录了。
题目编号 1003
题目描述
要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.
例如,字母"A"后面第4个字母是"E".“E"代替"A”。因此,“China"应译为"Glmre”。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
我的解法
#include<stdio.h>
int main()
{
int i;
char a[5];
for(i=0;i<5;i++){
scanf("%c",&a[i]);
}
for(i=0;i<5;i++){
if(a[i]>='a'&&a[i]<='v')
printf("%c",a[i]+4);
else if(a[i]>='w'&&a[i]<='z')
printf("%c",a[i]-22);
else if(a[i]>='A'&&a[i]<='V')
printf("%c",a[i]+4);
else if(a[i]>='W'&&a[i]<='Z')
printf("%c",a[i]-22);
else
printf("您输入的有问题!");
}
return 0;
}
优质解法
#include <stdio.h>
int main()
{
int i;
char a[5];
for(i=0;i<5;i++)
{
scanf("%c",&a[i]);
}
for (i=0;i<5;i++)
{
if (a[i] >= 'A' && a[i] <= 'Z')
{
a[i] = (a[i] + 4 - 'A') % 26 + 'A';
printf("%c",a[i]);
}
if (a[i] >='a' && a[i] <='z')
{
a[i] = (a[i] + 4 - 'a') % 26 + 'a';
printf("%c",a[i]);
}
}
return 0;
}
思路总结
a[i] = (a[i] + 4 - ‘A’) % 26 + ‘A’;
这步是整个题目最重要的一步。不用将A到V(或a到v)和W到Z(或w到z)分开考虑。