首页 > 试题广场 > 下列程序的执行结果是? #include<i
[单选题]
下列程序的执行结果是?( return I

#include<iostream.h>
int f(int Int){
if (Int==0)return I;
return(Int+f(Int-l));
};
void main(void){
int inT=9;
cout<<"result="<<f(inT)<<'\n';
}

  • .result=l
  • result=37
  • result=46
  • 编译错误
推荐

如果 return 1 则答案选C

如果 return I, 则答案选D


如果 return 1 的解析:

答案求 f(9)
第1步:f(9) = 9 + f(8)
第2步:f(8) = 8 + f(7)
...
第9步:f(1) = 1 + f(0)
第10步:f(0) = 1
依次带入:f(9) = 9 + 8 + ...+ 1 + 1
= (1+9)*9/2+1 = 46

编辑于 2019-11-06 14:56:25 回复(0)
D
error 1:
"return I;":包含标准头文件 complex.h 后,就可以用 complex来代表 _Complex,用imaginary来代表 _Imaginary,以及用 I来代表虚数单位 i,也就是 -1的平方根。例如:
1
2
3
4
#include <complex.h>
double _Complex x = 5.2;
double complex y = 5.0 * I;
double complex z = 5.2 – 5.0 * I;
1
2
complex f(int Int)
{...}
当然,也可能是未定义I
error 2:
[Error] '::main' must return 'int'
main返回值必须为int
error 3:
1
return(Int+f(Int-l));
"Int-l"的"l"不是1,是l,ascall码为108的小写字母l
error 4:
开始时缺少using namespace std;
不能cout


其他1
f(int Int)
{
}";"   尽量别打“;”
其他2
1
#include<iostream.h>
有区别
1
#include<iostream>
在某些编译器上不通过


编辑于 2019-11-06 14:26:57 回复(0)
题目想表达的应该是 return 1 那么输出的答案就是函数f(9)的返回值。通过观察发现函数f是一个递归调用的函数,递归:简单理解就是自身调用自身的过程。
f(9) = f(8) + 9;
f(8) = f(7) + 8;
---
f(1) = f(0) + 1;
而递归的结束条件是Int == 0时,f(0) = 1。所以f(9) = 1 + 1 + 2 + 3 + ... + 9 = 46
发表于 2019-11-09 19:22:52 回复(0)
答案选D
①首先没有使用标准命名空间,即开始时缺少using namespace std;
②另外程序代码中未定义I变量
发表于 2019-11-06 10:01:48 回复(0)
D
该题目不太规范,应该属考察的是带参函数的递归运算。但题目变量命名不规范以及变量定义不完整。
发表于 2019-11-05 18:25:14 回复(0)
仔细查看,程序中未定义I变量,所以编译错误
发表于 2019-11-05 16:02:08 回复(0)
return I ?
肯定错了。。d了
发表于 2019-11-05 15:41:13 回复(0)
D,视力题,I和l不是1,没意思
发表于 2019-11-05 15:19:28 回复(0)
选d,编译错误,I未定义
发表于 2019-11-05 14:45:45 回复(0)