m0_74749832 2022-11-17 19:07 采纳率: 72.7%
浏览 44
已结题

c语言:个2位数乘以一个3位数等于一个4位数

题目:一个2位数乘以一个3位数等于一个4位数,这3个数的全部9个数字取自1到9, 不得重复,编程求这3个数分别是?

能帮忙指出代码中的错误吗?

代码:

#include<stdio.h>
int main()
{
    int i,j,k,n,a[10]={0},b[3],flag=1;
    for(j=123;j<=987;j++)
    {
        for(i=12;i<=98;i++)
        {
            if(i*j<1234||i*j>9876)
                continue;
            b[0]=i;
            b[1]=j;
            b[2]=i*j;
            for(k=0;k<3;k++)
            {
                n=b[k];
                while(n)
                {
                    a[n%10]=1;
                    n/=10;
                }
            }
            for(k=0;k<10;k++)
            {
                if(a[k]!=1)
                {
                    flag=0;
                    break;
                }
            }
            if(flag)
            {
                printf("%d %d %d",i,j,i*j);
                break;
            }
        }
    }
     return 0;
}

  • 写回答

2条回答 默认 最新

  • a5156520 2022-11-17 19:31
    关注

    错误原因应该是标志flag和数组a在每次测试每组式子前没有初始化,然后判断式子是否是1-9九个数那里要从数组a下标为1的位置开始判断,修改如下:

    #include <stdio.h>
    
    int main()
    {
        int i,j,k,n,a[10]={0},b[3],flag=1;
        for(j=123;j<=987;j++)
        {
            for(i=12;i<=98;i++)
            {
                for(int p=0;p<10;p++){
                    a[p] = 0;
                } 
                flag=1;
                if(i*j<1234||i*j>9876)
                    continue;
                b[0]=i;
                b[1]=j;
                b[2]=i*j;
                for(k=0;k<3;k++)
                {
                    n=b[k];
                    while(n)
                    {
                        a[n%10]=1;
                        n/=10;
                    }
                }
                for(k=1;k<10;k++)
                {
                    if(a[k]!=1)
                    {
                        flag=0;
                        break;
                    }
                }
                if(flag)
                {
                    printf("%d %d %d\n",i,j,i*j);
                    break;
                }
            }
        }
         return 0;
    }
    
    
    

    img

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月18日
  • 已采纳回答 11月17日
  • 创建了问题 11月17日