21xrx.com
2024-12-22 21:09:00 Sunday
登录
文章检索 我的文章 写文章
"C++期中考试题答案带解析"
2023-06-23 14:43:46 深夜i     --     --
C++ 期中考试 题答案 解析 讲解

C++是一门广泛应用在计算机编程领域的高级编程语言,作为计算机相关专业必修课程之一,C++的期中考试对学生来说是非常重要的,下面将为大家带来C++期中考试题目及答案的详细解析。

1. 以下代码的输出结果为什么?


#include <iostream>

using namespace std;

int main()

b = 3;

  int c = a / b;

  cout << c << endl;

  return 0;

答案:输出值为1,这是因为a/b运算会自动截去小数,得到的结果为1而不是1.6667。如果希望得到浮点数结果,可将a或b其中一个数改为double类型。

2. 请解释指针和引用的区别。

答案:指针和引用都是C++中的地址符号,但是有着不同的作用。指针指向一个内存地址,可以被修改指向另一个地址,而引用则是某个对象的别名,不能被修改指向其他对象。

3. 请回答下面代码的输出结果:


#include <iostream>

using namespace std;

class A{

public:

  int x;

  A(){};

  A(int i){x=i;}

  void show() cout << x << endl;

};

int main()

{

  A a[3] = {A(1), A(3), A(5)};

  A* p = a+1;

  p->show();

  ++p;

  *p=A(7);

  p->show();

  (p+1)->show();

  return 0;

}

答案:输出结果为3,7,无输出。指针p原本指向数组a中的第二个元素,即a[1],因此第一次输出结果为3。执行++p操作后指针p指向了数组a中的第三个元素,即a[2],然后将其赋值为A(7),即将a[2]的x值赋为7,所以第二次输出结果为7。执行(p+1)->show()操作时,指针p已经指向了a[2],p+1指向了一个未初始化的元素,故无输出。

4. 请问下面的代码会输出什么?


#include <iostream>

#include <string>

using namespace std;

int main()

{

  string s1 = "hello";

  string s2 = "world";

  if (s1 > s2)

   cout << s1 << endl;

  else

   cout << s2 << endl;

  return 0;

}

答案:输出结果为world。使用关系运算符比较字符串时,比较的是字符串的字典序,因此s1>s2不成立,输出s2的值world。

5. 请问下面的代码会输出什么?


#include <iostream>

using namespace std;

int foo(int n){

  if (n <= 2)

   return 1;

  int ret = 0;

  int i = 1;

  for (; i < n; ++i)

  {

   ret += foo(i) * foo(n-i);

  }

  return ret;

}

int main()

{

  int n = 4;

  cout << foo(n) << endl;

  return 0;

}

答案:输出结果为5。这是一个计算斐波那契数列的递归算法,foo(n)就是计算斐波那契数列中第n项的值。当n=4时,foo(4)就是foo(1)*foo(3) + foo(2)*foo(2) + foo(3)*foo(1),经过计算可得foo(1)=1,foo(2)=1,foo(3)=2,故foo(4)=5。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复