《C++程序设计》作业4

《C++程序设计》作业4
一、单项选择题(共30小题,60分)
题型得分 54
若有如下数组定义:

int a[10]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

则数值不是6的表达式是( )。

(2分)
A. a[6]
B. a[9] - a[3]
C. a[7]
D. a[10 - 4]
我的答案:
C
题目得分 2
参考答案:
C
结构变量在其生命期里,( )。

(2分)
A. 所有成员一直驻留在内存中
B. 只有一个成员驻留在内存中
C. 部分成员驻留在内存中
D. 没有成员驻留在内存中
我的答案:
A
题目得分 2
参考答案:
A
下面程序的功能是( )。

#include
using namespace std;
int main() {
string a = “programming”;
int k = a.size();
for(int i = 0; i <= k - 1; i++) {
for(int j = i + 1; j < k; j++) {
if(a[i]< a[j]) {
chart = a[i];
a[i]= a[j];
a[j]= t;
}
}
}
cout << a << endl;
return0;
}

(2分)
A. 将字符串a中的元素从小到大排序
B. 求字符串a中的最小元素
C. 将字符串a中的元素从大到小排序
D. 求字符串a中的最大元素
我的答案:
C
题目得分 2
参考答案:
C
若有以下语句,描述正确的是( )。

typedef struct S {
int g;
char h;
} T;

(2分)
A. 不可用S声明结构变量
B. 可用T声明结构变量
C. S是结构类型的变量
D. T是结构类型的变量
我的答案:
B
题目得分 2
参考答案:
B
要使语句:p = new int[10]; 能够正常执行,p应定义为( )。

(2分)
A. int p;
B. int p[10];
C. int *p;
D. int (*p)[10];
我的答案:
C
题目得分 2
参考答案:
C
使用new向系统动态申请内存时,正确的是( )。

(2分)
A. 分配的内存空间只能使用一个特定的指针访问
B. 总是能获得一个指向所需内存空间首地址的指针
C. 分配的内存空间不用时系统会自动收回
D. 有可能获得空指针
我的答案:
D
题目得分 2
参考答案:
D
以下说法错误的是( )。

(2分)
A. 在一个结构内不能包含另一个不同类型的结构作为其成员
B. 用指向结构变量的指针做函数参数,是将结构变量的地址传给被调函数,因此在被调函数中对结构内容的修改会影响原结构变量
C. 和整型、实型、字符型一样,布尔类型也是一种基本数据类型
D. 结构在内存中所占的字节数不仅与所定义的结构类型有关,还与计算机系统本身有关
我的答案:
A
题目得分 2
参考答案:
A
若有:int a[] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = &a[0], i; 其中0≤i≤9,则对a数组元素不正确的引用是( )。

(2分)
A. p[i]
B. *p
C. a[10]
D. *(&a[i])
我的答案:
C
题目得分 2
参考答案:
C
观察程序

#include
using namespace std;
int main() {
int *first, *second;
first = new int[5];
second = first;
delete[] second;
delete[] first;
return 0;
}

该程序是否正确,原因是什么 ?

(2分)
A. 正确,因为first和second都是独立的指针变量
B. 不正确,因为first和second是相关而非独立的指针变量
C. 正确,second会拷贝first的内容
D. 不正确,second和first指向相同的内容
我的答案:
B
题目得分 0
参考答案:
D
关于数组,说法错误的是( )。

(2分)
A. 数组中的所有元素都是同一个类型
B. 数组中元素的下标是从1开始的
C. 数组声明时,“[ ]”里面的内容说明数组长度
D. 对数组的操作必须通过对数组内元素的操作实现
我的答案:
B
题目得分 2
参考答案:
B
以下正确定义一维数组a的是( )。

(2分)
A. int n=5, a[n]
B. double n; cin>> n; int a[n];
C. int a(5)
D. const int SIZE = 5; int a[SIZE];
我的答案:
D
题目得分 2
参考答案:
D
若有如下语句:

struct {
int k;
string s;
} a[5] = {1, “ABC”, 2, “abc”}, *p = a;

