2014-09-05 89 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。加上提到的主要功能问题