计数 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);
}
}
}
我必须用 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);
}
}
}