簡體   English   中英

如何用C語言實現函數?

[英]How do I implement functions in the C language?

我真的很難完成一些家庭作業,如果有人能讓我走上正確的道路,我將不勝感激。

基本上,我被要求定義一個函數來計算迭代次數,直到一個數字大於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說法正確的是(我不知道如果這是正確的代碼,只是把一個逗號為“或”)。 在那之后,我想其余的代碼沒問題(澄清將不勝感激!)。

完成此操作后,我創建了一個頭文件( Count.h ,其中該文件為Count.c ):

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

最后,我在另一個文件中使用了這個頭文件,它只是頭文件,然后是主函數,如:

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

一切都編譯得很好(但不是通過“make”命令,當我單獨使用 icc 創建每個目標文件時,它可以工作),但沒有輸出或執行任何內容。

如果有人能讓我知道我哪里出錯了,我將不勝感激! 或者如果你能給我一個提示,我相信我能弄清楚。 我感到壓力很大,因為這只是漫長家庭作業的第一部分,我不敢相信我連這么簡單的東西都想不通!

提前致謝!

這不是一個好問題,我通常只會評論,但我發現格式化評論更難......這就是問題所在,可能......

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

所以在 C 中=是賦值運算符,而==測試相等性......所以結果表達式y=0將始終評估為假......所以永遠不會輸入這個 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. 澄清一下,您是否在主 .C 文件中包含了標題(即#include "Count.h" )?

  2. 此外,您有迭代返回 'n',但什么也不做。 您必須將返回的整數分配給變量( answer = iteration (9.8, 5); )或輸出它( printf("%i", iteration (9.8, 5)) )。

只要你包含了你的頭文件,你的程序很可能會按預期執行,但是沒有對返回的值做任何處理,它只是結束而不輸出任何東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM