我很难完成一些家庭作业,如果有人能把我送上正确的道路,我将不胜感激。
基本上,我被要求定义一个函数,该函数计算在数字大于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来创建每个目标文件时,它可以工作),但没有输出或执行任何内容。
如果有人能让我知道我哪里出错了,我真的很感激!或者,如果你能给我一个提示,我相信我能搞清楚。我感到很紧张,因为这只是长篇作业的第一部分,我无法相信我甚至无法想出这些简单的东西!
提前致谢!
答案 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)
为了澄清,您是否在主.C文件中包含了标题(例如answer = iteration (9.8, 5);
)?
此外,您有迭代返回'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()">×</button>
</div>
<div class="modal-body">
<h3>asjdkljasldjal;sdjakl;djal;jqwjeo8qajeoqjeoqoweuq90euq0uew0qjwe09quwe9qu0equ09weu8q90uwe0que98que9quew89que9quw9eq9weuq98eualsnkdakjsd</h3>
</div>
</script>
)。
只要您已经包含了标题,您的程序很可能会按预期执行,但如果没有对返回的值执行任何操作,则它只会在不输出任何内容的情况下结束。