《C++程序设计》作业4
班级: 学号: 2019212212298 姓名: 周珈伊 得分: 100
一、单项选择题(共30小题,60分)
题型得分 60
若有如下语句:
struct {
int k;
string s;
} a[5] = {1, "ABC", 2, "abc"}, *p = a;
那么表达式(p++)->s的值是( )。
(2分)
A. 'A'
B. 'B'
C. "ABC"
D. "abc"
我的答案:
C
题目得分 2
参考答案:
C
若有: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
在以下程序段中的________处填写适当的表达式或语句,使程序能正确引用c数组。
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
以下对有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
关于数组,说法错误的是( )。
(2分)
A. 数组中的所有元素都是同一个类型
B. 数组中元素的下标是从1开始的
C. 数组声明时,“[ ]”里面的内容说明数组长度
D. 对数组的操作必须通过对数组内元素的操作实现
我的答案:
B
题目得分 2
参考答案:
B
若有以下语句,描述正确的是( )。
typedef struct S {
int g;
char h;
} T;
(2分)
A. 不可用S声明结构变量
B. 可用T声明结构变量
C. S是结构类型的变量
D. T是结构类型的变量
我的答案:
B
题目得分 2
参考答案:
B
如下程序运行时,从键盘上输入由数字组成的字符串,该程序的功能是( )。
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
要使语句:p = new int[10]; 能够正常执行,p应定义为( )。
(2分)
A. int p;
B. int p[10];
C. int p;
D. int (p)[10];
我的答案:
C
题目得分 2
参考答案:
C
若有如下数组定义:
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
若有如下语句:
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
下列程序的输出结果是( )。
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
下面程序的功能是( )。
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
某学生的记录描述如下,能将其正确定义并将变量中的“出生日期”赋值为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
设某大学有下列登记表,下面( )选项采用了最佳方式对它进行类型定义。
(2分)
A.
using namespace std;
int main() {
string name; // 姓名
char sex; // 性别
string college; // 所在学院
string professionalTitle; // 职称
string duty; // 职务
int year; // 年
int month; // 月
int day; // 日
// ...
return 0;
}
B.
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.
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.
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
char* a = new char[32]; 对应的释放内存的语句是( )。
(2分)
A. free a;
B. delete *a;
C. delete a[];
D. delete[] a;
我的答案:
D
题目得分 2
参考答案:
D
使用new向系统动态申请内存时,正确的是( )。
(2分)
A. 分配的内存空间只能使用一个特定的指针访问
B. 总是能获得一个指向所需内存空间首地址的指针
C. 分配的内存空间不用时系统会自动收回
D. 有可能获得空指针
我的答案:
D
题目得分 2
参考答案:
D
以下数组初始化错误的是( )。
(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};
我的答案:
C
题目得分 2
参考答案:
C
结构变量在其生命期里,( )。
(2分)
A. 所有成员一直驻留在内存中
B. 只有一个成员驻留在内存中
C. 部分成员驻留在内存中
D. 没有成员驻留在内存中
我的答案:
A
题目得分 2
参考答案:
A
若函数的参数是数组,则传递给这个参数的值是( )。
(2分)
A. 整个数组被拷贝过去
B. 数组的第一个元素的地址
C. 数组第一个元素的值
D. 数组元素的个数
我的答案:
B
题目得分 2
参考答案:
B
下面程序的输出结果是( )。
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
以下正确定义一维数组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 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
动态分配包含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
在定义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
若有以下语句,则输出结构变量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
观察程序
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指向相同的内容
我的答案:
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
下面关于内存泄漏问题的描述错误的是( )。
(2分)
A. 需长期稳定运行的服务程序,以及需要频繁对内存操作且消耗空间较大的程序,通常对内存泄漏比较敏感
B. 出现内存泄露并不是一定会导致系统发生异常,因为实际中内存耗尽的情况非常罕见,内存泄露问题的严重程度取决于每次函数调用时遗留内存垃圾的多少和函数被调用的次数。
C. 指针变量所占的内存被释放了,也就意味着它所指向的动态内存也会被自动释放
D. 内存泄漏问题通常需要运行相当一段时间后才能发现
我的答案:
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
以下说法错误的是( )。
(2分)
A. 在一个结构内不能包含另一个不同类型的结构作为其成员
B. 用指向结构变量的指针做函数参数,是将结构变量的地址传给被调函数,因此在被调函数中对结构内容的修改会影响原结构变量
C. 和整型、实型、字符型一样,布尔类型也是一种基本数据类型
D. 结构在内存中所占的字节数不仅与所定义的结构类型有关,还与计算机系统本身有关
我的答案:
A
题目得分 2
参考答案:
A
二、填空题(共18小题,40分)
题型得分 40
若有:
struct {
int x;
int y;
} s[2] = {{1,2}, {3,4}}, *p=s;
则表达式(++p)->x的值为________。
(2分)
我的答案:
3
题目得分 2
参考答案:
3
以下程序的输出结果是________。
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
若有:
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分)
我的答案:
101
题目得分 2
参考答案:
101
以下程序的输出结果是________。
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
在划线处填写适当内容(注意不需要任何空格)完成程序,本程序当输入字符是数字时输出字符串“number”,否则输出“none”。
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)
若有:
int a[10]= {1, 2, 3, 4, 5, 6, 7};
int *p =a;
则表达式*++p的值为________。
(2分)
我的答案:
2
题目得分 2
参考答案:
2
以下程序的输出结果是________。
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
以下程序的输出结果是________。
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
下列程序从输入的10个字符串中找出最长的那个串及长度。请填空。注意不需要任何空格。
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()
以下程序的输出结果是________。
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
以下程序的输出结果是________。
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
若有:int a[10], *p;
则使指针p指向a数组的赋值语句是________。注意不需要任何空格。
(2分)
我的答案:
p=a;
题目得分 2
参考答案:
p=a;、p=&a[0];
执行如下程序从键盘输入字符串“abcdefg”,则程序输出________。
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
以下程序的输出结果是________。
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
若有int a[3][2]={10,20,30,40,50,60},(p)[2]; p=a; 则(*(p+2)+1)的值为________。
(2分)
我的答案:
60
题目得分 2
参考答案:
60
假设sizeof(int)的值为4,对于数组:int a[3][6];
sizeof(a[0])的值为________。
(2分)
我的答案:
24
题目得分 2
参考答案:
24
以下程序的输出结果是________。
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
下列代码段的功能是: 统计子字符串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
单项选择题,第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 得分 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 得分 2
详细:
正确 2 2
单项选择题,第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 得分 2
详细:
正确 2 2
填空题,第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 得分 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题 总分 6 得分 6
详细:
正确 2 2
正确 2 2
正确 2 2
《C++程序设计实践》实验4
班级: 学号: 2019212212298 姓名: 周珈伊 得分: 100
一、程序设计题(共10小题,100分)
题型得分 100
【描述】
正多边形是一个有n条边的多边形,每条边的长度side相同,每个角的度数也相同。求正多边形面积的公式如下:
要求定义和调用函数:double computeArea(int n,double side),该函数返回正多边形面积。π值为3.14159。
【输入】
输入有两行:第一行一个正整数,表示正多边形的边数;第二行一个实数,表示正多边形的边长。
【输出】
输入对应的正多边形面积。
【输入示例】
5
3
【输出示例】
15.4843
【来源】
《程序设计基础——以C++为例》第2章实验1强化练习。
(10分)
我的答案:
double computeArea(int n, double side) {
return (nsideside)/(4tan(3.14159/n));
}
题目得分 10
【描述】
定义和调用函数模板:int compare(Tvalue1, T value2),比较两个值的大小。如果是第一个值小于第二个值,函数返回-1;如果是第一个值等于第二个值,函数返回0;如果是第一个值大于第二个值,函数返回1。
【输入】
输入有三行:第一行两个整数,两个整数以空间间隔;第二行两个实数,两个实数以空格间隔;第三行两个字符,两个字符以空格间隔。
【输出】
分行输出对应的判断结果。
【输入示例】
5 2
3.8 5.4
a a
【输出示例】
1
-1
0
【来源】
《程序设计基础——以C++为例》第3章实验8。(10分)
我的答案:
/ 请在此处编写compare函数 /
template
int compare(T value1, T value2) {
if(value1 < value2 )return -1;
else if(value1 > value2)return 1;
else return 0;
}
题目得分 10
【描述】
输入一个数,定义和调用函数:double squareRoot(double x),求x的平方根,如果x是负数,函数抛出一个异常,否则返回x的平方根。要求使用异常机制来处理错误。
【输入】
输入一个数。
【输出】
如果该数是负数,则抛出异常,输出“Invalid”;否则输出该数的平方根。
【输入示例】
-6
【输出示例】
Invalid
【提示】
输出错误信息使用cout,不要使用cerr。【来源】
《程序设计基础——以C++为例》第3章实验12。(10分)
我的答案:
/
double squareRoot(double x) {
if (x < 0) throw -1;
return sqrt(x);
}
题目得分 10
【描述】如果一个素数可以写成的形式,其中p是一个正整数,那么该素数就称为梅森素数。
例如,p为2时,为3,3就是梅森素数。
注意:1不是素数。
要求定义和调用函数:int isPrime(int n),如果n是素数,该函数返回1,否则返回0。
【输入】
输入一个正整数n(0≤n≤31)。
【输出】
输出p≤n的梅森素数的个数。
【输入示例】
3
【输出示例】
2
(10分)
我的答案:
bool isPrime(int n)
{
if(n < 2) return false;
double a=sqrt(n);
for(int i=2;i<=a;i++)
if(n%i==0)return false;
return true;
}
题目得分 10
【描述】
输入一个正整数,判断它是否是回文数。要求定义和调用函数:bool isPalindrome(int n),如果n是回文数,该函数返回true,否则返回false。回文数是指正读和反读都相同的数。
【输入】
输入一个正整数。
【输出】
如果该正整数是回文数,输出true,否则输出false。
【输入示例】
616
【输出示例】
true
【来源】
《程序设计基础——以C++为例》第3章实验3。(10分)
我的答案:
bool isPalindrome(int n) {
int x=n,y=0;
while (x!=0) {
y=y10+x%10;
x/=10;
}
return (n==y);
}
题目得分 10
【描述】
定义和调用函数:int sum(int (fp)(int), int start, int end)和int f(int x),f函数的功能是求x的平方;sum函数的功能是求f(start)+…+f(end)的值。
输入两个整数num1和num2,要求num1 <= num2;调用函数sum(f, num1, num2),求出f(num1)+…+f(num2)的值。例如,假设num1为1,num2为5,则f(1)为1、f(2)为4、f(3)为9、f(4)为16、f(5)为25、f(1)+...+f(5)的值为55。
【输入】
输入两个整数num1和num2,两个正整数以空格间隔。
【输出】
输出f(num1)+…+f(num2)的值
【输入示例】
1 5
【输出示例】
55
【来源】
《程序设计基础——以C++为例》第3章实验10。(10分)
我的答案:
int f(int x) {
return xx;
}
int sum(int (*fp)(int), int start, int end) {
int ans= 0;
for(int i=start;i<=end;++i)ans+=fp(i);
return ans;
}
题目得分 10
【描述】
按如下公式:
求出数列的前n项(n≤20)并输出,要求每行输出5项。定义和调用函数:long sequence(int n),计算数列第n项的值。
【输入】
输入一个正整数n。
【输出】
输出数列的前n项。每行输出5项。每项宽度为6。
【输入示例】
20
【输出示例】
0 1 2 3 6 11 20 37 68 125
230 423 778 1431 2632
4841 8904 16377 30122 55403
【来源】
《程序设计基础——以C++为例》第3章实验9。
(10分)
我的答案:
long sequence(int n){
if(n0)return 0;
else if(n1)return 1;
else if(n==2)return 2;
else return sequence(n-1)+sequence(n-2)+sequence(n-3);
}
题目得分 10
【描述】
定义和调用如下计算面积的函数:
double computeArea(double radius = 1);
double computeArea(double width, doubleheight);
double computeArea(double side1, doubleside2, double side3);
分别计算圆、矩形和三角形的面积。如果函数返回的面积为0,表示输入数据不合法。π值为3.14159。
要求用函数重载实现。
内联函数isValid用于判断三角形合法性:
inline bool isValid(double side1, doubleside2, double side3);
【输入】
输入有三行:第一行圆半径;第二行矩形宽度和高度,两个实数以空格间隔;第三行三角形边长,三个实数以空格间隔。
【输出】
分行输出对应的圆、矩形和三角形面积。
【输入示例】
5
10 10
1 2 3
【输出示例】
78.5397
100
0
【来源】
《程序设计基础——以C++为例》第2章实验7。(10分)
我的答案:
inline bool isValid(double s1,double s2,double s3){
if((s1<s2+s3)&&(s2<s1+s3)&&(s3<s1+s2)) return true;
else return false;
}
double computeArea(double r){
return rr3.14159;
}
double computeArea(double w,double h){
return wh;
}
double computeArea(double s1,double s2,double s3){
double p = 0.5(s1+s2+s3);
if(isValid(s1,s2,s3)) return sqrt(p(p-s1)(p-s2)(p-s3));
else return 0;
}
题目得分 10
【描述】
定义和调用sum函数,返回若干个整数的和,体会函数默认参数的使用。
【输入】
没有输入。
【输出】
100
106
16
36
【提示】
根据sum函数调用时实参的使用和结果的输出,推测sum函数的声明和实现。(10分)
我的答案:
/ 请此处编写sum函数 */
int sum(int a = 0, int b =100, int c = 0){
return a+b+c;
}
题目得分 10
【描述】
定义和调用三个swapValue函数,实现两个整数、两个浮点数和两个字符的交换。
要求用函数重载实现。函数参数可以是引用。
在main中输入交换前和输出交换后的值。
【输入】
输入的第一行是一个整数n(1≤n≤100),表示测试数据的总数。
接下来的n行,每行为测试数据,包含交换前的两个整数,两个浮点数和两个字符。
【输出】
输出包括n行,每行为测试结果,包含交换后的两个整数、两个浮点数和两个字符。
【输入示例】
2
12345 67890 1.23 8.79 A F
213879 7892 12379.2 8081.23 a u
【输出示例】
67890 12345 8.79 1.23 F A
7892 213879 8081.23 12379.2 u a(10分)
我的答案:
void swapValue(int &i1, int &i2) {
int temp = i1;i1 = i2;i2 = temp;
}
void swapValue(double &d1, double &d2) {
double temp = d1;d1 = d2;d2 = temp;
}
void swapValue(char &ch1, char &ch2) {
char temp = ch1;ch1 = ch2;ch2 = temp;
}
题目得分 10