我的C程序编译但不运行

时间:2017-10-21 15:01:58

标签: c

我正在尝试编写一个程序来检查给定的数字是奇数还是偶数而且是否为素数。它编译没有问题,但没有结果出来。我需要一些提示。提前谢谢。

int data(int n) {
    int  i, count;
    count = 0;
    if (n % 2 == 0){
        printf("%d is even ", n);
    }
    if(n % 2 != 0){
        printf("%d is odd ", n);
    }
    while (i = 2, i <= n/2, i++){
        if (n % i == 0){
            count++;
            break;
        }
    }
    if (count == 0){
        printf("and prime\n");
    }
    else {
        printf("and not prime\n");
    }   
    return 0;
}

int main(){
    data(11);
    data(74);
    data(307);
    data(7402);
    data(9357);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

错误原因必须是while (i = 2, i <= n/2, i++)。您可能想要一个for循环,如

for(i = 2; i <= n/2; i++){

由于逗号运算符的工作方式,i = 2, i <= n/2, i++的值是i++的值。结果将是最后一个表达式的结果。

看看here

表达式将从左到右进行计算,但最右侧表达式的结果将成为逗号分隔总表达式的值。

否则,如果您打算进行while循环,请执行

i=2;
while (i <= n/2){
     ........
     ........
     i++;
}

其中i++是循环中的最后一个语句。