在函数的说明和定义时若没有指出函数的类型,则()。
A.系统自动地认为函数的类型为整型
B.系统自动地认为函数的类型为字符型
C.系统自动地认为函数的类型为实型
D.编译时会出错
A.系统自动地认为函数的类型为整型
B.系统自动地认为函数的类型为字符型
C.系统自动地认为函数的类型为实型
D.编译时会出错
第1题
A.int型
B.float型
C.double型
D.由系统当时的情况而定
第2题
A、函数名只能被赋值一次
B、若没有对函数名赋值,则该函数无返回值
C、若定义函数时没有函数类型说明,则该函数无类型
D、必须有End Function 语句
第3题
[说明]
若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对m行n列的稀疏矩阵M,进行转置运算后得到n行m列的矩阵MT,如图3-1所示
为了压缩稀疏矩阵的存储空间,用三元组(即元素所在的行号、列号和元素值、表示稀疏矩阵中的一个非零元素,再用一维数组逐行存储稀疏矩阵中的所有非零元素也称为三元组顺序表)。例如,图3-1所示的矩阵M相应的三元组顺序表如表3-1所示。其转置矩阵MT的三元组顺序表如表3-2所示。
函数TransposeMatrix(Matrix M)的功能是对用三元组顺序表表示的稀疏矩阵M进行转置运算。
对M实施转置运算时,为了将M中的每个非零元素直接存入其转置矩阵MT三元组顺序表的相应位置,需先计算M中每一列非零元素的数目(即MT中每一行非零元素的数目),并记录在向量num中;然后根据以下关系,计算出矩阵M中每列的第一个非零元素在转置矩阵MT三元组顺序表中的位置:
cpot[0]=0
cpot[j]=cpot[j-1]+num[j-1]) /*j为列号*/
类型ElemType,Triple和Matrix定义如下:
typedef int ElemType;
typedef struct{ /*三元组类型*/
int r,c; /*矩阵元素的行号、列号*/
ElemType e; /*矩阵元素的值*/
}Triple;
typedef struct{ /*矩阵的元组三元组顺序表存储结构*/
int rows,cols,elements; /*矩阵的行数、列数和非零元素数目*/
Triple data[MAXSIZE];
}Matrix;
[C语言函数]
int TransposeMatrix(Matrix M)
{
int j,q,t;
int *num, *cpot;
Matrix MT; /*MT是M的转置矩阵*/
num=(int*)malloc(M.cols*sizeof(int));
cpot=(int*)malloc(M.cols*sizeof(int));
if(!num ||cpot)
return ERROR;
MT.rows=(1); /*设置转置矩阵MT行数、列数和非零元素数目*/
MT.cols=(2);
MT.elements=M.elements;
if(M.elements>0){
for (q=0 ; q<M. cols ; q++)
num[q]=0;
for (t=0; t<M.elements;++t) /*计算矩阵M中每一列非零元素数目*/
num [M.data[t].c]++;
/*计算矩阵M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置*/
(3);
for(j=1;j<M.cols;j++)
cpot[j]=(4);
/*以下代码完成转置矩阵MT三元组顺序表元素的设置*/
for(t=0;t<M.elements;t++){
j=(5); /*取矩阵M的一个非零元素的列号存入j*/
/*q为该非零元素在转置矩阵MT三元组顺序表中的位置(下标)*/
q=cpot[j];
MT.data[q].r=M.data[t].c;
MT.data[q].c=M.data[t].r;
MT.data[q].e=M.data[t].e;
++cpot[j]; /*计算M中第j列的下一个非零元素的目的位置*/
}/*for*/
} /*if*/
free(num); free(cpot);
/*此处输出矩阵元素,代码省略*/
return OK;
}/*TransposeMatrix*/
第4题
阅读以下说明和C 函数,将应填入(n) 处的字句写在答题纸的对应栏内。
[说明]
若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对于m行n 列的稀疏矩阵M,进行转置运算后得到n 行m列的矩阵MT,如图3-1 所示。
函数TransposeMatrix(Matrix M)的功能是对用三元组顺序表表示的稀疏矩阵M 进行转置运算。
对 M 实施转置运算时,为了将M 中的每个非零元素直接存入其转置矩阵MT 三元组顺序表的相应位置,需先计算M 中每一列非零元素的数目(即MT 中每一行非零元素的数目),并记录在向量num 中;然后根据以下关系,计算出矩阵M 中每列的第一个非零元素在转置矩阵MT 三元组顺序表中的位置:
cpot[0] = 0
cpot[j] = cpot[j-1] + num[j-1] /* j 为列号 */
类型ElemType、Triple 和Matrix 定义如下:
typedef int ElemType;
typedef struct { /* 三元组类型 */
int r,c; /* 矩阵元素的行号、列号*/
ElemType e; /* 矩阵元素的值*/
}Triple;
typedef struct { /* 矩阵的三元组顺序表存储结构 */
int rows,cols,elements; /* 矩阵的行数、列数和非零元素数目 */
Triple data[MAXSIZE];
}Matrix;
[C函数]
int TransposeMatrix(Matrix M)
{
int j,q,t;
int *num, *cpot;
Matrix MT; /* MT 是M的转置矩阵 */
num = (int *)malloc(M.cols*sizeof(int));
cpot = (int *)malloc(M.cols*sizeof(int));
if (!num || !cpot)
return ERROR;
MT.rows = (1) ; /* 设置转置矩阵MT行数、列数和非零元数目*/
MT.cols = (2) ;
MT.elements = M.elements;
if (M.elements > 0) {
for(q = 0; q < M.cols; q++)
num[q] = 0;
for(t = 0; t < M.elements; ++t) /* 计算矩阵M 中每一列非零元素数目*/
num[M.data[t].c]++;
/* 计算矩阵M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置*/
(3) ;
for(j = 1;j < M.cols; j++)
cpot[j] = (4) ;
/* 以下代码完成转置矩阵MT三元组顺序表元素的设置 */
for(t = 0; t < M.elements;t++){
j = (5) ; /* 取矩阵M 的一个非零元素的列号存入j */
/* q 为该非零元素在转置矩阵MT 三元组顺序表中的位置(下标)*/
q = cpot[j];
MT.data[q].r = M.data[t].c;
MT.data[q].c = M.data[t].r;
MT.data[q].e = M.data[t].e;
++cpot[j]; /* 计算M 中第j列的下一个非零元素的目的位置 */
}/* for */
}/* if */
free(num); free(cpot);
/*此处输出矩阵元素,代码省略*/
return OK;
}/* TransposeMatrix */
第5题
一、填空: 1、含有纯虚函数的类称为______。 2、如果在类中定义了一个成员函数为______,则表明在该继承层次链条的派生类中有可能重新定义这个成员函数的实现,即它可能被派生类的同名函数所覆盖。 3、定义一个函数名为fun, 返回值为int, 没有参数的纯虚函数的定义是_____。 4、如果类包含了一个或多个______ ,则它是抽象类。 5、虚函数必须是类的______ 函数。 6、在面向对象的程序设计中,不同的对象可以调用相同名称的函数并导致完全不同的行为现象称为______ 。 7、成员函数有实函数、虚函数和______3 种。 8、动态联编的多态性由______支持。 9、 C++语言支持的两种多态性分别是______ 的多态性和运行时的多态性。 10、如果一个类至少有个纯虚函数,那么就称该类为______。 11、 抽象类不能定义对象。但可以声明抽象类的______转换类型。 二、选择题: (1)关于动态联编的下列叙述中,错误的是 A. 动态联编是以虚函数为基础的 B. 动态联编运行时确定所调用函数代码 C. 动态联编调用函数操作是指向对象的指针或对象引用 D. 动态联编是在编译时确定操作函数 (2)有以下类定义: class A public: virtual void fl0{ cout<<l; }; void f20{ b : public a public: . f1o{ } 若b为b类对象,p为a类指针,则下列选项正确的是( )。 a. 执行: p="&b;" p->f1();语句, 输出3 B. 执行: p=&b; p->f20);语句,输出4 C. 执行: p=&b; p->fl();语句,输出2 D. 执行: p=&b; p->f20);语句,输出1 (3)关于虚函数的描述中,_______是正确的。. A. 虚函数是一个静态成员函数 B. 虚函数是一个非成员函数 C. 虚函数既可以在函数说明时定义,也可以在函数实现时定义 D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 (4)下面4个选项中,_______是用来声明虚函数的。. A. virtual B. public C. using D. false (5)下列描述中,属于抽象类的性质是________。 A. 可以说明虚函数 B. 可以进行构造函数重载 C. 可以定义友元函数 D. 不能说明其对象 (6)要实现动态联编必须_______。 A. 通过成员名限定来调用虚函数 B. 通过对象名来调用虚函数 C. 通过派生类对象来调用虚函数 D. 通过对象指针或引用来调用虚函数 (7)在类中用来声明虚成员函数的关键字是_______。 A. virtual B. public C. protected D. private (8)以下哪个基类中的成员的数表示纯虚函数________。 A. virtual void t()=0; B. void tt(int)=0; C. virtual void t(int); D. virtual void t(in){ }; 三、编程题: 使用虚函数编写程序求球体和圆柱体的体积及表面积。由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类Circle作为基类。在Circle类中定义一个数据成员radius和两个虚函数area()和volume()。由Circle 类派生Sphere类和Column类。在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积。
第6题
A、说法正确
B、说法不正确
C、说法正确
D、说法正确
第7题
B、没有头文件也可以对库函数进行调用
C、如果使用用户自定义的函数,还要在主调用函数中说明用户函数的返回值类型。
D、在主函数main()中可以调用其他函数,其他函数也可以相互调用
第8题
B.全局变量指在函数之外定义的变量,在程序执行全过程有效
C.简单数据类型变量仅在函数内部创建和使用,函数退出后变量被释放
D.对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部不可以直接使用并修改全局变量的值
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!