c语言中 (ch-ch%32+26)-(ch%32-1));怎么理解?谢谢

来源:百度知道 编辑:UC知道 时间:2024/09/23 06:57:56
具体问题是这样的:
main()
{
char ch;
scanf("%c",&ch);
if(ch>'A'&& ch<='Z'|| ch>=‘a’&& ch<=‘z’)
printf("%c\n",(ch-ch%32+26)-(ch%32-1));
else
printf("\n It is not a letter.")
}
(ch-ch%32+26)-(ch%32-1)如何理解呢?
谢谢!!!

首先 我想这个程序不会是你写的 因为错误连篇 根本是通不过编译的

不过
从程序本身看 (ch-ch%32+26)-(ch%32-1)

其实就是:
当输入一个字母
输出它在26个字母中倒序位子上的那个字母

实验数据:
输入 a(26字母顺序第一个字母) 输出 z(26字母倒序第一个字母)
输入b 输出 y

改正后的程序:

#include<stdio.h>
void main()
{
char ch;
scanf("%c",&ch);
if(ch>'A'&& ch<='Z'|| ch>='a'&& ch<='z')
printf("%c\n",(ch-ch%32+26)-(ch%32-1));
else
printf("\n It is not a letter.") ;
}

ch上面应该有被定义,而%是求余符号,余几就是几