计数 ISO C89 中的函数调用

Counting Function calls in ISO C89

我必须用 C 编写一个函数作为我的作业。 给定函数 is_prime(n) 和 nth_prime(n),如果 n 是素数则第一个返回 1(如果不是素数则返回 0)并且 nth_prime 返回第 n 个素数,我有编写函数 next_prime(count) 计算它被调用的时间,然后 returns "count-th" 素数。 count 必须是静态无符号整型变量。 如果n=0(n用scanf给出),count值必须重置为0,函数returns第一个素数,2.
我不能使用结构、数组或递归。 我是编码新手,我不知道该怎么做。 我使用 Visual Studio 2010,我必须将它编译为 ISO C89(ANSI C)。 这些函数必须写在库文件中,唯一要计算的东西,所以我不能在 main () 函数中使用 count++。 这是我到目前为止所做的。

unsigned int next_prime( unsigned int count ) {
    if( count == 0 ) {
        if ( n=!0 ) {                       
            return nth_prime( count );
            count++;
        } else {
            count = 0;
            return 2;
        }      
    } else {    
        if ( n=!0 ) {                       
            return nth_prime( count );
        } else {
            count = 0;
            return 2; 
        }       
    }
}   

这里有一个函数可以满足您的问题:

/* the function next_prime(count) */
unsigned int next_prime(unsigned int count) {
    /* avoid "unused parameter" warning */
    (void)count;
    /* introduce this block because defining the variable count here will read to an redeclaring error */
    {
        static unsigned int count = 0;
        int n = -1;
        /* n is given with a scanf */
        scanf("%d", &n);
        /* if n=0 */
        if (n == 0) {
            /* count value must be reset to 0 */
            count = 0;
            /* return the first prime number, 2 */
            return 2;
        } else {
            /* count the time it is called */
            count++;
            /* return the "count-th" prime number */
            return nth_prime(count);
        }
    }
}