c++期末题目

1,以下描述正确的是______B______。

A、函数定义不可以嵌套,函数调用也不可以嵌套

B、函数定义不可以嵌套,函数调用可以嵌套

C、函数定义可以嵌套,函数调用也可以嵌套

D、函数定义可以嵌套,函数调用不可以嵌套

2,下面保留字中不能作为函数的返回类型的是_____D_______。

A、voidB、zlongC、signedD、new

以下说法中正确的是____C____。

A、C++程序中,函数的定义必须写在调用该函数的语句之前

B、C++程序中的main()函数必须放在程序的开始部分

C、C++程序总是从main()函数开始执行

D、C++程序总是从源文件中第一个定义的函数开始执行

3,参数的传递方式为值传递时,对形参和实参的要求正确的是_____B___。
A、函数定义时,形参一直占用存储空间B、实参可以是常量、变量或表达式

C、形参可以是常量、变量或表达式D、形参和实参类型和个数都可以不同

4,C++中函数形参的缺省存储类型是_____A_。

(自动变量(auto)、静态变量(static)、外部变量(extern)以及寄存器变量(register))
A、自动类型B、静态类型 C、寄存器类型D、外部类型

5、下列关于宏定义的描述,不正确的是____B__。
A、宏替换并不检查替换后的源程序的语法错误

B、带参宏在展开时,先求出实参表达式的值,然后再代入形参,并运算求值

C、宏替换不占用程序运行时间

D、宏名不存在类型问题,它的参数也不存在数据类型问题
6,如果函数fun返回值类型为float,并且具有四个整型参数,其中两个参数具有缺省值5;其返回值类型为浮点型。则函数的原形说明为▁▁▁。(若参数名不省略,则从左至右依次用a,b,c,d)
填空1答案:float fun(int a, int b , int c=5, int d = 5);

7,对于以函数原形为void fun(int a[ ],int n)的函数,若有变量说明int b[10];则下列函数调用出现语法错误的是(D)

A,fun(b,b[0])

B、fun(b,5)

C、fun(&b[0],10)

D、fun(b[0],5)

8,{""}和""的区别?

7,若有以下函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是___3__。

函数返回类型不能作为重载函数的调用的依据

8,以下程序程序执行后的输出结果是___1,0,2,0___。

