C ++程序调试heIp

时间:2015-07-18 18:42:33

标签: c++ debugging

问题: 厨师先生已被给予N号。他倾向于将他得到的任何东西加倍。所以现在他和他一起得到N号,并且他将N数乘以2.现在Chef很迷信。他相信一些被称为幸运数字的东西。他的幸运数字被定义为任何数字,其中 当乘以2时除了1,2和N之外没有其他因素。如果数字是幸运的,你所要做的就是打印“LUCKY NUMBER”。如果号码不是幸运号码,请打印“对不起”.. 输入

第一行包含T,即测试用例的数量。接下来的T行的每一行都由N组成。 输出

如果数字是幸运的话打印LUCKY NUMBER,如果数字不幸,则打印“抱歉”,然后是新行。 约束

1 <= T <= 1000

1·; = N&LT; = 1000000

输入

3

26

12

11

输出:

抱歉

抱歉

LUCKY NUMBER

我的计划

#include <iostream>

using namespace std;


int main()
{
   int x;
   string l;
   cout << "Input Number Codechef.." << endl; 
   cin>>x;
   COND:
   if ((x*2)%1 = 0 && (x*2)%2 = 0 && (x*2)%3 != 0)
   {

       l = "LUCKY NUMBER";
       cout<<l;
       else
       {
       l = "sorry";
       cout<<l;

       }


   }
   if (l = "LUCKY NUMBER")
   {
       break;
       else
       {
          goto COND;  
       }
   }
   return 0;
}

1 个答案:

答案 0 :(得分:1)

比较数据时,应使用=而非l="hello";,因为一个等式符号表示赋值,其中两个表示测试是否相等。

"hello"将值l分配给变量l=="hello",而l"hello"等于l="hello"时返回true(1)如果不是,则为false(0)。

这意味着,if (l = "LUCKY NUMBER") { break; else { goto COND; } } 始终结果为true。

此外,你似乎在逻辑(和代码)中有一个错误:

if (l == "LUCKY NUMBER") break;
else goto COND;  

你想这样写:

if ((x*2)%1 = 0 && (x*2)%2 = 0 && (x*2)%3 != 0)
{
   l = "LUCKY NUMBER";
   cout<<l;
   else
   {
   l = "sorry";
   cout<<l;

   }
}

这里也是如此

if (((x*2)%1 == 0) && ((x*2)%2 == 0) && ((x*2)%3 != 0))
l = "LUCKY NUMBER";
else l = "sorry";

cout<<l;

你需要这个:

{{1}}