个人主页:Lei宝啊
愿所有美好如期而遇
选择题
第一题
执行下面语句后的输出为
int I=1;
if(I<=0)
printf("****\n") ;
else
printf("%%%%\n");
- A. %%
- B. ****
- C. 有语法错,不能正确执行
- D. %%%%
解析:
printf函数中,%用于格式控制,如果要输出文本%,需使用两个百分号,即%%
所以答案为A。
第二题
C++ 中,有如下类模板定义:
template<class T> class BigNumber
{
long n;
public:
BigNumber(T i)
:n(i)
{}
BigNumber operator+(BigNumber b)
{
return BigNumber(n + b.n);
}
};
已知 b1, b2 是 BigNumber 的两个对象,则下列表达式中错误的是()
- A. 3+3
- B. b1+3
- C. b1+b2
- D. 3+b1
解析:
A: 就单纯的只是int + int,莫要想多,这个是对的。
B: b1 + 3 就相当于 b1.operator+(3),因为类的构造函数是单参数,所以3可以隐式类型转换构造一个BigNumber的对象,所以这个也是对的。
C: 这个显然是对的,不多解释。
D: 内置的整型int,+不能改变其含义。
编程题
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int weight, high;
cin >> weight >> high;
vector<vector<int>> vv(high, vector<int>(weight, 1));
for(int i=0; i<high; i++)
{
for(int j=0; j<weight; j++)
{
if(vv[i][j] == 1 && i + 2 < high)
{
vv[i+2][j] = 0;
}
if(vv[i][j] == 1 && j + 2 < weight)
{
vv[i][j+2] = 0;
}
}
}
int count = 0;
for(auto &e : vv)
{
for(auto &ee : e)
{
if(ee == 1) count++;
}
}
cout << count;
return 0;
}
// 64 位输出请用 printf("%lld")