return和exit函数区别及杨辉三角

来源:互联网 发布:淘宝首页滚动图片尺寸 编辑:程序博客网 时间:2024/06/15 20:50

return和exit的区别

return和exit函数都是正常中断时所调用的函数。
1.exit函数结束的是当前进程/当前程序,在整个程序中,只要调用exit就结束了。

int fun(){    printf("now fun started\n");    printf("\n");    int arr[10] = { 12, 23, 34, 45, 56, 67, 78, 89, 90, 3 };    int len = sizeof(arr) / sizeof(arr[0]);    for (int i = 0; i < len - 1; ++i)    {        int temp = i;        for (int j = i + 1; j < len; ++j)        {            if (arr[j] > arr[i])            {                temp = j;            }        }        int a = arr[temp];        arr[temp] = arr[i];        arr[i] = a;    }    //exit(0);    return 0;    for (int w = 0; w < len; ++w)    {        printf("%d  ", arr[w]);    }    printf("now fun ended\n");}void main(){    printf("now main start\n");    fun();     int sum = 10;    for (int i = 1; i < sum; ++i)    {        printf("1  ");        printf("\n");    }}

我编写了一个简单的fun函数,分别在该函数中调用eixt(0)和return 0这两句,并在main函数中的最后一个大括号下加断点,发现:
当调用exit(0)时,程序并不在断点处停留,直接退出程序,但是换成return 0 后,程序会运行到断点处停留。
这就是第一条所说的exit直接结束进程。
2.return()是当前函数返回,如果当前函数是main函数,自然也就结束当前进程了,如果不是,就退回到上一层调用。通常在递归调用时,只会使用return函数,而不是exit()函数。


杨辉三角

void main(){    int sum = 10;//行数    int arr[10][10] = { 0 };    for (int i = 0; i < sum; ++i)//遍历每一行    {        for (int k = 0; k < sum - i; ++k)//加入空格,便于观看        {            printf("   ");        }        arr[i][0] = 1;//每一行的第一个为1        printf("%6d", arr[i][0]);        for (int j = 1; j <= i; ++j)//计算每一行的从第二列开始的每个系数        {            arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];            printf("%6d", arr[i][j]);        }        printf("\n");    }}

对杨辉三角做一个简单的复习,使用的是二维数组。规律如下:
1.每一行的第一个数字都为0.
2.每一行的元素个数等于改行的行数(行从1开始)。
3.每一行除了第一个数字,其他数字值为上一行该列的值加上一行后退一列值。
1
1 1
1 2 1
1 3 3 1
是这样的规律。

原创粉丝点击