函数的代码说明

时间:2016-01-29 12:46:15

标签: c arrays function

我得到了一个代码,我需要解释一下。不幸的是,我不理解该程序的几行,我发现很难解释它。如果有人可以帮助我更好地解释代码并且解释我在解释中没有包含的部分,我将不胜感激。这些是我发现很难解释的程序部分:

 return (array[n] + total(array,n-1));

(array[n] == 1) ?

这是我尝试解释代码:

  

在main函数包含之前定义了一个名为total的函数   一个由14个对象组成的数组和一个整数n作为它的参数。代码   在函数中包含一个if循环,如果n等于0,则数组将   返回0个对象。否则返回添加了n个对象的数组   总。在main函数中,包含14个对象的数组是   定义。 Sum,n和cattotal都被定义为整数。总和是   设为总数。 for循环用于从中获取信息   数组并打印每个巴士站有多少只猫。递归是   用于循环以保持重复直到数组用完为止   对象,即14个对象。巴士站总共打印出来   直到它到达最后一站的方式。最后,总金额   看到的猫也印了。

代码:

#include <stdio.h>

int total(int array[14], int n)
{

    if (n == 0) {
        return array[0];
    }

    return (array[n] + total(array,n-1));
}

int main(void)
{
    int array[14] = {5,1,3,2,3,7,0,1,0,1,4,0,2,1}; //array storing 14 objects
    int sum, n;
    int cattotal = 0;

    sum = total(array,13);

    for (n=0; n < 14; n++){

    (array[n] == 1) ?

    printf("Bus stop #%d : %d cat\n",(n+1),array[n]):

    printf("Bus stop #%d : %d cats\n",(n+1),array[n]);

    cattotal += array[n];

    printf("Bus stop#%d total: %d cats\n\n)",(n+1),cattotal);
    }

    printf("\nTotal amount of cats seen: %d\n",sum);

    return 0;
}

2 个答案:

答案 0 :(得分:1)

int total(int array[14], int n)是一个递归函数,产生索引n之前所有元素的总和。

(array[n] == 1) ?
printf("Bus stop #%d : %d cat\n",(n+1),array[n]):
printf("Bus stop #%d : %d cats\n",(n+1),array[n]);

相同
if (array[n] == 1) {
    printf("Bus stop #%d : %d cat\n",(n+1),array[n]);
} else {
    printf("Bus stop #%d : %d cats\n",(n+1),array[n]);
}

使用三元运算符? :

表示

答案 1 :(得分:0)

(array[n] == 1) ?

   printf("Bus stop #%d : %d cat\n",(n+1),array[n]):

   printf("Bus stop #%d : %d cats\n",(n+1),array[n]);

是一种奇怪的写作方式:

if ((array[n] == 1)
  printf("Bus stop #%d : %d cat\n",(n+1),array[n]);
else
  printf("Bus stop #%d : %d cats\n",(n+1),array[n]);

使用&#34;条件表达式&#34;。

(array[n] + total(array,n-1));

total函数的递归调用。

total函数计算给定数组中n个第一个元素的总和。 N个数字列表的总和相当于N-1个第一个数字加上第N个数字的总和,而total函数恰好表示了这个数字。