林振linzhen 2016-11-06 06:25 采纳率: 100%
浏览 3474
已采纳

用1-9组成三个1:2:3的三位数,要求数字不重复的c代码,求改错。

#include<stdio.h>
int main()
     {int a[9],i,j,k,t,b,c,d,e,p = 1;
     for(i=123 ;i <= 327 ; i++)
         {b = i;
         a[0] = b % 10;
         b = b / 10;
         a[1] = b % 10;
         b = b / 10;
         a[2] = b;
         c = 2 * i;
         a[3] = c % 10;
         c = c / 10;
         a[4] = c % 10;
         c = c / 10;
         a[5] = c;
         d = 3 * i;
         a[6] = d % 10;
         d = d / 10;
         a[7] = d % 10;
         d = d / 10;
         a[8] = d;
         for(j = 0 ; j < 9 ; j++)
             {for(k = j + 1 ; k < 9 ; k++)
                  {if(a[j] == a[k])
                  p = 0;}}
         if(p)
             {for(t = 0 ; t < 9 ; t++)
                 {printf("%d",a[t]);
                 if(e % 3 == 0)
                 printf("\n");
                 e++;}}}
     return 0;}
  • 写回答

2条回答 默认 最新

  • qwerwww 2016-11-07 04:39
    关注

    我给你简单说一下:
    要满足1:2:3各位都必须满足相应得倍数关系
    for(i=123 ;i <= 327 ; i++){
    ...
    }
    没有完全获取所得的数字,且操作的数字应为3位,不是9位。
    要满足 1:2:3 各位不能重复
    for(j = 0 ; j < 9 ; j++)
    {for(k = j + 1 ; k < 9 ; k++)
    这样是错误的,各个位数不重复不代表各个结果数字之间不重复,比如说123和246都满足条件,但123中有2,246中也有2,这是不冲突的。
    最后
    for(t = 0 ; t < 9 ; t++)
    {printf("%d",a[t]);
    if(e % 3 == 0)
    printf("\n");
    e++;}
    e没有初始化,e % 3没有意义。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名