繁体   English   中英

function 中的 For 循环在 C 中似乎无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM