如何在C语言中实现函数?

时间:2015-10-18 00:49:13

标签: c function compilation header

我很难完成一些家庭作业,如果有人能把我送上正确的道路,我将不胜感激。

基本上,我被要求定义一个函数,该函数计算在数字大于10或某个数字(max)之前发生的迭代次数。我已经完成了这样的功能:

#include <stdio.h>

int iteration(float x, int max){
    int n; 
    float y;

    for (n=0;y=0;n++) {
        y=y+x;

        if (y>=10,max) {
            break;
        }
    }
    return n;
}

首先,我甚至不确定if声明是否正确(我不知道它是否只是为逗号添加逗号的正确代码;或者&& #34)。在那之后,我想象其余的代码是可以的(澄清将非常感谢!)。

完成此操作后,我创建了一个头文件(Count.h,其中此文件为Count.c),只有:

#include <stdio.h>
int iteration(float x, int max); 

最后,我在另一个文件中使用了这个标题,这只是标题,然后是主函数,如:

int main () {
    iteration (9.8, 5);
    return 0;
}

所有内容编译都很好(但不是通过&#34; make&#34;命令,当我单独使用icc来创建每个目标文件时,它可以工作),但没有输出或执行任何内容。

如果有人能让我知道我哪里出错了,我真的很感激!或者,如果你能给我一个提示,我相信我能搞清楚。我感到很紧张,因为这只是长篇作业的第一部分,我无法相信我甚至无法想出这些简单的东西!

提前致谢!

2 个答案:

答案 0 :(得分:3)

这不是一个很好的问题,我通常会发表评论,但我觉得格式化评论更难......这就是问题,可能......

for (n=0;y=0;n++)

所以在C =中是赋值运算符,==测试相等...所以结果表达式y=0将总是计算为false ...所以这个for循环永远不会输入(等效于while(0)

看起来你实际上并不关心那个词,所以你可以把它留空或者使它成为真正的价值......或者只是让它成为退出标准,所以......

assert (x>0.0); // otherwise the loop will never exit
for (int i = 1; ; i++) // more idiomatic to use i as a loop counter
{
     y+=x;
     if (y > max)
     {
          return i;
     }
}
return 0; // already over max

所以你需要:

float y = 0;

摆脱n它没有做任何事情。

或者你可能意味着像......

for( n=0,y=0;;n++)

这很好,但有点奇怪和复杂

答案 1 :(得分:0)

  1. 为了澄清,您是否在主.C文件中包含了标题(例如answer = iteration (9.8, 5);)?

  2. 此外,您有迭代返回'n',但不执行任何操作。您必须将返回的整数分配给变量(printf("%i", iteration (9.8, 5)))或输出它(<script type="text/ng-template" id="myModalContent.html"> <div class="modal-header"> <button class="close" type="button" ng-click="cancel()">&times;</button> </div> <div class="modal-body"> <h3>asjdkljasldjal;sdjakl;djal;jqwjeo8qajeoqjeoqoweuq90euq0uew0qjwe09quwe9qu0equ09weu8q90uwe0que98que9quew89que9quw9eq9weuq98eualsnkdakjsd</h3> </div> </script> )。

  3. 只要您已经包含了标题,您的程序很可能会按预期执行,但如果没有对返回的值执行任何操作,则它只会在不输出任何内容的情况下结束。