那么表达式(p++)->s的值是( )。

(2分)
A. ‘A’
B. ‘B’
C. “ABC”
D. “abc”
我的答案:
D
题目得分 0
参考答案:
C
下面程序的输出结果是( )。

#include
using namespace std;
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << a[a[7] / a[1]] << endl;
return 0;
}

(2分)
A. 2
B. 3
C. 5
D. 4
我的答案:
C
题目得分 2
参考答案:
C
若有如下语句:

struct Person {
int num;
string name;
char sex;
struct {
int myClass;
string prof;
} in;
} a = {20, “LiNing”, ‘M’, {5,“computer”}}, *p = &a;

下列语句中,正确的是( )。

(2分)
A. cout << a->name;
B. cout << p->in.prof;
C. cout << *p.name;
D. cout << p->in->prof;
我的答案:
B
题目得分 2
参考答案:
B
某学生的记录描述如下,能将其正确定义并将变量中的“出生日期”赋值为1984年11月11日的是( )。

(2分)
A.
struct student {
int number;
char name[20];
char sex;
int year;
int month;
int day;
} s;
year = 1984;
month = 11;
day = 11;

B.
struct student {
int number;
char name[20];
char sex;
struct {
int year;
int month;
int day;
} birth;
} s;
s.year = 1984;
s.month = 11;
s.day = 11;

C.
struct student {
int number;
char name[20];
char sex;
} s;
struct {
int year;
int month;
int day;
} birth;
birth.year = 1984;
birth.month = 11;
birth.day = 11;

D.
struct student {
int number;
char name[20];
char sex;
struct {
int year;
int month;
int day;
} birth;
} s;
s.birth.year = 1984;
s.birth.month = 11;
s.birth.day = 11;

我的答案:
D
题目得分 2
参考答案:
D
若二维数组a有m列,则在a[i][j]之前的元素个数是( )。

(2分)
A. j * m + i
B. j * m + i - 1
C. i * m + j
D. i * m + j - 1
我的答案:
C
题目得分 2
参考答案:
C
在以下程序段中的________处填写适当的表达式或语句,使程序能正确引用c数组。

#include
#include
using namespace std;
int main() {
int c[4][5], (*p)[5], d = 0;
for(int i = 0; i < 4; ++i) {
for(int j = 0; j < 5; ++j) {
c[i][j] = d;
++d;
cout<< setw(4) << c[i][j];
}
cout<< endl;
}
p = c;
cout << ________ << “,” << ________ << endl;
return 0;
}

(2分)
A. *(p+3)和c[0][3]
B. *(p[0]+2)和c[0][2]
C. p+1和c[0][1]
D. *(p+1)+3和c[1][3]
我的答案:
B
题目得分 2
参考答案:
B
下列程序的输出结果是( )。

#include
using namespace std;
int main() {
int a, b[5];
a=1;
b[0]=4;
cout << b[0]<< “,” <<b[1] << endl;
return 0;
}

(2分)
A. 0,4
B. 4,0
C. 4,不定值
D. 4 0
我的答案:
C
题目得分 2
参考答案:
C
若有如下语句:

struct {
int a;
float b;
} data,*p;

若有p = &data;则对data中的成员a的正确引用是( )。

(2分)
A. (*p).data.a
B. *p.a
C. p->a
D. p.data.a
我的答案:
C
题目得分 2
参考答案:
C
动态分配包含20个元素的int型数组,下列语句中正确的是( )。

(2分)
A. int p = new int[20];
B. int *p = new int[20];
C. int *p = new int(20);
D. int *p = new [20];
我的答案:
B
题目得分 2
参考答案:
B
以下数组初始化错误的是( )。

(2分)
A. int a[][3] = {1,2,3,4,5,6};
B. int b[][3] = {{1,2},{0}};
C. int d[2][3] = {{1,2},{3,4},{5,6}};
D. int a[2][3] = {0};
我的答案:
B
题目得分 0
参考答案:
C
以下对有10个元素的一维数组a进行正确初始化的是( )。

