清宜2 发表于 2021-9-24 09:10:26

c语言S1E13课后题

本帖最后由 清宜2 于 2021-9-24 09:41 编辑

代码题1:写一个程序,将用户输入的英文句子中的字母大小写进行调换(即大写字母转换为小写字母,小写字母转换为大写字母
#include <stdio.h>

int main()
{
      int ch;//为什么用int,怎么不能用char?

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

      while ((ch = getchar()) != '\n')//这个代码是得到ch的数只要不是空格就执行下面的意思么?
      {
                if (ch >= 'A' && ch <= 'Z')
                {
                        ch = ch - 'A' + 'a';//这行代码什么意思?为什么大写字母转换成小写字母可以这样表示?
                }
                else if (ch >= 'a' && ch <= 'z')
                {
                        ch = ch - 'a' + 'A';//这行代码什么意思?为什么小写字母转换成打写字母可以这样表示?
                }
                }

                putchar(ch);//这行代码是将换了大小写的句子输出么?
      }

      putchar('\n');//这里用printf为什么不可以?

      return 0;
}
2.C 语言中有个 atoi 函数(定义于 <stdlib.h> 头文件中),用于将字符串中的值解析为对应的整型数字。现在要求我们自己写一个程序,实现类似的功能
#include <stdio.h>

int main()
{
      int ch;
      int num = 0;

      printf("请输入待转换的字符串:");

      do
      {
                ch = getchar();

                if (ch >= '0' && ch <= '9')//为啥要有这个,这个作用是什么?

                {
                        num = 10 * num + (ch - '0');//这行代码什么意思?
                }
                else
                {
                        if (num)//是num=1么?为什么这样?
                        {
                              break; // 如果已有数字,则退出循环
                        }
                }

      }
      while (ch != '\n');

      printf("结果是:%d\n", num);

      return 0;
}


问题在代码后面写了,麻烦解释下

wp231957 发表于 2021-9-24 09:42:32

随便说一个吧

if (ch >= 'A' && ch <= 'Z')
                {
                        ch = ch - 'A' + 'a';//这行代码什么意思?为什么大写字母转换成小写字母可以这样表示?
                }
这里假设ch='A'    则 ch - 'A' + 'a' =‘a’这不就完成了 A--a 的转换吗
      假设ch='B'    则 ch - 'A' + 'a' =1+‘a’='b' 这不就完成了B--b 的转换吗
其他 同理

清宜2 发表于 2021-9-24 10:03:03

wp231957 发表于 2021-9-24 09:42
随便说一个吧

if (ch >= 'A' && ch

谢谢,
页: [1]
查看完整版本: c语言S1E13课后题