#include
using namespace std;
int i = 0 ; 
void fun(){
    static int i = 1;
    cout<

解析:static是静态变量,使得int i 的值会改变

9,下面代码的输出结果是:11  18

#include 
using  namespace  std;
void  m();
int a=3;
int main(){    
    for(int i=0;i<2;i++) 
        m();
   cout<

注意在函数里a是局部变量,::a是全局变量

10,写出运行结果:

12  -2 

5  25

#include 
using  namespace  std;
void  num(){   
    extern int x,y;
    int a=15,b=10;
    x=a-b;    
   y=a+b;
}
int x,y;
int main(){   
    int a=7,b=5, x=0,y=0;
    num();
    x+=a+b; 
   y-=a-b;
    cout<

extern是调用其他文件或变量时的使用

11,下列关于宏定义的描述,不正确的是______。

A、宏替换并不检查替换后的源程序的语法错误

B、带参宏在展开时,先求出实参表达式的值,然后再代入形参,并运算求值

C、宏替换不占用程序运行时间

D、宏名不存在类型问题,它的参数也不存在数据类型问题

12,C++语言的编译预处理功能主要有▁宏定义▁▁、▁文件包含▁▁和条件编译三种功能

第六章

1,设有定义一维数组如下:int a[5],*p=a;,则下列描述中错误的是(B)

A、表达式a+2是合法的

B、表达式 p=p+1是合法的

C、表达式a=a+1是合法的

D、表达式p-a是合法的

2,下列各语句行中,能正确进行赋字符串操作的语句是(B)

A、char s[5]={"ABCDE"};

B、char *s; s="ABCDE";

C、char *s; *s="ABCDE";

D、char s[5]={'A' ,'B','C','D','E'};//没加'\0',违法

3,执行char a[10]={"abcd"},p=a;后,(p+4)的值是(B)

A、"abcd"

B、'\0'

C、'd'

D、不能确定

4,若有语句int *point , a=4和point=&a;下面均代表地址的一组选项是

A、a, point, *&a

B、&*a, &a, *point

C、&point, *point, &a

D、&a, &*point, point

5,若有定义:int a[2][3];则对a数组的第i行,第j列元素值的正确引用是

A、*(*(a+i)+j)

6,关于两个指针,以下描述正确的是(A)

A、如果同时指向一个变量,则此后就不能再指向其他变量了

B、任何时候都不能相减

C、可在一定条件下进行相等或不等的比较运算

D、可在一定条件下相加

7,设p和q是指向同一个int类型数组不同元素的指针变量且q>p,k也为int类型的变量,则可以执行的语句是

A、p+q

B、k=*(q-p)

C、k=*(p+q)

D、k=*p*(*q)

8,使用new向系统动态申请内存时,正确的是(B)

A、分配的内存空间不用时系统会自动收回

B、有可能获得空指针

C、总是能获得一个指向所需内存空间首地址的指针

D、分配的内存空间只能使用一个特定的指针访问

9,已有函数max(a,b),为了让函数指针变量p指向函数max正确的赋值方法是(A)

A、p=max

B、*p=max

C、p=max(a,b)

D、*p=max(a,b)

10,若有语句int *p=new int(2);则p的值是(C)

A、2

B、0

C、新分配的内存地址值

D、2或0

11,假设有定义char s[100],*p=s; ,则可以用delete p;来释放p占用的内存空间(错误)

12,假设有定义 char s[]="ABCD",*p=s;则执行cout<

13,若有以下定义float *r=new float[10];,则释放指针所指内存空间的操作语句是▁delete[] r;▁▁。

14,设 void fun(int &x,char *p); int m; char s[]="c++"; 以下调用合法的是(C)

A、fun(&m,&s);

B、fun(&m,s);

C、fun(m,s);

D、fun(m,&s);

15,当说明一个结构体变量时系统分配给它的内存是

A、各成员所需要内存的总和

B、结构中第1个成员所需内存

C、成员中所需内存最大者的存储空间

D、结构中最后一个成员所需内存容量

16,以下对结构体类型变量的定义不正确的是(D)

A,#define STUDENT struct student

STUDENT{int num;float age;}std1;

B、struct student{

int num;float age;}std2;

C、struct{

int num;float age;}std3;

Dstruct{

int num;float age;}student;

student std4;

17,以下对结构体类型变量成员的不正确引用是(B)

struct person{

char name[10];

int age;int sex;}pup[5],*p;

p=pup;

A、cin>>pup[0].name;

B、cin>>&pup[0].name;

C、cin>>(*p).age;

D、cin>>p->sex;

18,结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名 和年龄。则(1)处应填入:old=p->age

struct man{

char name[20];

int age;

}person[]={"li=ming",18,"wang-hua",19,"zhang-ping",20};

int main(){

struct man *p,*q;

int old=0;

p=person;

for(int i = 0; i < 3; i++)

{

if(oldage)

{q=p;

__(1)___};

p++;

}

cout<name<<'\t'<age<

......

}

19,写一函数void max(int a[][4],int *p),求出二维数组a[3][4]的每行的最大值,并依次放到p指向的空间中。具体要求如下: (1)初始化一个数组a[3][4],元素值由用户输入。 (2)将其传递给函数,求出a数组每行的最大值。 (3)在主函数中输出a数组及其每行的最大值。

测试说明

平台会对你编写的代码进行测试:

测试输入:3 4 5 2 2 8 3 4 7 9 6 1 预期输出: 3 4 5 2 2 8 3 4 7 9 6 1 第1行最大值为5 第2行最大值为8 第3行最大值值为9

代码:

#include 
#include 
using namespace std;

void max(int a[][4], int* x)
{
	for (int i = 0; i < 3; i++)
	{
		x[i] = a[i][0];
		for (int j = 0; j < 4; j++)
		{
		
			if (a[i][j] >x[i])
			{
				x[i] = a[i][j];
			}
		}
	}
	
}
int main()
{
	int p[3][4];
	int x[3];
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			cin >> p[i][j];
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			cout<

你可能感兴趣的:(算法,c++)