牛课-C++基础知识-选择2

1、在32系统下输出的结果为(      )

#include <stdio.h>

#pragma pack(2)
struct Test1
{
    int a;
    char b;
    short c;
    int *d;
}A;
#pragma pack()

#pragma pack(4)
struct Test2
{
    int *d;
    char b;
    int a;
    short c;
}B;
#pragma pack()

int main()
{
    printf("%d,%d\n",sizeof(A),sizeof(B));
    return 0;
}
输出:12,16

2、计算机程序设计语言的发展,经历了从_________的历程。

机器语言,汇编语言,高级语言

3、用户自定义函数包含两个部分,即_________在前,___在后这两部分的顺序不能颠倒,也不能有交叉。

声明部分、执行部分、声明部分、执行部分。

4、用户定义的函数,必须先定义后使用

5、int a[10],*p=a,*q;q=&a[5];",则表达式p-q的值是 (-5)

6、C++中父类的虚函数必需要实现吗?

class Vir{
public:
	virtual void tryVirtual();
};

class CVir:public Vir{
public:
	void tryVirtual(){
		std::cout<<"CVir"<<std::endl;
	}
};

(1)在main函数中,假设父类或者子类的实例对象,就须要有父类的虚函数的实现

(2)在main函数中,假设没有父类或者子类的实例对象能够不实现父类的虚函数。

(3)假设把虚函数写成纯虚函数,也就不须要实现了。也没不会发生上述讨论。

7、#include "file.h"和#include <file.h>的区别是

当用#include“file.h”时,先搜索当前工作目录,如果没有,再去搜索,库没有再搜索资源库
当用#include<file.h>时,编译器先从标准库路径开始搜索,如果没再搜索资源库目录,最好搜索当前工作目录。 

8、类的静态成员

  1. 类的静态成员不能由类的构造函数来初始化。
  2. 因为即使不存在类的任何对象时,类的静态成员依然存在并且可以被使用。
  3. 类的静态成员也不能访问任何类的非静态成员(因为此时,非静态成员可能没有被构造)。类的静态成员函数也只能访问静态成员(变量或函数)
  4. 类名和类对象都可以直接调用静态数据成员。因为静态数据成员在执行构造函数之前都已经存在了。
  5. static修饰的函数表示该函数是属于类的,而不是属于某一个对象的,没有this指针。 
  6. static是加了访问控制的全局变量,不被继承。

9、定点整数

1. 用8位二进制补码表示有符号的定点整数,可表示的最大整数是(127),最小整数是(-128)。

2. 用16位二进制码表示无符号的定点整数,可表示的最大整数是(65535),最小整数是(0)。

 

10、下面代码打印结果为()

class Base {
char data[3];
public:
    virtual void f() { cout << "Base::f" << endl; }
    virtual void g() { cout << "Base::g" << endl; }
    virtual void h() { cout << "Base::h" << endl; }
 
};
int main()
{
    cout << sizeof(Base)<< endl;
    return 0; 
}

正确答案:8

虚函数会保存一个虚表指针,考虑字节对齐 3+4+1=8

11、目前计算机最常用的输入设备有:键盘、鼠标

12、在C语言中,基本数据类型主要有:整形、字符型、实型

13、计算机的CPU主要是由:控制器与运算器组成

14、机器数的三种表示形式是:原码、补码、反码

细节见:https://www.cnblogs.com/GuoXinxin/p/11687712.html

15、下面程序的输出结果是(      )

#include <stdio.h>
int main()
{
int  intArray[] = {1, 2, 3, 4, 5};
int  *p = (int *)(&intArray+1);
printf("%d,%d",*(intArray+1),*(p-1));

return 0;
}
A 1,5
B 1,6
C 2,4
D 2,5

正确答案:D

数组取地址后加一是直接增加数组长度 和二维数组类似

16、下面程序的输出结果是(      )

#include <stdio.h>
 
int main()
{ 
int i, n = 0;
float x = 1, y1 = 2.1 / 1.9, y2 = 1.9 / 2.1;
 
for ( i = 1; i < 22; i++)
x = x * y1;
 
while ( x != 1.0 )
{
x = x * y2; n++;
}
 
printf( "%d\n", n );
 
return 0; 
}

程序无线循环

  

  

 

posted @ 2019-10-16 19:42  GuoXinxin  阅读(434)  评论(0编辑  收藏  举报