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

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日

悬赏问题

  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题