[英]For loop inside function does'n seem to work properly in C
我必须在 c 中创建一个 function 一个值和两个指针,验证该值是素数还是合数,显示最大和最小除数,返回 1 表示复合,返回 0 表示素数。 问题是正确返回了最小值,但最大值返回了一些超出 for 循环限制的内容,例如:n = 12 min 是 2 max 是 61 为什么 *max = i 返回一个大于变量“value”的数字?
这是代码:
#include<stdio.h>
int divs(int value, int *max, int *min)
{
for (int i = 2; i < value; i++)
{
if (value % i == 0){
if (*max == 0){
*min = i;
}
*max = i;
}
}
if (*max != 0)
return 1;
else
return 0;
}
int main(void)
{
int n,max = 0,min = 0,result;
printf("type a number bigger than 2\n");
scanf("%d",&n);
divs(n,&max, &min);
result = divs(n,&max, &min);
if (result == 1)
printf("min is: %d max is: %d",min,max);
printf("%d\n",result);
return 0;
}
您的代码很好,您只是在 main 的 printf 语句中遗漏了一个 \n,更改为:
printf("min is: %d max is: %d\n",min,max);
这导致您的下一个 printf ('1') 在它旁边打印。
您没有打印新行:
if (result == 1)
printf("min is: %d max is: %d",min,max);
printf("%d\n",result);
当result
为 1 时,首先打印min is: 2 max is: 6
,然后打印1
。
将第一部分更改为:
if (result == 1)
printf("min is: %d max is: %d\n", min, max);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.