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