牛课-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; }
程序无线循环