【问题标题】:Function outside main not returning proper value from For Loopmain 外部的函数没有从 For 循环返回正确的值
【发布时间】:2017-03-27 14:25:36
【问题描述】:

由于某些莫名其妙的原因,我对 C 中的语法做得不好。让我切入细节并解释我遇到的问题。

在 main 中获取用户输入的整数,将整数发送到一个函数,在该函数中它使用“for 循环”来计数到该数字。

问题:我无法在 main.js 中获得正确的返回值。循环工作正常,但循环的函数返回 0。我被困在这里。来回做了几次调整,研究了正确的语法,但我无法完全理解它应该是什么。

int forLoop(int input); //function//

int main(){
    int input;
    printf("Enter an integer \n");
    scanf_s("%d", &input);
    printf("Results %d ex: 1 2 3...8 ", forLoop(input));

    return 0;
}//end here//

int forLoop(int input){ //function//

    for (int i= 0  ; i < input; ) {
        printf("%d \n", i = i + 1);     

    }
    return 0;
}

【问题讨论】:

  • 你期望的输出是什么?如果我给号码5,我会得到1 2 3 4 5
  • return 0; ----> return i;.....?
  • 你在函数的末尾有一个return 0;,你为什么期望它返回任何东西!?
  • @LPs 或者,也许是 return --i;,考虑 0 索引?
  • @SouravGhosh - 为什么将存储操作的结果返回给局部变量? :)

标签: c for-loop visual-studio-2015


【解决方案1】:

该函数返回零,因为您在其中输入了return 0;

相反,这样做:

int forLoop (int input){
    int i;
    for (i= 0; i < input; i++) {
        printf("%d \n", i);     

    }
    return i; // will be the same value as "input"
}

【讨论】:

  • 没错!完全错过了在循环之前声明 i 的想法。但是,它只返回 5 aka 输入或最终数字。如何让它显示函数 1 2 3 4 5 的完整执行??
  • @EddardPeartree 您在函数内部打印数字(0-4),这就是它已经做的事情。
  • 好的,但是如果我在 main 中的任何其他点调用该函数,它会这样工作吗?
  • @EddardPeartree 是的。
  • 感谢@Lundin 的帮助!
猜你喜欢
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 1970-01-01
相关资源
最近更新 更多