| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 998 人关注过本帖
标题:这个程序没看懂逻辑,有谁解释一下?
只看楼主 加入收藏
黑暗骑士5D
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2019-11-6
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:4 
这个程序没看懂逻辑,有谁解释一下?
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

输入在一行中给出A。

输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:

2
输出样例:

234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543



int main(){
   int i,j,k;
   int cnt=0;
   int a=0;
   scanf("%d",&a);
   i=a;//注意i,j,k的初始值是在while()外面初始化的
   while(i<=a+3){
       j=a;
       while(j<=a+3){
           k=a;
           while(k<=a+3){
               if(i!=j&&i!=k&&j!=k){
                   cnt++;
                   printf("%d%d%d",i,j,k);
                   if(cnt==6){
                       printf("\n");
                       cnt=0;
                   }else{
                       printf(" ");
                   }
               }
               k++;
           }
           j++;
       }
       i++;
   }
}
搜索更多相关主题的帖子: printf int 逻辑 while 输出 
2019-12-04 10:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
完全按照你提供的代码逻辑改写,改写成利于正常人类阅读的样式

程序代码:
#include <stdio.h>

int main( void )
{
   unsigned a;
   scanf( "%u", &a );

   unsigned cnt = 0;
   for( unsigned i=a; i!=a+4; ++i )
   {
       for( unsigned j=a; j!=a+4; ++j )
       {
           for( unsigned k=a; k!=a+4; ++k )
           {
               if( i!=j && i!=k && j!=k )
                   printf( "%u%u%u%c", i, j, k, " \n"[++cnt%6==0] );
           }
       }
   }
}

2019-12-04 10:33
黑暗骑士5D
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2019-11-6
收藏
得分:0 
回复 2楼 rjsp
printf("%d%d%d%c",i,j,k," \n"[++cnt%6==0])
看不懂啊,这个中括号里是啥意思,为什么这么用
2019-12-04 11:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:5 
回复 3楼 黑暗骑士5D
那你就将
                if( i!=j && i!=k && j!=k )
                    printf( "%u%u%u%c", i, j, k, " \n"[++cnt%6==0] );

改为
                if( i!=j && i!=k && j!=k )
                {
                    printf( "%u%u%u", i, j, k );
                    putchar( ++cnt%6==0 ? '\n' : ' ' );
                }
好了
2019-12-04 15:36
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:0 
就是题目的要求
输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格
2019-12-05 15:20
快速回复:这个程序没看懂逻辑,有谁解释一下?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018256 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved