程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 蒟蒻-用1-9組成三個1:2:3的三位數,要求數字不重復的c代碼,求改錯。

蒟蒻-用1-9組成三個1:2:3的三位數,要求數字不重復的c代碼,求改錯。

編輯:編程解疑
用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;}

最佳回答:


我給你簡單說一下:
要滿足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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved