牛客:脑筋急转弯的选择题

 1.

由printf输出的数据都隐含左对齐(错误,默认右对齐)

scanf和printf是C语言提供的输入和输出语句(错误,C语言只提供标准,不提供函数语句)

赋值语句是一种执行语句,必须放在函数的可执行部分(正确)

由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的(错误,实际精度还受到计算机系统内存的影响)

2.

静态联编是在程序运行前调用,动态联编是在程序运行时调用

3.

int aa[ 8];

&aa[0]++;(错误,地址无法自增,因为是固定的常量)

4.

使用运算符对数据进行格式输出时,必须要包含iomanip.h头文件,包含setw()函数

5.

double浮点数不能用%取余数

k=(a=200,b=300) 相当于 a=200 b=300 k=b

6.

子类只能说明该类继承了父类,子类型强调该类具有父类一样的行为(公有继承)

公有继承下派生类为基类的子类型,其他都只是子类

7.

对于浮点变量X,Y  表达式X==Y是非法编译错误(错误,有语法错误)

分支结构是根据算术表达式的结果来判断流程走向的(错误,还跟表达式的值有关,因为括号里面不一定是表达式,还有可能是一个值)

8.

float a;

unsigned b;

scanf("%6.2f%d",&a,&b);    //错误,浮点数不能定义精度

scanf("%f%f",&a,&b);          //错误,整型不能用浮点数输出

9.

void fun(int n,char *s)(......)

void (*pf)(int,char);   pf=&fun;  //错误,参数错误

void (*pf)(int n,char *s);   pf=fun;  //正确

 10.

 return 后面括号里的表达式的值即是此函数的值(错误,函数返回时会根据定义的返回类型对返回值进行强制类型转换)

11.

C语言中变量以补码形式存放在内存中,正数的补码与原码相同,负数求补码方式为(符号位不变,其余各位取反,最后末尾加1);

32位机器:int 32位,short 16位。

x = 127,正数,原码:0111 1111,补码:0111 1111,扩展到32位高位补0,结果为0000007FH;

Y = -9,负数,原码:1000 1001,补码:1111 0111,扩展到16位高位补1,结果为FFF7H;

z = x + y = 118,原码:0111 0110,补码:0111 0110,扩展到32位高位补0,结果为00000076H。

12.

for(表达式1; ;表达式3)  //默认中间表达式为1

13.

实例对象都是通过类的方法生成的(正确)

14.

已知n阶矩阵A的行列式满足|A|=1,求|A^(-1)|(A^(-1)表示A的逆矩阵)=1

15.

有一个二维数组A[10][5],每个数据元素占1个字节,且A[0][0]的存储地址是1000,则A[i][j]的地址是1000+5i+j

16.

A*pa=new A[10];

delete []pa;  //一共调用10次构造函数,10次析构函数

17.

定义网络传输数据包为如下,其中data的作用是维护数据空间包的连续性

class packet{
     int size;
     void data[0];
}

 18.

ENUM 是标识符  //C对大小写敏感

19.

返回值存在寄存器中,没有地址,不能作为形参,但可以作为实参

20.

 在 C 语言中,能代表逻辑值“真”的是非零的数(因为C语言没有布尔值)

 21.

在x86的机器上,int a=0xabcd1234 char b=((char*)&a)[0]请问b是多少0x34

22.

指针有赋初值不会发生任何操作,如没有赋初值会崩溃

#include   <string.h>
#include   <stdio.h> 
#include   <stdlib.h> 
void getmemory(char*p)  {    
    p=(char *) malloc(100);    
    strcpy(p,"hello world");  
}  
int main( ) 
{    
    char *str=NULL;    
    getmemory(str);    
    printf("%s
",str);   
    free(str);    
    return 0;    
}

23.

unsigned int f(unsigned int n){

    if(n==0 || n==1){
        return 1;
    }
    return f(n-1)+f(n-2);
}

void count(int n){

    unsigned int tmp=n-((n>>1)&033333333333)-((n>>2)&011111111111);
    std::cout<<((tmp+(tmp>>3))&030707070707)%63<<std::endl;
}

int main(){

    count(f(7));
    count(f(9));  //3 5
    return 0;
}

 24.

volatile int *p=(int *)0xaae0275c;*p=1

(volatile int *)0xaae0275c[0]=1  //错误

volatile int *p=(int *)0xaae0275c;p[0]=1

*(volatile int *)0xaae0275c=1

 25.

char* c[]={"HELLO","NEW","WORLD","SAYHI"};
char** cp[]={c+3,c+2,c+1,c};
char*** cpp=cp;

int main(void){

    printf("%s",**++cpp);
    printf("%s",*--*++cpp+3);
    printf("%s",*cpp[-2]+3);
    printf("%s
",cpp[-1][-1]+1);  //WORLD,LO,HI,EW
}

26.

int d[3][]={{1,2},{1,2,3},{1,2,3,4}};(错误,数组可以不指定行,但必须指定列)

27.

在被调用函数中,不需要考虑形参数组的大小(正确)

28.

二维数组X按行顺序存储,其中每个元素占1个存储单元。若X[4][4]的存储地址为Oxf8b82140,X[9][9]的存储地址为Oxf8b8221c,则X[7][7]的存储地址为(0xf8b821c4)。

29.

void main()
{
char c1,c2;
int a1,a2;
c1=getchar();
scanf("%2d",&a1);
c2=getchar();
scanf("%3d",&a2);
printf ("%d,%d,%c,%c
",a1,a2,c1,c2);  //2a,45b,1,3
}

 30.

(268)10=(256)10+(12)10=(100000000)2+(1100)2=(100001100)2=(10C)16

31.

抽象类特有的是不能生成对象

32.

内部静态类的可见性和存在性不一致

33.

A *pa = new A[10];
delete pa;  //构造函数调用10次,析构函数调用1次,delete[] pa

34.

short si = -32767;

unsigned short usi = si;  //32769

35.

C++中,能作为函数重载判断依据的是  //const 参数个数  参数类型,返回值不能做函数重载判断依据

原文地址:https://www.cnblogs.com/k5bg/p/11102241.html