(2分)
A. int a[10] = (0, 0, 0, 0, 0);
B. int a[10] = {1, 2*3};
C. int a[10] = ();
D. int a[] = {0}
我的答案:
B
题目得分 2
参考答案:
B
在定义int a[5][5]; 后,数组a中的第10个元素是( )。设a[0][0]为第一个元素。

(2分)
A. a[1][4]
B. a[2][4]
C. a[2][5]
D. a[1][5]
我的答案:
A
题目得分 2
参考答案:
A
如下程序运行时,从键盘上输入由数字组成的字符串,该程序的功能是( )。

#include
using namespace std;
int main() {
string str;
cout << “Enter a numeral string\n”;
cin >> str;
int s = 0;
for(int i = 0; i < str.size(); ++i)
s= 10 * s + str[i] - ‘0’;
cout << s << endl;
return 0;
}

(2分)
A. 将数字字符串str转换成十进制数
B. 将字符串中的大写字母转换成小写
C. 求字符串长度
D. 将字符串中的数字转换成对应的字母
我的答案:
A
题目得分 2
参考答案:
A
若函数的参数是数组,则传递给这个参数的值是( )。

(2分)
A. 整个数组被拷贝过去
B. 数组的第一个元素的地址
C. 数组第一个元素的值
D. 数组元素的个数
我的答案:
B
题目得分 2
参考答案:
B
若有如下语句:

struct {
int a;
double b;
} data[2],*p;
p = data;

则以下对data[0]中成员a的引用中,错误的是( )。

(2分)
A. data[0]->a
B. data->a
C. p->a
D. (p).a
我的答案:
A
题目得分 2
参考答案:
A
char
a = new char[32]; 对应的释放内存的语句是( )。

(2分)
A. free a;
B. delete *a;
C. delete a[];
D. delete[] a;
我的答案:
D
题目得分 2
参考答案:
D
设某大学有下列登记表,下面( )选项采用了最佳方式对它进行类型定义。

(2分)
A.
#include
using namespace std;
int main() {
string name; // 姓名
char sex; // 性别
string college; // 所在学院
string professionalTitle; // 职称
string duty; // 职务
int year; // 年
int month; // 月
int day; // 日
// …
return 0;
}

B.
#include
using namespace std;
struct date{ // 日期结构类型
int year; // 年
int month; // 月
int day; // 日
};
int main() {
string name; // 姓名
char sex; // 性别
date birthday; // 出生日期
string college; // 所在学院
string professionalTitle; // 职称
string duty; // 职务
// …
return 0;
}

C.
#include
using namespace std;
struct date { // 日期结构类型
int year; // 年
int month; // 月
int day; // 日
};
struct professionalState { // 职业结构类型
string college; // 所在学院
string professionalTitle;// 职称
string duty; // 职务
};
int main() {
string name; // 姓名
char sex; // 性别
date birthday; // 出生日期
professionalState occupation; // 职业状况
// …
return 0;
}

D.
#include
using namespace std;
struct date { // 日期结构类型
int year; // 年
int month; // 月
int day; // 日
};
struct professionalState { // 职业结构类型
string college; // 所在学院
string professionalTitle; // 职称
string duty; // 职务
};
struct person { // 职工个人信息结构类型
string name; // 姓名
char sex; // 性别
date birthday; // 出生日期
professionalState occupation; // 职业状况
};
int main() {
// …
return 0;
}

我的答案:
D
题目得分 2
参考答案:
D
下面关于内存泄漏问题的描述错误的是( )。

(2分)
A. 需长期稳定运行的服务程序,以及需要频繁对内存操作且消耗空间较大的程序,通常对内存泄漏比较敏感
B. 出现内存泄露并不是一定会导致系统发生异常,因为实际中内存耗尽的情况非常罕见,内存泄露问题的严重程度取决于每次函数调用时遗留内存垃圾的多少和函数被调用的次数。
C. 指针变量所占的内存被释放了,也就意味着它所指向的动态内存也会被自动释放
D. 内存泄漏问题通常需要运行相当一段时间后才能发现
我的答案:
C
题目得分 2
参考答案:
C
若有以下语句,则输出结构变量a的age成员的语句为( )。

