这道C语言题目该怎么做?

用C语言编写,输出所有这样的3个数。要看清题目哦,123456789不能重复使用。比如a=356,b=197,c=841.a=b+c;b=c+c;只是随便举得一个例子。我... 用C语言编写,输出所有这样的3个数。

要看清题目哦,123456789不能重复使用。

比如a=356,b=197,c=841.

a=b+c; b=c+c;

只是随便举得一个例子。

我要代码。
我写了一个有注释的.
展开
 我来答
烈空日殇
2015-02-15
知道答主
回答量:6
采纳率:0%
帮助的人:4.7万
展开全部
#include<stdio.h>
int main()
{
int n,i,j,k,a[10]={0};
for(i=102;i<333;i++)
{
j=2*i;
k=i+j;
a[i%10]=1;
a[(i/10)%10]=1;
a[i/100]=1;
a[j%10]=1;
a[(j/10)%10]=1;
a[j/100]=1;
a[k%10]=1;
a[(k/10)%10]=1;
a[k/100]=1;
for(n=1;n<10&&a[n]==1;++n);
if(n==10)
printf("a=%d b=%d c=%d\n",i,j,k);
for(n=1;n<10;++n)
a[n]=0;
}
return 0;
}
空空2012xxy
2015-02-15 · TA获得超过432个赞
知道小有建树答主
回答量:612
采纳率:0%
帮助的人:616万
展开全部
#include<stdio.h>
int ans[9],use[9]={0};
void dfs(int n){
int i,a,b,c;
if(n==9){
a=ans[0]*100+ans[1]*10+ans[2];
b=ans[3]*100+ans[4]*10+ans[5];
c=ans[6]*100+ans[7]*10+ans[8];
if(a==b+c&&b==c*2)printf("%d %d %d\n",a,b,c);}
else {
for(i=0;i<9;i++)
if(!use[i]){
use[i]=1;
ans[n]=i+1;
dfs(n+1);
use[i]=0;}}
return;}
int main(){
dfs(0);
return 0;}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
porker2008
2015-02-15 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
a = 576, b = 384, c = 192
a = 657, b = 438, c = 219
a = 819, b = 546, c = 273
a = 981, b = 654, c = 327


代码

#include <stdio.h>
#include <string.h>

int dfs(int index, int counts, int a[3], int used[10]) {
if (counts == 3) {
return dfs(index + 1, 0, a, used);
}
int i;
if (index == 3) {
if (a[0] == a[1] + a[2] && a[1] == a[2] * 2) {
printf("a = %d, b = %d, c = %d\n", a[0], a[1], a[2]);
}
return 0;
}
a[index] *= 10;
for (i = 1; i <= 9; i++) {
if (used[i] == 1) continue;
used[i] = 1;
a[index] += i;
dfs(index, counts + 1, a, used);
a[index] -= i;
used[i] = 0;
}
a[index] /= 10;
return 0;
}

int main() {
int used[10];
int a[3];
memset(used, 0, sizeof(used));
memset(a, 0, sizeof(a));
dfs(0, 0, a, used);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-02-15
展开全部

直接打的,没考虑效率,凑合了吧

重复代码的问题自己解决了吧

#include <stdio.h>
void main()
{
  int a,b,c,ct;
  int i,flag;
  int buf[10];
  for(c = 0;c < 999;c++)
  {
flag = 0;
    b = 2*c;
    a = b+c;
ct = c;
for(i = 0;i < 10;i++)
buf[i] = 0;
while(ct > 0)
    {
      if(buf[ct%10])
  {
flag = 1;
        break;
  }
  buf[ct%10]++;
      ct/=10;
    }
    while(a > 0)
    {
      if(buf[a%10])
  {
flag = 1;
        break;
  }
  buf[a%10]++;
      a/=10;
    }
    while(b > 0)
    {
      if(buf[b%10])
  {
flag = 1;
        break;
  }
  buf[b%10]++;
      b/=10;
    }
if(!flag)
printf("%d %d %d\n",3*c,2*c,c);
  }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式