2014-09-05 90 views
0

我正在嘗試使用各種類型的for循環找到從1到10的數字的立方體。我想知道爲什麼我的for循環評估後,程序停止,並不繼續評估while循環?有人可以幫忙嗎? for循環和while循環應該按照這種方式來做同樣的事情。謝謝。如何在C編程中運行多個for循環?

#include <stdio.h> 
#include <stdlib.h> 

/* 
* 
*/ 
int main(void) 
{ 
    int num; 
    for (num=1; num<11; num++){ 
     printf("The cube of %d is %d\n", num, num*num*num); 
    } 
    getchar(); 
    return 0; 
} 

#include <stdio.h> 
int main1(void) 
{ 
    int num1; 
    scanf("%d", &num1); 
    while (num1<11) { 
     printf("The cube of %d is %d\n", num1, num1*num1*num1); 
     num1++; 
     } 
    getchar(); 
    return 0; 
} 

PS我的第一個編程語言是Python,所以我很困惑的第一個for循環後,爲什麼C終止... :(

+2

當特殊的'main()'函數返回時,程序將終止。嘗試在助手功能中執行各種立方體。然後讓'main'一個接一個地打電話給他們。 – BlackVegetable 2014-09-05 22:00:23

+7

'main()'是程序的入口點。 'main1()'是一個永遠不會被調用的函數。如果你用python來考慮它 - main()和main1()會等於def main()和def main1() - 你會如何在python中調用這些函數? – birryree 2014-09-05 22:00:26

+1

此外,如果兩個市電都在同一個文件中,則不需要包含stdio 2x。在for循環之後,你可以嘗試'int resultMain = main1();' – scrappedcola 2014-09-05 22:02:15

回答

3

main()main1()是兩個不同的功能。您的系統調用main(),你的程序的入口點。當main()結束,那就是當你的程序終止。main1沒有觸及根本。

要麼將​​兩者連接起來的功能(複製粘貼到main1main)或從main()撥打main1()。但是,你首先需要一個前瞻性聲明:

int main1(void); 

int main(void) 
{ 
    // ... 
    main1(); 
} 

int main1(void) { ... } 

BTW,main1不是一個功能一個很好的名字,因爲它酷似main。這可能會讓維護你的代碼的人感到困惑。

+1

這不僅與'main'類似,而且缺少對它的作用的任何描述。就我個人而言,我會選擇'cubeByFor'和'cubeByWhile'這樣的東西,並從'main'中調用每一個。 – OJFord 2014-09-05 22:09:39

-2

在聲明num和num1之後,您將for循環中的num設置爲1,while循環中不設num1。加上提到的主要功能問題