2015-05-28 53 views
-7
#include "stdafx.h" 
#include <iostream> 


bool primeNumber(int x) 
{ 
    return (x==2,3,5,7) ; 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    using namespace std ; 

    cout << "ENTER ONE DIGIT NUMBER - " ; 
    int x ; 
    cin >> x ; 

    if (primeNumber) 
     cout << x << " IS A PRIME NUMBER " <<endl; 
    else 
     cout << x << " IS NOT A PRIME NUMBER " << endl; 
    return 0; 
} 

请帮我..result是相同的,每次也就是“X”是一个素数.. 还建议改变......我只是一个初学者所以也暗示方法提高我的代码错误,同时使用if语句

回答

6

试试这个:

if (primeNumber(x)) 

,而不是

if (primeNumber) 

,改变你的回报STA tement像

return x == 2 || x == 3 || x == 5 || x == 7; 
如果要比较值的

+0

谢谢主席先生..for帮助我,也ü可以提出一个不同的方式做到这一点的任务,可能会更好,因为我找到了解决但它并不满意......在某种意义上说它没有得到满足,所有东西都写在主要的 –

6
return (x==2,3,5,7) 

这不会做你认为是这样,用逗号分隔的表达式返回列表中的最后一个表达式的值,你primeNumber方法基本上总是返回7计算结果为true

你要值与每一个对比,如:

return x == 2 || x == 3 || x == 5 || x == 7; 

此外,像拉胡尔指出的那样,你是不是调用方法,但只是指针比较功能primeNumber是不同的从0开始,这是平凡的true

+0

有趣的细节!我没有想过逗号分隔的表达式超出它们的正常用法(即声明)。 –

+0

谢谢先生..帮助我,也可以建议一个不同的方式来完成这项任务,这可能会更好,因为我找到了解决方案,但并不满意......在某种意义上说,它不是很好提出的一切都写在主 –

3

此函数总是返回true

bool primeNumber(int x) 
{ 
    return (x==2,3,5,7) ; 
} 

因为使用逗号操作中return语句,它的值是7,从0

不同我想你指的是以下

bool primeNumber(int x) 
{ 
    return (x == 2 || x == 3 || x == 5 || x == 7); 
} 

还if条件中的条件

if (primeNumber) 

还评估总是正确的,因为primeNumber是一个有效的函数指针从0

不同,你必须写

if (primeNumber(x)) 

至于我,那么我会写下面的方式

if (primeNumber(x % 10)) 

因为没有阻止用户输入包含多个数字的数字。

的功能可以被定义如下方式

bool primeNumber(unsigned int x) 
{ 
    bool prime = (x == 2) || (x % 2 != 0 && x != 1); 

    for (unsigned int i = 3; prime && i * i <= x; i += 2) 
    { 
     prime = x % i != 0; 
    } 

    return prime; 
} 
+0

谢谢你先生..帮助我,也可以建议一个不同的方式来做这个任务可能会更好,因为我找到了解决方案,但不满意...在一个满意的感觉它没有正确呈现一切都写在主 –

+0

@Deepak Dahiya看到我的更新后。 –

+0

先生感谢您的帮助,,, –