c语言课后答案_大学c语言课后答案
c语言课后答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“大学c语言课后答案”。
第7章 C++中新增语法功能
一、选择题。在以下每一题的四个选项中,请选择一个正确的答案。
【题7.1】B
【题7.2】D
【题7.3】B
【题7.4】C
【题7.5】B
【题7.6】C
【题7.7】C
【题7.8】A
【题7.9】B
【题7.10】D
二、填空题。请在下面各题的空白处填入合适的内容。
【题7.11】inline
【题7.12】constref
【题7.13】int &6
【题7.14】行尾
【题7.15】引用
【题7.16】返回类型 个数 类型
【题7.17】值调用、地址调用、引用调用。
【题7.18】编辑、编译、链接、运行
【题7.19】cout
【题7.20】函数的名称
三、程序理解题。请阅读下面的程序,写出程序的运行结果。
【题7.21】n=6, t=10
n=6, t=70
【题7.22】a=150,b=-5
【题7.23】a[0][0]=2
a[0][1]=4
a[1][0]=6
a[1][1]=8
【题7.24】14
xxxxxxx144aa
【题7.25】20
11.04
【题7.26】12.5
四、简答题。简要回答下列个问题。
【题7.27】#include 和 #include “filename.h” 有什么区别?
答:对于#include,编译器从标准库路径开始搜索 filename.h
对于#include “filename.h”,编译器从用户的工作路径开始搜索 filename.h
【题7.28】数组在做函数实参的时候会转变为什么类型?
答:数组在做实参时会变成指针类型。
【题7.29】说明define和const在语法和含义上有什么不同?
答:
(1)#define是C语法中定义符号变量的方法,符号常量只是用来表达一个值,在编译阶段符号就被值替换了,它没有类型;
(2)const是C++语法中定义常变量的方法,常变量具有变量特性,它具有类型,内存中存在以它命名的存储单元,可以用sizeof测出长度。
【题7.30】什么是常指针,什么是指向常变量的指针?
答:
常指针的含义是该指针所指向的地址不能变,但该地址所指向的内容可以变化,使用常指针可以保证我们的指针不能指向其它的变量,指向常变量的指针是指该指针的变量本身的地址可以变化,可以指向其它的变量,但是它所指的内容不可以被修改。指向长变量的指针定义,【题7.31】cla 和 struct 的区别?
答:struct 的成员默认是公有的,而类的成员默认是私有的。
【题7.32】将“引用”作为函数参数有哪些特点?
答:
(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。
(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用“*指针变量名”的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
【题7.33】C语言和C++有什么不同?
答:
从机制上:c是面向过程的结构化编程语言;c++是面向对象的编程语言。C++侧重于对象而不是过程,并且C++侧重于类的设计而不是逻辑的设计。
从适用性方面:c适合底层操作、效率高的场合,如操作系统等;c++适合更上层的,复杂的应用程序。
五、编程题。对下面的问题编写成程序并上机验证。
【题7.34】请分别采用传值、传引用和传指针调用的的方式,设计三个函数:cubicByValue(),cubicByRefrence()和cubicByPoint(),用来计算一个数的三次方的值,分析各函数的功能和产生的效果。
#include
int cubicByValue(int a){
return a * a * a;
}
int cubicByRefrence(int & a){
return a * a * a;
}
int cubicByPointer(int * a){
return(*a)*(*a)*(*a);
}
int main(){
int a = 3;
cout
cout
cout
return 0;
}
【题7.35】请采用函数带默认参数的方法,将矩形的两条边长作为参数,计算不同边长矩形的面积。
#include
using namespace std;
double RectArea(double a = 1, double b = 1){
return a * b;
}
int main(){
double a = 3;
double b = 4;
cout
cout
cout
return 0;
}
运行结果:
2【题7.36】请采用函数重载的方法,将矩形的两条边长作为参数,计算不同数据类型边长矩形的面积。
double RectArea(double a, double b){
return a * b;
}
int RectArea(int a, int b){
return a * b;
}
int main(){
double a = 3.534;
double b = 4.534;
int c = 5;
int d = 6;
cout
cout
return 0;
}
运行结果:
16.0232
【题7.37】定义一个描述复数的结构类型compl,并实现复数的输入和输出。设计两个函数:compl add(compl c1,compl c2)和compl sub(compl c1,compl c2),分别完成复数的加法运算和减法运算。编写主函数验证复数的运算是否正确。
参考答案:
#include
struct complex {
float real;
float com;
};
complex add(complex c1, complex c2){
complex t;
t.real = c1.real + c2.real;
t.com = c1.com + c2.com;
return t;
}
complex sub(complex c1, complex c2){
complex t;
t.real = c1.realc2.com;
return t;
}
complex input(void){
complex c;
cout
cin >> c.real >> c.com;
return c;
}
void output(complex c){
cout
}
int main(){
complex c1, c2, c3, c4;
c1 = input();
c2 = input();
c3 = add(c1, c2);
c4 = sub(c1, c2);
cout
output(c1);
cout
output(c2);
cout
output(c3);
cout
【题7.38】编写程序,用名为max的函数模板计算两个参数的最大值。分别用一对整型数、浮点数和字符进行测试,验证程序的正确性。
#include
template
T mymax(T x, T y){
return(x > y)?(x):(y);
}
int main(){
//double max(double,double);
int x = 16, y = 18;
long l = 20;
double a = 10.8, b = 12.5;
cout(a, b)
cout(x, y)
cout(a, l)
return 0;
}
输出为:12.5
【题7.39】编写程序,用名为min的函数模板计算三个参数中的最小值。分别用整型数、浮点数和字符进行测试,验证程序的正确性。
#include
template
T mymin(T x, T y, T z){
return(((x
}
int main(){
//double max(double,double);
int x = 16, y = 18, z = 5;
long l = 20;
double a = 10.8, b = 12.5, c = 1.4;
cout(a, b, c)
cout(x, y, z)
cout(a, l, z)
return 0;
}
运行结果:
1.4