gpt4 book ai didi

c - 如何最有效地组合包括 checkprime 在内的功能

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:23 25 4
gpt4 key购买 nike

#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。您还应该将 checkprime 中的 number 参数的类型更改为 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 的第一个参数。其余的将被替换。所以前两个参数应该组合成一个字符串。其次,您使用 %dint 处打印,但 inputarray 是一个 char 数组。您应该改为传入 c,这是您要打印的整数值。

printf("%d is a prime", c);
...
printf("%d not prime", c);

关于c - 如何最有效地组合包括 checkprime 在内的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com