struct Person {
string name;
int age;
char sex;
} a = {“Li ning”, 20 , ‘M’} ;

(2分)
A. cout << age;
B. cout << person.age;
C. cout << a.age;
D. cout << person.a.age;
我的答案:
C
题目得分 2
参考答案:
C
二、填空题(共18小题,40分)
题型得分 38
执行如下程序从键盘输入字符串“abcdefg”,则程序输出________。

#include
#include
using namespace std;
void strchange(string &str) {
int n =str.size();
if(n ==0 || n == 1)
return;
else {
for(int i = 0, j = n - 1; i <= n / 2 - 1; i++, j–) {
char tmp;
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}
}
}
int main() {
string str;
cin >> str;
strchange(str);
cout << str<< endl;
return 0;
}

(2分)
我的答案:
gfedcba
题目得分 2
参考答案:
gfedcba
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[3][3], *p;
p = &a[0][0];
for(int i = 0; i < 9; ++i) {
p[i] = i + 1;
}
cout << a[1][2] << endl;
return 0;
}

(2分)
我的答案:
6
题目得分 2
参考答案:
6
若有:

int a[10]= {1, 2, 3, 4, 5, 6, 7};
int *p =a;

则表达式*++p的值为________。

(2分)
我的答案:
2
题目得分 2
参考答案:
2
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[] = {1, 2, 3, 4, 5, 6}, *p = a;
*(p + 3) += 2;
cout << *p<< “#” << *(p + 3) << endl;
return 0;
}

(2分)
我的答案:
1#6
题目得分 2
参考答案:
1#6
若有:int a[10], *p;

则使指针p指向a数组的赋值语句是________。注意不需要任何空格。

(2分)
我的答案:
p=a;
题目得分 2
参考答案:
p=a;、p=&a[0];
以下程序的输出结果是________。

#include
using namespace std;
struct STU {
char name[10];
int num;
};
void Fun1(STU c) {
STUb = {“LiGuo”, 2042};
c = b;
};
void Fun2(STU *c) {
STUb = {“SunDan”, 2044};
*c = b;、
};
int main() {
STU a = {“YangHan”, 2041}, b = {“WangYi”, 2043};
Fun1(a);
Fun2(&b);
cout << a.num << “#” << b.num << endl;
return 0;
}

(2分)
我的答案:
2041#2044
题目得分 2
参考答案:
2041#2044
假设sizeof(int)的值为4,对于数组:int a[3][6];

sizeof(a[0])的值为________。

(2分)
我的答案:
24
题目得分 2
参考答案:
24
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], b;
b = p[5];
cout << b << endl;
return 0;
}

(2分)
我的答案:
9
题目得分 2
参考答案:
9
若有:

struct {
int x;
int y;
} s[2] = {{1,2}, {3,4}}, *p=s;

则表达式(++p)->x的值为________。

(2分)
我的答案:
3
题目得分 2
参考答案:
3
以下程序的输出结果是________。

#include
using namespace std;
int main() {
int a[3][3] = {9, 7, 5, 3, 1, 2, 4, 6, 8};
int s1 = 0, s2 = 0;
for(int i = 0; i < 3; ++i) {
for(int j = 0; j < 3; ++j) {
if(i == j)
s1 += a[i][j];
if(i + j == 2)
s2 += a[i][j];
}
}
cout << s1 << “#” << s2 << endl;
return 0;
}

(2分)
我的答案:
18#10
题目得分 2
参考答案:
18#10
下列代码段的功能是: 统计子字符串substr在字符串str中出现的次数。

例如:若字符串为"aaas lkaaas",子字符串为"as",则应输出2。若字符串为"asasasa",子字符串为"asa",则应输出3。

写出在程序划线处应填写的表达式。

int fun(string substr, string str) {
int i, j, k, num = 0;
for(int i = 0; i < str.size(); ++i) {
for(int j = i, k = 0; substr[k] == str[j]; ++j, ++k) {
if(k + 1 == substr.size()) {
num++;
________;
}
}
}
return num;
}

