如何最有效地组合包括checkprime在内的函数 #包括 #包括 #包括 #定义FALSE 0 #定义真1 ...................... int checkprime(字符数) { int i,有效; 有效=真; 对于(i=2;i
您正在将如何最有效地组合包括checkprime在内的函数 #包括 #包括 #包括 #定义FALSE 0 #定义真1 ...................... int checkprime(字符数) { int i,有效; 有效=真; 对于(i=2;i,c,C,您正在将c传递给checkprime,但您从未将其设置为任何值。因此,c的内容未定义,尝试读取它会导致未定义的行为 将数组传递给atoi函数,将其转换为整数并分配给c。还应将checkprime中的number参数的类型更改为int,以匹配传入的内容 看起来您还缺少一个或: #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #define FAL
c
传递给checkprime
,但您从未将其设置为任何值。因此,c
的内容未定义,尝试读取它会导致未定义的行为
将数组传递给atoi
函数,将其转换为整数并分配给c
。还应将checkprime
中的number
参数的类型更改为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);
}
}
}
编辑:
有关代码的更多问题:
您没有正确打印结果:
if ( !checknumeric(inputarray))
{
printf("Invalid input");
}
// else goes here
{
primeanswer = checkprime(c);
...
这有两个问题。首先,要打印的字符串的固定部分是printf
的第一个参数。其余部分被替换。因此前两个参数应组合成一个字符串。其次,使用%d
在int
处打印,但inputarray
是字符数组y、 您应该传入c
,这是您要打印的整数值
printf("%d", "is a prime", inputarray);
...
printf("%d", "not prime", inputarray);
您正在将c
传递给checkprime
,但从未将其设置为任何值。因此,c
的内容未定义,尝试读取它会导致未定义的行为
将数组传递给atoi
函数,将其转换为整数并分配给c
。还应将checkprime
中的number
参数的类型更改为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);
}
}
}
编辑:
有关代码的更多问题:
您没有正确打印结果:
if ( !checknumeric(inputarray))
{
printf("Invalid input");
}
// else goes here
{
primeanswer = checkprime(c);
...
这有两个问题。首先,要打印的字符串的固定部分是printf
的第一个参数。其余部分被替换。因此前两个参数应组合成一个字符串。其次,使用%d
在int
处打印,但inputarray
是字符数组y、 您应该传入c
,这是您要打印的整数值
printf("%d", "is a prime", inputarray);
...
printf("%d", "not prime", inputarray);
dbush的答案是正确的,但是您仍然会得到您已经看到的结果,因为您的checkprime
方法中有一个bug:
printf("%d is a prime", c);
...
printf("%d not prime", c);
将修复那里的逻辑。dbush的答案是正确的,但您仍然会得到您已经看到的结果,因为您的checkprime
方法中有一个bug:
printf("%d is a prime", c);
...
printf("%d not prime", c);
将修复那里的逻辑。我可以这样编写语法吗?inputarray[4]=atoi(c);@Absolute初学者不,您试图使用c
而不将其再次设置为任何值。您需要的是c=atoi(inputarray)
。别忘了修复checkprime
的参数类型,也要修复Haldean Brown的回答中提到的循环条件。谢谢。我已经调整了它,但在试用时仍然显示为未定义的行为。将用我现在的内容编辑我的原始帖子。@Absolute初学者确保保留原始代码,以便列出的答案不会丢失上下文。谢谢dbush。我已经按照上面的方式修改了代码。我注意到应该是c而不是inputarray,因为我已经将c设置为inputarray的整数值。现在我认为我的逻辑是错误的,尽管我尝试了任何数字,但我总是得到0是prime。我的checkprime函数逻辑正确吗?我可以像这样编写语法吗is?inputarray[4]=atoi(c);@Absolute初学者不,您试图使用c
而不将其再次设置为任何值。您想要的是c=atoi(inputarray)
。别忘了修复checkprime
的参数类型,也要修复Haldean Brown的回答中提到的循环条件。谢谢。我已经调整了它,但在试用时仍然显示为未定义的行为。将用我现在的内容编辑我的原始帖子。@Absolute初学者确保保留原始代码,以便列出的答案不会丢失上下文。谢谢dbush。我已经按照上面的方式修改了代码。我注意到应该是c而不是inputarray,因为我已经将c设置为inputarray的整数值。现在我认为我的逻辑是错误的,尽管我尝试了任何数字,但我总是得到0是prime。我的checkprime函数逻辑正确吗?