yixinwenxin 发表于 2019-9-25 22:26:04

while课后题求解

#include <stdio.h>

int main()
{
      int ch, count = 0;

      printf("请输入一行英文句子:");

      while ((ch = getchar()) != '\n')
      {
                if (ch >= 'A' && ch <= 'Z')//A--Z是ASCII 码?
                {
                        count = count + 1;
                }
      }

      printf("你总共输入了%d个大写字母!\n", count);

      return 0;
}
if (ch >= 'A' && ch <= 'Z')//A--Z是ASCII 码?



#include <stdio.h>

int main()
{
        int ch;
        printf("输入字母:");
        while ((ch=getchar())!='\n')
        {
                if(ch>='A'&& ch<='Z')
                {
                        ch=ch-'A'+'a';
                }
                else if(ch>='a'&& ch<='z')
                {
                        ch=ch-'a'+'A';
                }
                putchar(ch);
        }
        putchar('\n');

      return 0;
}

                if(ch>='A'&& ch<='Z')
                {
                        ch=ch-'A'+'a';
                }
                else if(ch>='a'&& ch<='z')
                {
                        ch=ch-'a'+'A';
                }    -'A'+'a'?这是什么意思怎么定义的?

今天先到这明天还要上班   后面的代码是越来越看不懂了...真想抛开看看到底是怎么回事...

画载舟中 发表于 2019-9-25 22:26:05

yixinwenxin 发表于 2019-9-26 17:45
那么— 号 + 号是什么意思?

查ASCLL 码大写字母字符'A'(65)和小写字符   'a'(97)   它们就相差 32位大写转换小写 +32小写转换大写 -32      
   
if(ch>='A'&& ch<='Z')   
                {
                        ch=ch-'A'+'a';   //这里判断出大写ch(65-90之间)- 大写最小的 'A'(65) +小写最小的'a'(97)
比如 ch='B'    'B' 的ASCLL 码是 66    ch(66)-'A'(65)+'a'(97)=ch(98)小写 'b'的ASCLL 码就是98    大写转换小写就成功了   小写转换大写 同理
   

seglex 发表于 2019-9-25 23:53:26

int ch是整形, getchar()获取一个字符,int ch=getchar()是获取一个字符把字符赋值给ch,ch是整型,从而把字符转成int型的ASCII码

画载舟中 发表于 2019-9-26 05:56:52

本帖最后由 画载舟中 于 2019-9-26 06:35 编辑

    if(ch>='A'&& ch<='Z')
                {
                        ch=ch-'A'+'a';// 看这里的 ch大写ASCII 码 多少 - 'A'(65)ASCII 码 + 'a'(97) ASCII 码得出 ch 大写的小写   
                }
                else if(ch>='a'&& ch<='z')
                {
                        ch=ch-'a'+'A';//大写和小写相差也就 32 可以   小写 转大写 ch=ch - 32;大写转 小写 ch = ch+32;
                }

                        'A''Z' 英文符号 单引号 'a'   'z'

lh1996 发表于 2019-9-26 10:08:37

#include <stdio.h>

int main()
{
      int ch, count = 0;

      printf("请输入一行英文句子:");

      while ((ch = getchar()) != '\n')
      {
                if (ch >= 'A' && ch <= 'Z')//A--Z是ASCII 码?,输入的是字符中,内存中放的是ASCLL码 ,ch是以ASCII码形式存放。
                                                   // 比较大小是用ASCII码比较,输入为ABCD...Z时,count+1,
                {
                        count = count + 1;
                }
      }

      printf("你总共输入了%d个大写字母!\n", count);

      return 0;
}
if (ch >= 'A' && ch <= 'Z')//A--Z是ASCII 码?



#include <stdio.h>

int main()
{
      int ch;
      printf("输入字母:");
      while ((ch=getchar())!='\n')
      {
                if(ch>='A'&& ch<='Z')//比较大小用ASCII码比较
                {
                        ch=ch-'A'+'a';把大写字母变成小写字母,ch 是ASCLL码
                }
                else if(ch>='a'&& ch<='z')
                {
                        ch=ch-'a'+'A';//把小写字母变成大写字母,ch 是ASCLL码
                }
                }
                putchar(ch);
      }
      putchar('\n');

      return 0;
}

jackz007 发表于 2019-9-26 10:48:17

                if(ch >= 'A'&& ch <= 'Z') ch = ch - 'A' + 'a'       ; // 如果 ch 是英文大写字符,那就把它改成小写
                else if(ch >= 'a' && ch <= 'z') ch = ch - 'a' + 'A' ; // 否则,如果 ch 是英文小写字符,那就把它改成大写

yixinwenxin 发表于 2019-9-26 17:45:43

画载舟中 发表于 2019-9-26 05:56
if(ch>='A'&& ch='a'&& ch

那么— 号 + 号是什么意思?
页: [1]
查看完整版本: while课后题求解