#include <stdio.h>
#include <string.h>
#include <math.h>
#define FALSE 0
#define TRUE 1
......................
int checkprime ( char number )
{
int i, valid;
valid = TRUE;
for ( i = 2; i <= number; i++ )
{
if ( number % i == 0 ) valid = FALSE;
}
return valid;
}
int main(void)
{
char inputarray[4];
int c, primeanswer;
........................
{
primeanswer = checkprime(c);
if ( primeanswer == 1)
{
printf("%d", "is a prime", inputarray);
}
else
{
printf("%d", "not prime", inputarray);
}
}
}
我的问题是试图让checkprime函数工作。我想我可能没有初始化一些东西,因为我得到的数字在我看来好像程序输出不正确。另外,当我输入checkprime的数据时,这些数字对我来说似乎是未初始化的int值。其他的函数似乎没有被调用。
为什么我没有草签?
如何才能更有效地将checkprime函数与其他函数结合起来?有必要像我在函数中所做的那样在char/int值之间切换吗?
编辑:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE 1
................
}
int checkprime ( int number )
{
int i, valid;
valid = TRUE;
for ( i = 2; i < number; i++ )
{
if ( number % i == 0 ) valid = FALSE;
}
return valid;
}
int main(void)
{
char inputarray[4];
int c, primeanswer;
.........................
else
{
c = atoi(inputarray);
primeanswer = checkprime(c);
if ( primeanswer == 1)
{
printf("%d", "is a prime", inputarray);
}
else
{
printf("%d", "not prime", inputarray);
}
}
}
最佳答案
您将c
传递到checkprime
,但从未将其设置为任何值。因此,c
的内容是未定义的,试图读取它会导致未定义的行为。
将数组传递给atoi
函数将其转换为整数并将其分配给c
。您还应该将number
中checkprime
参数的类型更改为int
以匹配传入的内容。
看起来你还缺少一个else
:
if ( !checknumeric(inputarray))
{
printf("Invalid input");
}
// else goes here
{
primeanswer = checkprime(c);
...
编辑:
代码的更多问题:
您没有正确打印结果:
printf("%d", "is a prime", inputarray);
...
printf("%d", "not prime", inputarray);
有两个问题。首先,要打印的字符串的固定部分是
printf
的第一个参数。剩下的被替换了。所以前两个参数应该组合成一个字符串。其次,使用%d
在int
处打印,但inputarray
是一个char
数组。您应该传入c
,这是您要打印的整数值。printf("%d is a prime", c);
...
printf("%d not prime", c);
关于c - 如何最有效地组合包括checkprime的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41107994/