21xrx.com
2025-04-23 20:05:37 Wednesday
文章检索 我的文章 写文章
"C++期中考试题答案带解析"
2023-06-23 14:43:46 深夜i     19     0
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。

  
  

评论区