C编程,数组打印不正确

C programming , array not printing properly

本文关键字:打印 不正确 数组 编程      更新时间:2023-10-16

因此,对于类,我们正在使用素数进行一些加密/解密算法。我正在制作这个节目的第一部分。我正试图让程序检查一个数字是否为素数。在这之后,我希望程序将该数字之前的所有素数存储在一个名为prime_array的数组中。我试着把这些结果打印在屏幕上。它并没有按照我想要的方式工作。我稍后会用这个来解密一些更复杂的东西。只是想看看是否有人能看到我的代码的哪一部分导致了问题。

代码:

  #include <stdio.h>
    int main()
    {
        int n;
        int prime;
        int prime_array[1000];
        int prime_answer;
        int j=0;
        printf("enter a number for n : ");
        scanf_s("%d", &n);   
        if (n % 2 == 1)
        {
            printf("Number is prime.");
            getchar();
            getchar();
            for (int i = 0; i <= n; i++)
            {
                if (n - 1 % 2 == 1)
                {
                    n--;
                    prime_array[j] = n;
                    j++;    
                }
                else
                {
                    // do nothing
                }    
            }    
        }
        else if (n % 2 == 0)
        {
            printf("Number is not prime.");
            getchar();
            getchar();
        }
        for (int k = 0; k<= 10; k++)
        {
            printf("nn %d",prime_array[k]);
            if (k == 10);
            {
                getchar();
                getchar();       
            }       
        }        
}

问题是这个条件-

if (n - 1 % 2 == 1)

此表达式被视为(n-(1 % 2))==1,因为%的优先级高于-,因此首先计算1 % 2。由于1 % 21,表达式变为n-1,所以在n2之前,条件不会是true不是您想要的)。

你需要这样写-

if ((n - 1) % 2 == 1)