gpt4 book ai didi

c - 代码执行结果错误

转载 作者:行者123 更新时间:2023-11-30 16:39:15 25 4
gpt4 key购买 nike

我正在尝试用 C 代码创建一个程序,作为高中教育项目的一部分,但我的打印结果遇到一些问题。主要思想是一个寻找连续的非正方形自由数字组的程序。该数字的数量取决于预处理器定义的参数 K 的值。例如,如果定义的参数 K 设置为值 2,则程序应在检查 2 个连续的非正方形自由数字后打印。检查数量没有上限。但是,我编写的代码仅适用于参数一。为了正常工作,我需要做任何修正吗?这是我编写的部分代码:

#include <stdio.h>
#include <stdlib.h>
/* Including the math library for sqrt function */
#include <math.h>
/* Testing Environment values */
#define K 2

int main (void) {
// Declaration and appropriate Initialization of Variables Section
unsigned int num = 0, last = 0, count = 0, i, j, lim, Div, temp, start, first, flag;
long long int div;

// Non-Squarefree number check section
for (i = 1; count < K; i++) {
flag = 0 ;

for (j = 2; (j <= sqrt(i)) && (count < K); j++) {
while (( (i % (j * j)) == 0) && (count < K) ) {
flag = 1;

if (count = 0) {
num = i; /* Storage of the first checked number in case of success finding the K requested numbers */
}

count++;
printf("count++: %d \n", count);
Div = j;
last = i; /* Storage of the last checked number that mets the requested critiria */
printf("last: %d \n", last);
break;
}

if (flag = 0) { /* Reinitialization of variable values in case of squarefree number */
count = 0;
printf("count_null: %d \n", count);
num = 0;
printf("count: %d \n", count);
break;
}

break;
}
}

/* test execution prints */
printf("----------------------------------------") ;
printf("K: %d \n", K) ;
printf("last: %d \n", last) ;
printf("num: %d \n", num);
start = num;
return 1;
}

最佳答案

看看这些部分,尤其是 if 语句。

if (count = 0) {

// Storage of the first checked number in case
// of success finding the K requested numbers

num = i;
}

if (flag = 0) {

// Reinitialization of variable values in case
// of squarefree number

count = 0;
printf("count_null: %d \n", count);
num = 0;
printf("count: %d \n", count);
break;
}

这是 C 编程入门时的常见问题,并且很可能是您的代码无法运行的原因。比较运算符是 ==,而不是 =,因为它已用作赋值运算符。

这意味着如果 count 等于 0,则 if (count = 0) 不会运行。首先,它将执行您在语句中放入的内容,即“set count 为 0”,或 count = 0。然后,如果该操作返回 1 (true),则 if 语句的内容将执行。在我的系统(Linux、GCC)上,count = 0 始终返回 0,但我没有检查它是否被定义为标准行为。这意味着 num = i永远执行,并且如果它始终将 count 设置为 0,则只是传递它。这可能不是您想要的想。与 if (flag = 0) 相同。

我不知道代码应该做什么,也许这正是你想要做的。但即使你这样做了,你也不应该在 if 语句中设置变量。阅读起来很困惑,会减慢你的速度,并导致错误。如果您真的想做您发布的代码所做的事情,它会像这样:

count = 0;

if (0) { // 0 = false
num = i;
}

这就是您的代码的作用。但我 99% 确定您不希望这样,所以首先将您的 if 更改为使用 ==。请告诉我这是否可以解决问题,如果还有其他问题不起作用,我们会解决。希望有帮助!

关于c - 代码执行结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114303/

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