有以下程序: #include<iostream> using namespace std; int f(int x); int sum(int n) {int x,s=0;for(x = 0;x<=n;x++) s+=f(x);return s; } int f(int x) {return (x*x+1); } int main() {int a,b;cout<<"Enter a integer number:";cin>>a;b=sum(a) ;cout<<a<<","<<b<<end1;return 0; } 如果输入数字3,其输出结果是( )。
A.3,12
B.3,16
C.3,18
D.4,20
参考答案:C
解析: 这还是有关调用函数的程序,而且有两层关系。根据程序逐步分析: ①本程序包含了3个函数,其中主函数main调用了sam()函数,而在sum()函数中又调用了f函数。 ②在主函数中,先从键盘输入一整数,并赋值给a。在这里题目开始已给出输入的是整数3,调用函数sum(),并把3传值给形参n,最后输出a,b的值。 ③在sum()函数中,有一个for循环语句,在每次循环时调用函数f,并把当前的x值传给形参x,循环结束后,返回s值。 ④在f()函数中,变量x接收实参的值后,执行表达式“x*x+1”,并返回表达式的运算结果。 ⑤在sum()函数中,由于n值为3,不难看出,当x=0、x=1、x=2和x=3时,都能执行循环体,即调用函数f,第1次循环更改s值为1,第2次循环更改s值为3, 第3次更改为8,第4次更改为18,也就是最后一次循环,即最终sum()返回值将是18。 ⑥在主函数收到sum()函数的返回值,并输出3,18。