c问题求助!!!谢谢了
题目描述:已知三位整数x和y满足x+y=1333,其中x的个位数是y的百位数,y的个位数是x的百位数,它们的十位数一样。求满足这样条件的x和y。
输入:
输出:
419+914=1333
......
按X从小到大输出,每个等式一行
代码如下,请问代码有什么问题吗?
#include<stdio.h>
int main()
{
int x,y;
for(x=100;x<1000;x++)
{
for(y=100;y<1000;y++)
if(x+y==1333)
if(x%10==y/100)
if((x%100-x%10)==(y%100-y%10))
if(x/100==y%10)
printf("%d + %d = 1333\n",x,y);
}
return 0;
} 不知道你要问什么,就运行而 言是没问题。
不过有条件,还2层FOR太浪费了。
我写的参考下:
#include<stdio.h>
int main()
{
int x,y;
int g, s, b;
for(x=100;x<1000;x++)
{
g = x % 10; // 取个位
s = (x / 10) % 10; // 取十位
b = (x / 10 / 10) % 10; // 取百位
// 个 百位对换,生新y
y = g * 100 + s * 10 + b;
// 如果y小,说明不是3位数
if (y<x)
continue;
// 相加是否等于1333
if (x+y==1333)
printf("%d + %d = 1333\n",x,y);
}
return 0;
} 一般这种题是列举x然后用1333-x去得到y看看漫步满足要求 #include <stdio.h>
int main()
{
int x,y;
for(x=100;x<1333;x++)
{
y=1333-x;
if((x%10==y/100)&&(y%10==x/100)&&(x%100/10==y%100/10))
{
printf("%d+%d=1333\n",x,y);
}
}
return 0;
}
页:
[1]