2268194521 发表于 2018-10-23 22:29:41

s1e11课后题疑问

论坛的各位老师们幸苦了,可以帮忙解答一下这3个问题吗?谢谢老师~~
1.原题:请将下边代码用 Steve Bourne 大神的方法改写出来
#include <stdio.h>

int main()
{
      int i;

      printf("请输入您的年龄:");
      scanf("%d", &i);

      if (i < 18)
                printf("您未满18周岁,不得使用这个程序!\n");
      else
                printf("您已满18周岁,欢迎使用本程序,嘿嘿嘿...\n");

      return 0;
}
答案:
#include <stdio.h>

#define IF if(
#define THEN ){
#define ELSE }else{
#define FI ;}
#define INT int
#define BEGIN {
#define END }

INT main()
BEGIN
      INT i;

      printf("请输入您的年龄:");
      scanf("%d", &i);

      IF i < 18
      THEN
                printf("您未满18周岁,不得使用这个程序!\n");
      ELSE
                printf("您已满18周岁,欢迎使用本程序,嘿嘿嘿...\n");
      FI

      return 0;
END
这里FI的定义是;)请问‘;’的定义是不是多余的如果不是意义何在?
2.原题:
#include <stdio.h>

int main()
{
      int a, b, c, t;

      printf("请输入3个整数(使用空格隔开):");
      scanf("%d%d%d", &a, &b, &c);

      if (a > b)
      {
                t = a;
                a = b;
                b = t;
      }

      if (a > c)
      {
                t = a;
                a = c;
                c = t;
      }

      if (b > c)
      {
                t = b;
                b = c;
                c = t;
      }

      printf("%d %d %d\n", a, b, c);

      return 0;
}
这里小甲鱼老师做了两个图我实在没看出来它俩的内在区别是啥,没懂其中的原理。图片已经上传请老师详细解释一下 谢谢
3.原题:要求用户输入一个字符,如果是大写字母,将其转换为小写;如果是小写字母,将其转换为大写;其他字符不做处理,并输出结果。
答案:
#include <stdio.h>

int main()
{
      char ch;

      printf("请输入一个字符:");
      scanf("%c", &ch);

      if (ch >= 'A' && ch <= 'Z')
      {
                ch = ch + 32; // ch加32,变成小写,然后赋值回ch
      }
      else if (ch >= 'a' && ch <= 'z')
      {
                ch = ch - 32; // 同上
      }

      printf("%c\n", ch);

      return 0;
}
这里有我想问如果要求用户输入一串字符把这一串字符里的大写字母,转换为小写;小写字母,转换为大写那该怎么改呢?本鱼油新手一枚实在是想不到啊 求老师带飞。

               

pheron 发表于 2018-10-23 22:29:42

第三个问题:
#include<stdio.h>

int main()
{
        char ch;
       
        printf("请输入一串字符:");
        ch = getchar();
        while(ch != '/n')
        {
                if(ch >= 'A' && ch <= 'Z')
                        ch = ch + 32;
                else if(ch >= 'a' && ch <= 'z')
                        ch = ch - 32;
                else
                        ch = ch;
               
                putchar(ch);
                ch = getchar();
        }
        printf("\n");
       
        return 0;
}

2268194521 发表于 2018-10-23 22:36:49

再补一个问题,这个作图里面的箭头在哪呀?自己动手画吗?

pheron 发表于 2018-10-24 09:48:08

本帖最后由 pheron 于 2018-10-24 09:53 编辑

第二题,第一个图就是程序上那样的,而第二个图,只要满足一个条件,例如a>b,直接执行完ab互换之后就输出了,而不会执行下边的程序。
第一个图是if,而第二个图是if...else

pheron 发表于 2018-10-24 10:01:46

Emmmmmm....
第一题的话不想说的,我感觉宏定义这样用很恶心。标点成对使用既能避免错误 又相对方便 而且所有人通用。
这样一宏定义,一不小心就会出现符号错误,然后还不好查找。打这么多字母哪有直接键入标点方便。最后这样写出来的程序只有自己能看了,别人看到会感觉很恶心,一行都懒得看。

2268194521 发表于 2018-10-24 11:24:02

pheron 发表于 2018-10-24 09:21
第三个问题:

这个代码我看不懂呀,是C++吧 老师可以用C改一下吗?

2268194521 发表于 2018-10-24 11:26:31

pheron 发表于 2018-10-24 10:01
Emmmmmm....
第一题的话不想说的,我感觉宏定义这样用很恶心。标点成对使用既能避免错误 又相对方便 而且 ...

老师还想问一下小甲鱼老师推荐的那个软件,那个作图的箭头是哪一个呢?

pheron 发表于 2018-10-24 12:12:53

2268194521 发表于 2018-10-24 11:24
这个代码我看不懂呀,是C++吧 老师可以用C改一下吗?

这就是C呀。。。就是在你那个程序上改的。
getchar()是读取一个包括空字符在内的字符输入
putchar()是打印一个字符
基本的C函数

六道轮回 发表于 2018-10-24 13:22:36

页: [1]
查看完整版本: s1e11课后题疑问