请把这段C程序翻译一下

来源:百度知道 编辑:UC知道 时间:2024/09/22 23:34:05
这是一个电文密码问题,即密码中A对应原文的Z,B对应Y,C对应X……a对应z,b对应y,……以此类推。。。
要求输入密码文,求出原文。

main()
{
int i;
char s[5],tran[5];
gets(s);

for(i=0;s[i];i++)
if(s[i]>='A'&&s[i]<='Z')
tran[i]='A'+'Z'-s[i];
else
if (s[i]>='a'&&s[i]<='z')
tran[i]='a'+'z'-s[i];
else
tran[i]=s[i];
tran[i]=s[i];
puts(s);
puts(tran);
getch();
}

请把以上这个程序大致翻译一下,有些地方我看不懂,比如倒数第四行为什么要用两次tran[i]=s[i]?
///////////////////////////////////////////////////////////////////////////////////////

最后一个tran[i]=s[i]; 实际上只会运行一次,把\0写入数组....

后一个tran[i]=s[i]; 也可以改成 tran[i]=0; 或者 tran[i]='\0';

那个for循环的作用范围是在标示处
。。。
else
tran[i]=s[i]; //////////
tran[i]=s[i];
最后那个语句是将源字符串的\0传给tran数组。以便后面puts(tran);输出
因为你的循环结束条件是s[i],也就是说当你执行到字符串末尾的\0是就退出循环,但是这个时候你tran这个数组里并没有\0,所以你要加上一个。

#include<stdio.h>
void main()
{
int i;
char s[5],tran[5];
gets(s);
for(i=0;i<5;i++)
{if(s[i]>='A'&&s[i]<='Z')
tran[i]='A'+'Z'-s[i];
else
if (s[i]>='a'&&s[i]<='z')
tran[i]='a'+'z'-s[i];
else
tran[i]=s[i];
}
puts(s);
puts(tran);
getchar();
}

估计你把IF 跟 ELSE 语句加{}就能理解了。

else
tran[i]=s[i]; //////////
tran[i]=s[i];
最后那个语句是将源字符串的\0传给tran数组。以便后面puts(tran);输出

///////////////////////