我正在尝试用c代码创建一个程序,作为高中教育项目的一部分,我的打印结果有些麻烦。 主要想法是寻找连续的非方形自由数字团队的程序。该数量的数量取决于预处理器定义的参数K的值。 例如,如果定义的参数K设置为值2,则在检查2个连续的非方形空闲数后,程序应打印。检查没有上限数量。但是,我编写的代码仅对参数1成功。为了正常工作,我是否需要进行任何修正? 我已经制作了部分代码:
#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;
}
答案 0 :(得分:0)
看看这些文章,最重要的是你的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编程时的常见问题,这可能是您的代码无效的原因。比较运算符为==
,而非=
,因为它已用作赋值运算符。
这意味着如果if (count = 0)
等于0,则count
不会运行。首先,它将执行您在语句中放置的内容,即“将count
设置为0”或{{ 1}}。然后,如果该操作返回1(true),则将执行if语句的内容。在我的系统上(Linux,GCC)count = 0
总是返回0,但我没有检查它是否被定义为标准行为。这意味着count = 0
永远不会执行,只是通过它,如果它总是将num = i
设置为0.这可能不是你想要的。与count
相同。
我不知道代码应该做什么,也许这正是你想要做的。但即使你这样做,也不应该在if语句中设置变量。阅读和减慢你的速度令人困惑,并导致错误。如果你真的想要做你发布的代码所做的事情,它会是这样的:
if (flag = 0)
这就是您的代码所做的事情。但我99%肯定你不想要那个,所以首先要改变你的count = 0;
if (0) { // 0 = false
num = i;
}
以使用if
。如果能解决这个问题,请告诉我,如果还有其他问题无法解决,我们会解决它。希望有所帮助!