2017-10-21 96 views
-2

我正在尝试编写一个程序,检查给定的数字是奇数还是偶数以及素数或不是素数。它编译没有问题,但没有结果出来。我需要一些提示。提前致谢。我的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

你的问题是你写'while'而你想写*'for(i = 2; i <= n/2; i ++){' –

+1

请缩进代码以使其可读 –

回答

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++是在循环的最后一条语句。