NYJYA 发表于 2019-1-20 14:28:16

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;
}

ba21 发表于 2019-1-20 15:08:38

不知道你要问什么,就运行而 言是没问题。
不过有条件,还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;
}

迷雾道长 发表于 2019-1-20 16:39:00

一般这种题是列举x然后用1333-x去得到y看看漫步满足要求

迷雾道长 发表于 2019-1-20 16:44:32

#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]
查看完整版本: c问题求助!!!谢谢了