C语言程序设计A期末模拟试题三

更新时间:2023-05-16 03:04:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计A期末模拟试题三

C语言程序设计A期末模拟试题三
一、单项选择题(每小题2分,共20分)
C++程序的基本模块为( )。
A. 表达式 B. 标识符 C. 语句 D. 函数
设x和y均为bool量,则x && y为真的条件是( )。
A. 它们均为真 B. 其中一个为真
C. 它们均为假 D. 其中一个为假
函数调用不可以( D )。
A. 出现在一个表达式中
B. 出现在执行语句中
C. 作为一个函数的实参
D. 作为一个函数的形参
假定变量m定义为“int m=7;”,则定义变量p的正确语句为( B )。
A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m;
假定有“struct BOOK{char title[40]; float price;}; BOOK *book;”,则不正确的语句为( A )。
A. BOOK *x=new book; B. BOOK x={"C++ Programming",27.0};
C. BOOK *x=new BOOK; D. BOOK *x=book;
假定变量x定义为“int x=5;”,要使rx成为x的引用(别名),rx应定义为( D )。
A. int rx=x; B. int rx=&x; C. int *rx=&x; D. int &rx=x;
面向对象方法的多态性是指( )。
A. 一个类可以派生出多个特殊类
B. 一个对象在不同的运行环境中可以有不同的变体
C. 针对一消息,不同的对象可以以适合自身的方式加以响应
D. 一个对象可以是由多个其他对象组合而成的
面向对象软件开发中使用的OOD表示( )。
A. 面向对象分析 B. 面向对象设计
C. 面向对象语言 D. 面向对象方法
在关键字private后面定义的成员为类的( )成员。
A. 私有 B. 公用 C. 保护 D. 任何
假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。
A. int AA::a() B. int AA:a()
C. AA::a() D. AA::int a()
二、填空题(每题2分,共20分)
C++语言的编译单位是扩展名为__________的__________文件。
C++常数0345对应的十进制值为__________。
假定x是一个逻辑量,则!x || false的值为__________。
若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为____ cin>>a ____。
当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的____总和___。
若p指向x,则____*p ____与x的表示是等价的。
已知语句“cout<<s;”的输出是“apple”,则执行语句“cout<<s+2;”的输出结果为__________。

若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的p指针。
重载插入运算符<<或抽取运算符>>时,其运算符函数不能被定义为类的________函数。
在一个或若干个类的基础上构造一个新类,被称为____

C语言程序设计A期末模拟试题三

_______。

三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分)
1. 把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果为“37”。
#include<iostream.h>
void main()
{
int x;
cout<<"请输入一个整数,若小于3则重输:";
do cin>>x; while(___(1)___);
int i=2;
do{
while(___(2)___) {
cout<<i<<' ';
x/=i;
}
___(3)___;
}while(i<x);
if(x!=1) cout<<x;
cout<<endl;
}

(1) (2) (3)
2. 主函数调用一个fun函数将字符串逆序。
#include<iostream.h>
#include<string.h>
___(1)___;
void main( ) {
char s[80];
cin>>s;
___(2)___;
cout<<”逆序后的字符串:”<<s<<endl ;
}
void fun(char ss[]) {
int n=strlen(ss);
for(int i=0; ___(3)____; i++) {
char c=ss[i];
ss[i]=ss[n–1–i];
ss[n–1–i]=c;
}
}

(1) (2) (3)
3. 已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。
class ARRAY{
int *v; //指向存放数组数据的空间
int s; //数组大小
public:
ARRAY(int a[], int n);
~ ARRAY(){delete []v;}
int size(){ return s;}
int& operator[](int n);
};
___(1)___ ARRAY(int a[], int n)
{
if(n<=0) {v=NULL;s=0;return;}
s=n;
v=___(2)___;
for(int i=0; i<n; i++) ___(3)___;
}

