焦糖橙子 发表于 2021-7-26 17:11:50

S1E20最后一题

题目是输入五句话,打印出最长的和最短的句子。

#include <stdio.h>
#include <string.h>


int main()//用户输入 5 句话,并计算出最长和最短的句子。
{
        char Slogan = { 0 };
    int ch, num, i, max, min, temp;


        for (num = 0 ; num < 5; num++)
        {
                printf("请输入第%d句话:", num + 1);

                for (i = 0; (Slogan = getchar() != '\n');i++);

      Slogan = '\0';
        }
        printf("你输入了下边%d句话:\n",num);

    min = 0;
    max = min;

    for (i = 0; i < num; i++)
                {
      printf("%s\n", Slogan);
      temp = strlen(Slogan);
      min = temp < strlen(Slogan) ? i : min;
      max = temp > strlen(Slogan) ? i : max;

                }

      printf("其中最长的是:%s\n", Slogan);
      printf("其中最短的是:%s\n", Slogan);


        return 0;
}




参考答案是
#include <stdio.h>
#include <string.h>

#define NUM 5

int main()
{
      char slogan;
      int i, j, ch, min, max, temp;

      for (i = 0; i < NUM; i++)
      {
                printf("请输入%d句话:", i+1);
                for (j = 0; (ch = getchar()) != '\n'; j++)
                {
                        slogan = ch;
                }
                slogan = '\0';
      }

      min = 0;
      max = min;

      printf("你输入了下边%d句话:\n", NUM);

      // 打印每句口号,同时比较长度
      for (i = 0; i < NUM; i++)
      {
                printf("%s\n", slogan);
                temp = strlen(slogan);
                min = temp < strlen(slogan) ? i : min;
                max = temp > strlen(slogan) ? i : max;
      }

      printf("其中最长的是:%s\n", slogan);
      printf("其中最短的是:%s\n", slogan);

      return 0;
}


为什么我的打印出来是框框?{:10_266:}

万千只cnm 发表于 2021-7-26 17:19:35

(Slogan = getchar() != '\n')
经典
!=优先级大于 =

焦糖橙子 发表于 2021-7-26 17:42:40

万千只cnm 发表于 2021-7-26 17:19
经典
!=优先级大于 =

{:10_266:}我发现了,而且那里的括弧打乱了
for (i = 0; (Slogan = getchar()) != '\n';i++);
改成这样就跑起来了
页: [1]
查看完整版本: S1E20最后一题