(2分)
我的答案:
break
题目得分 2
参考答案:
break
在划线处填写适当内容(注意不需要任何空格)完成程序,本程序当输入字符是数字时输出字符串“number”,否则输出“none”。

#include
using namespace std;
bool check_number(char x) {
if((x >= ‘0’) && (x <= ‘9’))
return true;
else
return false;
}
int main() {
char ch;
while(true) {
cin >> ch;
if(ch == ‘#’)
break;
if(________)
cout<< “number\n”;
else
cout<< “none\n”;
}
return 0;
}

(2分)
我的答案:
check_number(ch)
题目得分 2
参考答案:
check_number(ch)
若有:

struct wc {
int a;
int *b;
};
int x[] = {11,12}, y[] = {31, 32};
struct wc z[] = {100, x, 300, y}, *p=z;

则表达式++p->a的值为________。

(2分)
我的答案:
300
题目得分 0
参考答案:
101
若有int a[3][2]={10,20,30,40,50,60},(p)[2]; p=a; 则(*(p+2)+1)的值为________。

(2分)
我的答案:
60
题目得分 2
参考答案:
60
以下程序的输出结果是________。

#include
using namespace std;
void fun(int a[][3], int m, int n, int &x, int &y, int &z) {
x = a[0][0];
for(int i = 0; i < m; ++i) {
for(int j = 0; j < n; ++j) {
if(a[i][j] < x) {
x = a[i][j];
y = i;
z = j;
}
}
}
}
int main() {
int min, row, col;
int a[3][3] = {50, -30, 90, 35, 45, -85, -17, 57, 97};
fun(a, 3, 3, min, row, col);
cout << min << “,” << row <<“,” << col <<endl;
return 0;
}

(2分)
我的答案:
-85,1,2
题目得分 2
参考答案:
-85,1,2
以下程序的输出结果是________。

#include
using namespace std;
void m(int x, int y[]) {
x = 3;
y[0] = 3;
}
int main() {
int x = 0;
int y[1] = {0};
m(x, y);
cout << x << “#” << y[0] << endl;
return 0;
}

(2分)
我的答案:
0#3
题目得分 2
参考答案:
0#3
以下程序的输出结果是________。

#include
#include
using namespace std;
int main() {
string s, sp = “HELLO”;
s = sp;
s[0] = ‘h’;
s[5] = ‘!’;
cout << s << endl;
return 0;
}

(2分)
我的答案:
hELLO
题目得分 2
参考答案:
hELLO
下列程序从输入的10个字符串中找出最长的那个串及长度。请填空。注意不需要任何空格。

#include
#include
using namespace std;
int main() {
string str[10], s;
for(int i = 0; i < 10; ++i)
getline(cin,str[i]);
s= str[0] ;
for(int i = 1; i < 10; ++i)
if(s.size()< str[i].size())
________;
cout << “输出最长的那个串:” << ________<< endl;
cout << “输出最长的那个串的长度:” << ________ << endl;
return 0;
}

(6分)
我的答案:
s=str[i],s,s.size()
题目得分 6
参考答案:
s=str[i],s,s.size()
单项选择题,第04套,第01题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第02题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第03题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第04题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第05题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第06题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第07题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第08题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第09题 总分 2 得分 0
详细:
错误 2 0
单项选择题,第04套,第10题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第11题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第12题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第13题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第14题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第15题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第16题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第17题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第18题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第19题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第20题 总分 2 得分 0
详细:
错误 2 0
单项选择题,第04套,第21题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第22题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第23题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第24题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第25题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第26题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第27题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第28题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第29题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第04套,第30题 总分 2 得分 0
详细:
错误 2 0
填空题,第04套,第01题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第02题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第03题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第04题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第05题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第06题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第07题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第08题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第09题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第10题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第11题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第12题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第13题 总分 2 得分 0
详细:
错误 2 0
填空题,第04套,第14题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第15题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第16题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第17题 总分 2 得分 2
详细:
正确 2 2
填空题,第04套,第18题 总分 6 得分 6
详细:
正确 2 2
正确 2 2
正确 2 2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值