a、0x65fdc8
23、函数char * itoa ( int n, char *s)将整数n变换成对应的十进制数的字符串并存放到s所指向的串空间中。例如,若n为782,则结果将字符串 “782”存放到s指向的串空间,返回结果串的起始地址。 char *itoa(int n, char *s) { int i=0, j, t; while (n) { s[i]= ; n=n/10; i ; } s[i]= ‘\0’; for(j=0; j
第7章 数组 作业
1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,则返回子串在主串中的位置,要求不能使用系统函数。
2、编写一个函数,求二维数组的两条对角线元素之和。
第8章 指针
8.3 指针与二维数组随堂测验
1、若有int (*p)[3];以下叙述中正确的是()。
a、p是一个指针数组
b、(*p)[3]与*p [3]等价
c、p是一个指针,它可以指向一个一维数组中任一个元素
d、p是一个指针,它只能指向一个包含3个int类型元素的一维数组
2、对以下程序,说法正确的是()。 #include
b、程序中a行有错
c、程序输出 46
d、程序中b行有错
3、以下程序的输出结果是()。 #include
a、23
b、26
c、33
d、36
4、以下程序的输出结果是()。 #include
b、68
c、99
d、108
5、以下程序的输出结果是 。 #include
8.6 指针数组与指向指针的指针随堂测验
1、以下程序的输出结果是()。 #include
b、2 4
c、4 4
d、4 6
2、下面程序的运行结果是 。 #include
3、若下面程序所在的源文件名为abc.cpp,编译后,在dos状态下执行命令行: abc file1 file2
4、假设有:char *argv[]={ “hello”, “nanjing”, “jiangsu”}; char **pargv=argv; 则请给出下列语句的输出结果: cout<<*(pargv 1); 结果为 。 cout<
第8章 指针 测验
1、有定义:char s1[20] = "hello", s2[20] = "china"; const char *ptr = s1; 则以下四种操作中,错误的是()。
a、strcpy(s2, ptr);
b、ptr = s2;
c、ptr = ptr 10;
d、*ptr = *s2;
2、如果以下程序第一行输出结果为0x65fdb0,则第二行输出是()。 #include
b、0x65fdd4
c、0x65fdb9
d、0x65fde6
3、下列程序的运行结果是()。 #include
b、18
c、19
d、20
4、若有int (*p)[3];以下叙述中正确的是()。
a、p是一个指针数组
b、(*p)[3]与*p [3]等价
c、p是一个指针,它可以指向一个一维数组中任一个元素
d、p是一个指针,它只能指向一个包含3个int类型元素的一维数组
5、对以下程序,说法正确的是()。 #include
b、程序中a行有错
c、程序输出 46
d、程序中b行有错
6、以下程序的输出结果是()。 #include
a、23
b、26
c、33
d、36
7、以下程序的输出结果是()。 #include
b、68
c、99
d、108
8、下列函数的功能是()。 int fun1(char *x) { char *y=x; while(*y ); return (y-x-1); }
a、求字符串的长度
b、比较两个字符串的大小
c、将字符串复制到字符串y
d、将字符串x直接接到字符串y的后面
9、设有语句:void f(int a[10], int &x); int y[10], *py=y, n; 则对函数f的正确调用语句是()。
a、f(py[10], n);
b、f(py, n);
c、f(*py, &n);
d、f(py, &n);
10、以下程序输出是()。 #include
b、24
c、25
d、26
11、以下程序输出是() #include
b、chbbhci
c、chbbgbh
d、chhfchi
12、设有以下语句: int add(int a, int b); int fun(int (*p)(int, int), int &a, int &b); int x, y, (*f)(int, int)=add; 则对函数fun的正确调用形式是()。
a、fun(f, x, y)
b、fun(f, &x, &y)
c、fun((*f)(x, y), x, y)
d、fun(add, &x, &y)
13、以下程序的输出结果是()。 #include
b、12.1
c、21.1
d、1.1
14、运算符“&”有三种含义,分别是 、 和 。
15、若有int a[10], *p, i=5; p=a i; 则p的内容为 , *p的内容为 。
16、如果从键盘输入字符串 “how do you do”,则下面程序的运行结果是 。 #include
17、以下程序的输出是 。 #include
18、以下程序输出结果是 。 #include
第8章 指针 作业
1、在主函数中定义一个含有12个指针的指针数组,令它的数组元素分别指向12个由月份组成的字符串常量,如第0个元素指向”january”。在主函数中,若输入月份整数值,则从上述指针数组中找到并输出相应月份的字符串值。
第9章 继承与派生
第9章 继承与派生 测验
1、设类b是基类a的派生类,并有语句a a1, *pa=&a1; b b1, *pb=&b1; 则正确的语句是()。
a、pb=pa;
b、b1=a1;
c、a1=b1;
d、*pb=*pa;
2、派生类对象可直接访问基类中的();在派生类的成员函数中,不可以直接访问的是()。
a、公有继承的公有成员
b、公有继承的私有成员
c、公有继承的保护成员
d、私有继承的公有成员
3、在c 中,三种派生方式的说明符号为 ,若不加说明,则默认的派生方式为 。
4、下列程序运行结果是 。 class a{ public: a(){cout<<"1";} ~a(){cout<<"2";} }; class b:public a { public: b(){cout<<"3";} ~b(){cout<<"4";} }; void main() { b b; }
5、下列程序运行结果是 。 class a { public: a(){cout<<"a";} ~a(){cout<<"~a";} }; class b:public a { a *p; public: b(){ cout<<"b"; p=new a(); } ~b(){ cout<<"~b"; delete p; } }; void main() { b obj; }
6、下列程序运行结果是 。 #include
7、下列程序运行结果是 。 class a { public: a(char *nm){cout <
第9章 继承与派生 作业
1、定义猫科动物animal类,由其派生出猫类(cat)和豹类(leopard),二者都包含虚函数 sound( ),要求根据派生类对象的不同调用各自重载后的成员函数。
第10章 多态性与虚函数
10.11 类模版随堂测验
1、下列程序运行结果是 。 template
2、下列程序运行结果是 。 # include
第10章 多态性与虚函数 测验
1、下面有关运算符重载的说法中,正确的是()。
a、非静态成员函数重载运算符时带有this指针
b、友元函数重载运算符时带有this指针
c、成员函数与友元函数重载运算符时都不带有this指针
d、用成员函数或友元函数重载同一运算符时,两者的参数类型与参数个数相同
2、成员函数中重载运算符“ ”,实现a b运算,则()。
a、a必须为对象,b可为整数或实数
b、a和b必须为对象
c、b必须为对象,a可为整数或实数
d、a和b均为整数或实数
3、cin是istream_withassign类的对象,>>是用友元函数实现的重载运算符,若有int x; cin>>x; 则编译器将 cin>>x解释成对运算符重载函数的调用,形式是()。
a、cin.operator>>(cin, x)
b、operator>>(cin, x)
c、cin.operator>>(x)
d、operator>>(x)
4、下列关于类型转换运算符重载的说法中,不正确的是()。
a、类型转换运算符重载函数无返回值类型
b、类型转换运算符重载函数有返回值类型
c、类型转换运算符重载函数不能有参数
d、类型转换运算符重载函数只能用成员函数实现,不能用友元函数实现
5、下列关于运算符重载的说法中,正确的是()。
a、运算符重载可以改变操作数的个数
b、运算符重载可以改变优先级
c、运算符重载可以改变结合性
d、运算符重载不可以改变语法结构
6、c 中下列哪个运算符不允许被重载()。
a、%=
b、&&
c、new
d、*
7、以下有关函数重载的说法正确的是()。
a、重载函数的函数名可以不同,但其实现的功能必须相同。
b、完成不同功能的函数可以具有相同的函数名,而且其参数的个数和类型也必须相同。
c、完成不同功能的函数可以具有相同的函数名,但必须具有不同的返回值类型。
d、完成不同功能的函数可以具有相同的函数名,但必须具有不同的参数个数或不同的参数类型。
8、下列程序运行结果是 。 class test{ long x; static int num; public: test (long m=0) {x=m;} test operator (); test operator (int); void show() { cout<<"the num is: "<
11、下列程序运行结果是 。 #include
12、下列程序运行结果是 。 #include
13、下列程序运行结果是 。 #include
14、若定义了一个类,该类只能用作基类,而不能定义该类的对象,这种类被称为 。
15、下列程序运行结果是 。 class a1 {public: a1(int i) {cout<<" a1的构造函数 "<
第10章 多态性与虚函数 作业
1、定义一个日期类date,数据成员包括年、月、日,构造函数实现年、月、日的初始化,setdate(int y,int m,int d)和printdate()函数分别用于设置日期和显示日期;再定义一个时间类time,数据成员包括时、分、秒,构造函数实现时、分、秒的初始化,settime(int h,int m,int s)和printtime()函数分别用于设置时间和显示时间,在此基础上再定义一个日期时间类timedate,充分利用已有的两个类,并编写主函数完成基类和派生类的测试工作。
第12章 流类体系与文件操作
12.7 随机访问文件随堂测验
1、假设文本文件中已经存有“ilovechina”九个字符,则下列程序的运行结果是 。 void main(void) { fstream file("letters.txt",ios::in); char ch; if (!file) exit(0); file.seekg (1l, ios::beg); file.get(ch); cout << ch << endl; file.seekg (-4l, ios::end); file.get(ch); cout << ch << endl; file.seekg (2l, ios::cur); file.get(ch); cout << ch << endl; file.close( ); }
2、假设文本文件letters.txt中已经存有“1234567890”十个字符,则下列程序的运行结果是 。 #include
3、文本文件letters.txt中已经存有“abcdefg”七个字符,则下列程序的运行结果是 。 #include
第12章 流类体系与文件操作 测验
1、在c 的文件流中,打开文件的方法有两种,一种是使用成员函数open(),另一种是使用 。
2、假设文本文件中已经存有“ilovechina”九个字符,则下列程序的运行结果是 。 void main(void) { fstream file("letters.txt",ios::in); char ch; if (!file) exit(0); file.seekg (1l, ios::beg); file.get(ch); cout << ch << endl; file.seekg (-4l, ios::end); file.get(ch); cout << ch << endl; file.seekg (2l, ios::cur); file.get(ch); cout << ch << endl; file.close( ); }
3、假设文本文件letters.txt中已经存有“1234567890”十个字符,则下列程序的运行结果是 。 #include
4、文本文件letters.txt中已经存有“abcdefg”七个字符,则下列程序的运行结果是 。 #include
第12章 流类体系与文件操作 作业
1、人工预先创建一个文本文件data.txt,其内容为若干实数,数据之间以空白字符分隔。编程从该文件中读入这些实数,统计实数个数并求出这些实数的平均值,在程序中创建并产生一个文本文件result.txt,内容为 data.txt 中的全体实数,每行5个数,最后一行输出实数个数以及平均值。
期末考试
单选题和填空题
1、用c 语言编写的源程序要成为目标程序必须要经过( )。
a、解释
b、汇编
c、编辑
d、编译
2、在下列选项中,正确的字符常量为( )。
a、"a"
b、'name'
c、a
d、'\101'
3、c 语言中,运算符"="和"=="的功能分别是( )。
a、关系运算和赋值运算
b、赋值运算和关系运算
c、都是关系运算
d、都是赋值运算
4、为了避免在嵌套的条件语句if-else中产生二义性,c 语言规定,else子句总是与( )。
a、其之前最近的if配对
b、其之后最近的if配对
c、同一行上的if配对
d、缩排位置相同的if配对
5、关于break和continue语句,下列叙述正确的是( )。
a、在循环体中可以用break语句结束本次循环
b、在循环体中可以用continue语句结束本次循环
c、break语句仅能使用在switch结构中
d、可以使用continue语句跳出switch结构
6、下列有关函数重载的叙述中,错误的是______________。
a、函数重载就是用相同的函数名定义多个函数。
b、重载函数的参数列表必须不同。
c、重载函数的返回值类型必须不同。
d、重载函数的参数可以带有默认参数。
7、在vc中,若定义一个函数的返回类型为void,则以下叙述正确的是( )。
a、函数返回值需要强类型转换
b、函数不执行任何操作
c、函数本身没有返回值
d、函数不能修改实际参数的值
8、下列情况中,不会调用拷贝构造函数的是___________。
a、用一个对象去初始化同一类的另一个新对象时
b、将类的一个对象赋值给该类的另一个对象时
c、函数的形参是类的对象,调用函数进行形参和实参结合时
d、函数的返回值是类的对象,函数执行返回调用时
9、在类定义的外部,可以被访问的成员有( )。
a、所有类成员
b、private或protected的类成员
c、public的类成员
d、public或private的类成员
10、静态成员函数没有____________。
a、返回值
b、this指针
c、指针参数
d、返回类型
11、若用数组名作为调用函数的实参,则传递给形参的是( )。
a、数组存储首地址
b、数组的第一个元素值
c、数组中全部元素的值
d、数组元素的个数
12、关于动态存储分配,下列说法正确的是_______________。
a、new和delete是c 语言中专门用于动态内存分配和释放的函数
b、态分配的内存空间也可以被初始化
c、当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间
d、当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
13、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为________________。
a、派生类、成员对象类、基类
b、成员对象类、基类、派生类
c、基类、成员对象类、派生类
d、基类、派生类、成员对象类
14、下列关于运算符重载的叙述中,正确的是___________。
a、通过运算符重载,可以定义新的运算符。
b、有的运算符只能作为成员函数重载。
c、若重载运算符 ,则相应的运算符重载函数名是 。
d、重载一个二元运算符是,必须声明两个形参。
15、语句ofstream f("salary.dat",ios_base::app);的功能是建立流对象f,并试图打开文件salary.dat与f关联,而且_______。
a、若文件存在,将其置为空文件;若文件不存在,打开失败。
b、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。
c、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败。
d、若文件存在,打来失败;若文件不存在,建立一个新文件。
16、阅读下列程序,写出运行结果: #include
17、对象在逻辑上是相对独立的,每个对象都拥有自己的数据和函数。但是,在物理上,对象的数据成员是__________的,而类的成员函数却是共有的。
18、析构函数在对象的________时被自动调用。
19、如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下面程序没有使用多态机制,其输出结果是_________________。 #include
20、c 语言中的多态性分为编译时 的多态性和__________的多态性两种。