lkjhg603 发表于 2020-12-23 09:50:53

???

#include <stdio.h>
int main()
{
        char c;
        scanf_s("%c", &c);
        for (; 'a' <= c <= 'Z';)
        {
                if (c >= 'w')
                {
                        c = c - 22;
                        break;
                }
                c = c + 4;
                break;
        }
        c = putchar(c);


这个没有设置大写的A到Z 但打出A仍然可以得到E
但打出z得不到a
   求解

xieglt 发表于 2020-12-23 10:06:58

#include <stdio.h>
int main()
{
      char c;
      scanf_s("%c", &c);
       //循环结束条件错误'a' 的 ASCII码是 97'Z'的ASCII 是 90
       // 'a' <= c <= 'Z' 先判断'a' <= c 这个表达式结果为0 或者 1
       //而 不管是 0 还是 1,永远小于 90 ,所以这是个死循环。
      for (; 'a' <= c <= 'Z';)
      {
                //满足 c >= 'w'则执行 c = c-22,也就是说 w,x,y,z 变成了 a,b,c,d
                if (c >= 'w')
                {
                        c = c - 22;
                        break;
                }
                //当 c < 'w' 时, 执行 c= c+ 4 ,总之,不知道程序想干什么。
                c = c + 4;
                break;
      }
      c = putchar(c);
页: [1]
查看完整版本: ???