验证算式是否正确,不知道自己哪儿错了

img


这个为什么不对呢?算出来的结果不是对的吗?到底是哪儿错了呢?

看题目意思就是每个数是不能够重复的哦!
你写的代码没有去掉重复的数字所以不对哦!
代码已经写好了,仅供参考!谢谢!

img

#include<stdio.h>

int main()
{
    int a, b, c, flag = 1;
    char s[10];
    while (scanf("%d%d%d", &a, &b, &c) == 3)
    {
    
        if (c < 123 || c > 987 || a < 123 || a > 987 || b < 123 || b > 987)
        {
            puts("NO!");
            continue;
        }
        
        sprintf(s, "%d%d%d", a, b, c);
        for (int i = 0; i < 8; i++)
        {
            for (int j = i + 1; j < 9; j++)
            {
                if (s[i] == s[j] || s[i] == 0 || s[j] == 0)
                {
                    flag = 0;
                    break;
                }
            }

            if (flag == 0)
            {
                break;
            }

        }

        if (a + b == c && flag == 1)
        {
            puts("YES!");
        }
        else
        {
            puts("NO!");
            flag = 1;
        }

    }

    return 0;
}

没把题目贴出来啊
需不需要检查a,b,c是否是三位数啊

这个题目描述的不怎么好
他可能还想让你保证1-9每个数只出现一次,其次0这个数显然是不能出现的,需要验证


#include <bits/stdc++.h>
 
using namespace std;
 
char a[10000],b[10000],c[10000];

int aa,bb,cc;

int main() 
{
    while(cin>>a>>b>>c)
    {
        int bo=-1;
        
        int k[100];
        
        aa=(int)a;
        bb=(int)b;
        cc=(int)c;
        
        if(aa+bb==cc)
        {
            for(int i=0;i<3;i++)
            {
                if(k[a[i]-'0']==0)
                {
                    k[a[i]-'0']=1;
                    
                    bo=0;
                }
                else
                {
                    bo=1;
                    
                    cout<<"NO"<<endl;
                }
            }
            
            if(bo==0)
            {
                cout<<"YES"<<endl;
            }
        }
        
        if(bo==-1)
        {
            cout<<"NO"<<endl;
        }
    }
    
    return 0;
} 

把scanf ... != EOF换成 scanf ... != 3看看