2201_75518162 2023-11-17 22:06 采纳率: 0%
浏览 4

数据结构C语言模块问题求解

求!有没有人帮我看一下这个代码,宿舍分配那块输入两个学生姓名之后,显示“未找到宿舍是什么意思”

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-18 08:33
    关注

    【相关推荐】



    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7808323
    • 这篇博客你也可以参考下:如何用C语言写一个学生宿舍管理系统?
    • 您还可以看一下 钟洪发老师的鸿蒙设备开发之C知识点全面梳理课程中的 实现插入文件内容小节, 巩固相关知识点
    • 除此之外, 这篇博客: [百战成神6]C语言之凡人暴刷小牛【超详细解析,掌握每道题】中的 💛示例2 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      输入:

      0.0 3.0 3.0

      输出:

      Not quadratic equation
      

      输入:

      1 2 1

      输出:

      x1=x2=-1.00
      

      输入:

      2 2 5

      输出:

      x1=-0.50-1.50i;x2=-0.50+1.50i
      

      输入:

      1 0 1

      输出:

      x1=0.00-1.00i;x2=0.00+1.00i

      🟥1,定义三个浮点数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,先定义一个数表示△

              🔹2,先进行判断,如果a为0的情况下输出Not quadratic equation

              🔹3,如果不为0的话有三种情况:

              🔹4,如果△等于0的情况,要输出x1等于x2,求x1与x2,需要-b+-开平方下的△/2*a,而-b+-开平方下的△有可能是0,那么需要有两种,是0的情况和不是0的情况,定义一个数表示b+-开平方下的△,是0的话输出这个数,不是0的话输出-b/(2*a),因为△等于0也没事

              🔹5,如果△大于0的情况x1等于-b - sqrt(s) )/ (a * 2),x2等于-b +sqrt(s) )/ (a * 2),注意的是,x1要小于等于x2,所以前面是-,后面是+

              🔹6,如果△小于0的情况,需要定义一个实数和虚数,这个时候需要考虑一种情况,因为虚数如果小于0的话,会多出一个负号,需要把这个负号解决掉,所以如果小于0,输出x1=%.2f%.2fi;x2=%.2f+%.2fi\n , a1, a2, a1, fabs(a2),减去一个负号,那么就处理掉x1多出来的符号,而后面加法没办法减去符号,可以取a2的绝对值,让它是正数,这个时候就完美解决掉了多出符号的问题,所以判断小于0则输出以上判断,否则输出题目要求的结果

              🔹这个题目很离谱,这几个月增加了好几个比例,导致以前能通过的都过不去,我也是很蒙蔽,花了点时间完成

              💘 代码如下:
       

      #include<stdio.h>
      #include<math.h>
      int main()
      {
          float a = 0.0;
          float b = 0.0;
          float c = 0.0;
          while (scanf("%f %f %f", &a, &b, &c) != EOF)
          {
              if (a == 0)
              {
                  printf("Not quadratic equation\n");
              }
              else
              {
                  float s = b * b - 4 * a * c;
                  if (s > 0)
                  {
                      printf("x1=%.2f;x2=%.2f\n", ((-b - sqrt(s) )/ (a * 2)), ((-b + sqrt(s)) / (a * 2)));
                  }
                  else if (s < 0)
                  {
                      float a1 = -b / (2 * a);
                      float a2 = sqrt(-s) / (2 * a);
                      if(a2 <0)
                      {
                           printf("x1=%.2f%.2fi;x2=%.2f+%.2fi\n", a1, a2, a1, fabs(a2));
                      }
                      else
                      {
                          printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", a1, a2, a1, a2);
                      }
                  }
                  else
                  {
                      float xx = -b + sqrt(s);
                      if (xx == 0)
                      {
                          printf("x1=x2=%.2f\n", xx);
                      }
                      else
                      {
                          printf("x1=x2=%.2f\n", -b / (2 * a));
                      }
                  }
              }
          }
          return 0;
      }

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案。

      多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。

      针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格。

      输入:

      5

      输出:

      * * * * *
      * * * *
      * * *
      * *
      *
      

      输入:

      6

      输出:

      * * * * * *
      * * * * *
      * * * *
      * * *
      * *
      *

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个翻转的直角三角形

              🔹2,先判断行数,有n行,然后判断一行打印多少个,我们可以看到,第一行是n个,那么第二行少一个,和i有关,所以小于n-i个就能控制一行打印的个数,打印完一行然后换行

      #include<stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d",&n)!= EOF)
          {
              int i = 0;
              for(i=0;i<n;i++)
              {
                  int j = 0;
                  for(j=0;j<n-i;j++)
                  {
                      printf("* ");
                  }
                          printf("\n");
              }
          }
          return 0;
      }

       实现效果:

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_15,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。

      多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。

      针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。

      输入:

      5

      输出:

              * 
            * * 
          * * * 
        * * * * 
      * * * * *
      

      输入:

      4

      输出:

            * 
          * * 
        * * * 
      * * * *

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个带空格的直角三角形图案

              🔹2,先观察一下,发现是由两部分组成,倒着的空格三角形与一个正序三角形,那么先来打印一行的数据,创建i,小于n,来实现一行打印的数据,定义j,有两部分,先打印空格,两个空格为一组,第一行有四组,然后递减,小于n-1-i刚好可以控制几组,然后打印星号与空格,第一行一个,递增,刚好小于等于i可以控制

              🔹3,还可以分析一下,用坐标的方法实现,可以发现一行两部分组成,而根据坐标,行为i ,列为j,那么空格部分i+j<n-1;那么如果i+j<n-1的话输出空格,否则输出星号空格

               🔹4,最后注意,打印完一行的记得换行

      #include<stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d",&n)!= EOF)
          {
              int i = 0;
              for(i=0;i<n;i++)
              {
                  int j = 0;
                  for(j=0;j<n-1-i;j++)
                  {
                      printf("  ");
                  }
                  for(j=0;j<=i;j++)
                  {
                      printf("* ");
                  }
                  printf("\n");
              }
          }
          return 0;
      }
      #include<stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d",&n)!= EOF)
          {
              int i = 0;
              for(i=0;i<n;i++)
              {
                  int j = 0;
                  for(j=0;j<n;j++)
                  {
                      if(i+j<n-1)
                      {
                          printf("  ");
                      }
                      else
                      {
                          printf("* ");
                      }
                  }
                  printf("\n");
              }
          }
          return 0;
      }

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_14,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转金字塔图案。

      多组输入,一个整数(2~20),表示翻转金字塔边的长度,即“*”的数量,也表示输出行数。

      针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。

      输入:

      5

      输出:

      * * * * * 
       * * * * 
        * * * 
         * * 
          * 
      

      输入:

      6

      输出:

      * * * * * * 
       * * * * * 
        * * * * 
         * * * 
          * * 
           * 

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个翻转金字塔图案

              🔹2,先观察一下,发现是由两部分组成,倒着的空格三角形与星号加上空格组成的倒着的金字塔,先打印一行,由n控制,然后打印一行的数据,先打印空格,第一行没有,第二行有一个,递增,那么当i为0的时候,第一行不输出,所以小于i可以控制空格输出,第二部分,打印星号与空格,第一行n个,第二行n-1个,那么可以减去i来控制每一行

               🔹3,最后注意,打印完一行的记得换行

      #include<stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d",&n) != EOF)
          {
              int i = 0;
              for(i=0;i<n;i++)
              {
                  int j = 0;
                  for(j=0;j<i;j++)
                  {
                      printf(" ");
                  }
                  for(j=0;j<n-i;j++)
                  {
                      printf("* ");
                  }
                  printf("\n");
              }
          }
          return 0;
      }

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_14,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。

      多组输入,一个整数(2~20)。

      针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。

      输入:

      2

      输出:

        * 
       * * 
      * * * 
       * * 
        * 
      

      输入:

      3

      输出:

         * 
        * * 
       * * * 
      * * * * 
       * * * 
        * * 
         * 
      

      输入:

      4

      输出:

          * 
         * * 
        * * * 
       * * * * 
      * * * * * 
       * * * * 
        * * * 
         * * 
          * 

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个菱形图案

              🔹2,先观察一下,发现是由两部分组成,一个是正三角形,一个是反三角形

               🔹3,先实现正三角形,正三角由两部分组成,左边是一个空格组成的倒三角,右边是一个星号组成的正三角,左边第一行有n-i个来控制输出,当i为0的时候第一行输出n个,右边有小于等于i个输出,当i等于0的时候,输出1个,打印完一行的内容然后换行

               🔹4,然后实现倒三角形,正三角由两部分组成,左边是一个空格组成的正三角,右边是一个星号组成的倒三角,左边第一行有i来控制输出,当i为0的时候第一行输出0个,右边由n+1-i来控制输出,当i等于0的时候,输出n+1个,打印完一行的内容然后换行

      #include<stdio.h>
      
      
      int main() {
          int n = 0;
          while (scanf("%d", &n) != EOF) {
              //正的三角形
              int i = 0;
              for (i = 0; i < n; i++)
              {
                  //空格
                  int j = 0;
                  for (j = 0; j <n-i; j++) 
                  {
                      printf(" ");
                  }
                  //星号空格
                  for (j = 0; j <=i; j++)
                  {
                      printf("* ");
                  }
                  printf("\n");
              }
              //倒着的三角形
              for(i=0;i<n+1;i++)
              {
                   //空格
                  int j = 0;
                  for (j = 0; j <i; j++)
                  {
                      printf(" ");
                  }
                  //星号空格
                  for (j = 0; j <n+1-i; j++)
                  {
                      printf("* ");
                  }
                  printf("\n");
              }
          }
      }

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_14,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的K形图案。

      多组输入,一个整数(2~20)。

      针对每行输入,输出用“*”组成的K形,每个“*”后面有一个空格。

      输入:

      2

      输出:

      * * * 
      * * 
      * 
      * * 
      * * * 
      

      输入:

      3

      输出:

      * * * * 
      * * * 
      * * 
      * 
      * * 
      * * * 
      * * * * 
      

      输入:

      4

      输出:

      * * * * * 
      * * * * 
      * * * 
      * * 
      * 
      * * 
      * * * 
      * * * * 
      * * * * * 

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个K形图案

              🔹2,先观察一下,发现是由两部分组成,上部分是倒三角星号加上正三角空格,下部分是正三角星号加上倒三角空格

              🔹3,先实现上半部分,上半部分由两部分组成,左边是一个星号组成的梯形,右边是一个空格组成的三角,左边第一行有n+1-i个来控制输出,当i为0的时候第一行输出n+1-0个,右边有小于i个控制输出,当i等于0的时候,输出0个,打印完一行的内容然后换行

               🔹4,然后实现下半部分,下半部分由两部分组成,左边是一个空格组成的正三角,右边是一个星号组成的倒三角,左边第一行由小于等于i来控制输出,当i为0的时候第一行输出1个,右边由n-i来控制输出,当i等于0的时候,输出n+1个,打印完一行的内容然后换行

              🔹这道题需要注意的是在k行后面有空格的输出,而不是只有k,乍一看看不到后面的空格,这是这道题目比较坑的地方

      #include<stdio.h>
      
      int main()
      {
          int n = 0;
          while(scanf("%d",&n) != EOF)
          {
              int i = 0;
              //上半部分
              for(i=0;i<n;i++)
              {
                  //*空格  
                  int j = 0;
                  for(j=0;j<n+1-i;j++)
                  {
                      printf("* ");
                  }
                  //空格
                  for(j=0;j<i;j++)
                  {
                      printf(" ");
                  }
                  printf("\n");
              }
              //下半部分
              for(i=0;i<n+1;i++)
              {
                  //*空格  
                  int j = 0;
                  for(j=0;j<=i;j++)
                  {
                      printf("* ");
                  }
                  //空格
                  for(j=0;j<n-i;j++)
                  {
                      printf(" ");
                  }
                  printf("\n");
              }
          }
          return 0;
      }

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_8,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的箭形图案。

      本题多组输入,每行一个整数(2~20)。

      针对每行输入,输出用“*”组成的箭形。

      输入:

      2

      输出:

          *
        **
      ***
        **
          *
      

      输入:

      3

      输出:

            *
          **
        ***
      ****
        ***
          **
            *

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个箭行图案

              🔹2,先观察一下,发现是由两部分组成,上部分是倒三角空格加上正三角星号,下部分是正三角空格加上倒三角星号

              🔹3,先实现上半部分,上半部分由两部分组成,左边是一个空格组成的倒三角,右边是一个星号组成的正三角,左边第一行有n-i来控制输出,当i为0的时候第一行输出n-0个,右边有小于等于i来控制输出,当i等于0的时候,输出1个,打印完一行的内容然后换行

               🔹4,然后实现下半部分,下半部分由两部分组成,左边是一个空格组成的正三角,右边是一个星号组成的倒三角,左边第一行由小于i来控制输出,当i为0的时候第一行输出0个,右边由n+1-i来控制输出,当i等于0的时候,输出n+1-0个,打印完一行的内容然后换行

      #include<stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d",&n)!= EOF)
          {
              //上半部分
              int i = 0;
              for(i=0;i<n;i++)
              {
                  int j = 0;
                  for(j=0;j<n-i;j++)
                  {
                      printf("  ");
                  }
                  for(j=0;j<=i;j++)
                  {
                      printf("*");
                  }
                  printf("\n");
              }
              //下半部分
              for(i=0;i<n+1;i++)
              {
                  int j = 0;
                  for(j=0;j<i;j++)
                  {
                      printf("  ");
                  }
                  for(j=0;j<n+1-i;j++)
                  {
                      printf("*");
                  }
                  printf("\n");
              }
          }
          return 0;
      }

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_9,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的反斜线形图案。

      多组输入,一个整数(2~20),表示输出的行数,也表示组成反斜线的“*”的数量。

      针对每行输入,输出用“*”组成的反斜线。

      输入:

      4

      输出:

      *   
       *  
        * 
         *
      

      输入:

      5

      输出:

      *    
       *   
        *  
         * 
          *

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个反斜线图案

              🔹2,可以按照上面拆分的方法做,打印正三角,星号,反三角

              🔹3,也可以发现,如果按照坐标的话,第一行一列,二行二列,三行三列,n行n列是星号,用for循环定义,i与j小于n,如果当i等于j的时候,打印星号,否则打印空格

      #include<stdio.h>
      int main()
      {
          int n = 0;
          while (scanf("%d", &n) != EOF)
          {
              int i = 0;
              for (i = 0; i < n; i++)
              {
                  int j = 0;
                  for (j = 0; j < n; j++)
                  {
                      if (i == j)
                      {
                          printf("*");
                      }
                      else
                      {
                          printf(" ");
                      }
                  }
                  printf("\n");
              }
          }
          return 0;
      }
      #include<stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d", &n) !=EOF)
         {
              int i = 0;
              for(i=0; i<n; i++)
             {
                  //空格
                  int j = 0;
                  for(j=0; j<i; j++)
                 {
                      printf(" ");
                 }
                  //*
                  printf("*");
                  //注意*后边的空格
                  for(j=i+1; j<n; j++)
                 {
                      printf(" ");
                 }
                  printf("\n");
             }
         }
      }

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_5,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正斜线形图案。

      多组输入,一个整数(2~20),表示输出的行数,也表示组成正斜线的“*”的数量。

      针对每行输入,输出用“*”组成的正斜线。

      输入:

      4

      输出:

         *
        * 
       *  
      *   
      

      输入:

      5

      输出:

          *
         * 
        *  
       *   
      * 

      🟥1,先定义一个整数,然后多组输入,注意停止条件

      🟥2,分析一下题,需要的条件

              🔹1,打印一个正斜线图案

              🔹2,可以按照上面拆分的方法做,打印反三角,星号,正三角

              🔹3,也可以发现,如果i+j等于n-1的时候,打印的是星号,否则打印的是空格,打印完一行换行

      #include<stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d",&n) != EOF)
          {
              int i = 0;
              for(i=0;i<n;i++)
              {
                  int j =0;
                  for(j=0;j<n;j++)
                  {
                      if(i+j==n-1)
                      {
                          printf("*");
                      }
                      else
                      {
                          printf(" ");
                      }
                  }
                  printf("\n");
              }
          }
          return 0;
      }
      #include <stdio.h>
      int main()
      {
          int n = 0;
          while(scanf("%d", &n) != EOF)
         {
              int i = 0;
              for(i=0; i<n; i++)
             {
                  //空格
                  int j = 0;
                  for(j=0; j<n-1-i; j++)
                 {
                      printf(" ");
                 }
                  //*
                  printf("*");
                  //空格
                  for(j=n-i; j<n; j++)
                 {
                      printf(" ");
                 }
                  printf("\n");
             }
         }
          return 0; 
      }

       watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5L2g5oiR55qG5Li65Yeh5Lq6,size_14,color_FFFFFF,t_70,g_se,x_16

       

      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

      多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

      针对每行输入,输出用“*”组成的X形图案。

      输入:

      5

      输出:

      *   *
       * * 
        *  
       * * 
      *   *
      

      输入:

      6
      

      输出:

      *    *
       *  * 
        **  
        **  
       *  * 
      *    *

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月17日