解题思路:

          主要是利用排列组合的思想,用多重循环来实现。

注意事项:

         需要对题目要求的输出有个清楚的认识,否则会出现格式错误。


          对每组卡片按从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数间用空格分隔,每组输出数据间空一行最后一组数据后面没有空行

参考代码:

                                                      欢迎大家批评指正,谢谢!!!

            #include<stdio.h>
            int main()
            {
              int n,array[4];
              int i,j,k,l;
              scanf("%d",&n);
              while(n--)
              {
                 for(i=0;i<4;i++)
                       scanf("%d",&array[i]);
                 for(i=0;i<4;i++)
                 {
                     for(j=0;j<4;j++)
                         for(k=0;k<4;k++)
                              for(l=0;l<4;l++)
                                    if(i!=j&&i!=k&&i!=l&&j!=k&&j!=l&&k!=l)           //确保每位数字不同
                                          printf("%d%d%d%d ",array[i],array[j],array[k],array[l]);
                     printf("\n");                 //千位不同时换行
                  }
                  if(n>0)
                       printf("\n");             //最后一组不换行
            } 
             return 0;
          }


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

我和我的祖国 4年前 回复TA
很棒啊,我和你的思路差不多,不过遇到些问题,看到你的就明白了