(1) (2) (3)
4. #include<iostream.h>
#include<stdlib.h>
class A {
int *a; int n; int MaxLen;
public:
A(): a(0), n(0), MaxLen(0) {}
A(int *aa, int nn, int MM) {
n=nn;
MaxLen=MM;
if(n>MaxLen) exit(1);
___(1)___; //由a指向长度为MaxLen的动态数组
for(int i=0; i<n; i++) a[i]=aa[i];
}
~A() {delete []a;}
int GetValue(int i) ___(2)___ //函数体返回a[i]的值
};
void main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
A r(b,10,10);
int i,s=0;
for(i=0; i<10; i++); ___(3)___ //把r对象的a数据成员中的每个
//元素值依次累加到s中
cout<<"
s="<<s<<endl;
}

(1) (2) (3)

四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24

C语言程序设计A期末模拟试题三

分)
1. #include<iostream.h>
void main()
{
int a=2,b=5,c=0;
if(a+b>10) c=a*b; else c=3*a+b;
if(c<=20) cout<<c*c; else cout<<4+c-5;
cout<<endl;
a=a+b; b=a+b;c+=a+b;
cout<<"a,b,c="<<a<<','<<b<<','<<c<<endl;
}
2. #include<iostream.h>
#include<string.h>
void main() {
char a[5][10]={"student","worker","soldier","cadre","peasant"};
char s1[10], s2[10];
strcpy(s1,a[0]); strcpy(s2,a[0]);
for(int i=1;i<5;i++) {
if(strcmp(a[i], s1)>0) strcpy(s1,a[i]);
if(strcmp(a[i], s2)<0) strcpy(s2,a[i]);
}
cout<<s1<<’ ’<<s2<<endl;
}
3. #include<iostream.h>
#include<math.h>
void main()
{
int x,y;
cin>>x;
y=int(sqrt(x)); //sqrt(x)为求x的算术平方根
for(int i=1;i<=y;i++)
if(x%i==0) cout<<”x=”<<i<<’*’<<x/i<<endl;
}

4. IntNode* FindMax(IntNode *f)
{
if(!f) return NULL;
IntNode *p=f;
f=f->next;
while(f) {
if(f->data>p->data) p=f;
f=f->next;
}
return p;
}
假定IntNode的类型定义为:
struct IntNode {
int data; //结点值域
IntNode* next; //结点指针域
};


五、编程题(每小题6分,共12分)
1. 计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。









2. 根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0; i<MS; i++) a[i]=aa[i];
}
AA* Reverse1(); //通过动态存储分配得到一个对象,并动态分配
//a[MS]数组空间,要求该对象中的n和MS的值与*this中的
//对应成员的值相同,数组元素的值是按照*this中数组元
//素的相反次序排列得到的,要求该函数返回动态对象的地址。
};
C语言程序设计A期末模拟试题三
参考答案

单选题
1. D2. A3. D4.B5.A6.D7.C8.B9.A10.A

填空题
1. cpp、 程序 2. 2293. !x4. cin>>a 5. 总和6. *p
7. ple8. this9. 成员10. 继承(派生)

三、程序填充题
1. (1) x<3 (或x<=2) (2) x%i==0 (3) i++
2. (1) void fun(char ss[]) (2) fun(s) (3) i<n/2
3. (1) ARRAY:: (2) new int[n] (3) v[i]=a[i]
4. (1) a=new int[MaxLen] (2) {return a[i];} (3) s+=r.
GetValue(i)

四、理解问答题
1.
121
a,b,c=7,12,30

2.
worker cadre

3. 把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。
4. 实现strcat函数的功能,把str2所指字符串连接到str1

C语言程序设计A期末模拟试题三

所指字符串的后面,并返回str1指针。

五、编程题

1. #include<iostream.h>
void main()
{
int i; //用i作为循环变量
int p=1; //用p作为累乘变量
int s=1; //用s作为累加循环变量
for(i=1;i<=10;i++) {p*=3; s+=p;}
cout<<s<<endl;
}


2.
AA* AA::Reverse1()
{
AA *px=new AA;
px->n=n; px->MS=MS;
px->a=new int[MS];
for(int i=0; i<n; i++) {
px->a[n-1-i]=
a[i];
}
return px;
}






***[JimiSoft: Unregistered Software ONLY Convert Part Of File! Read Help To Know How To Register.]***



本文来源:https://www.bwwdw.com/article/ayc4.html

Top