牛课-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、类的静态成员
- 类的静态成员不能由类的构造函数来初始化。
 - 因为即使不存在类的任何对象时,类的静态成员依然存在并且可以被使用。
 - 类的静态成员也不能访问任何类的非静态成员(因为此时,非静态成员可能没有被构造)。类的静态成员函数也只能访问静态成员(变量或函数)
 - 类名和类对象都可以直接调用静态数据成员。因为静态数据成员在执行构造函数之前都已经存在了。
 - static修饰的函数表示该函数是属于类的,而不是属于某一个对象的,没有this指针。
 - 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; 
}
程序无线循环
                    
                
                
            
        
浙公网安备 33010602011771号