每日一练—C++专项练习 7.19

1、以下只有在使用时才为该类型变量分配内存的存储说明是()

A、auto和static

B、auto和register

C、register和static

D、extern和register

选B。auto根据数据类型分配内存,register在使用时分配CPU寄存器地址

2、已有职工记录描述如下,在C++中,系统为变量w分配多少字节空间

struct worker
{
    int no;
    char name[20];
    char sex;
    union
    {
        int day;
        int month;
        int year;
    }birth;
} w;

因为union联合体的定义,所以birth内的变量共享一块区域,所以占用sizeof(int)+sizeof(char [20])+sizeof(char)+sizeof(int)=4+1*20+1+4=29,因为结构体需要字节对齐,2的倍数,所以应该占用30字节。

3、已有如下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为()。

int a[3][4];
f(a);

A、f(int array[][6])

B、f(int array[3][])

C、f(int array[][4])

D、f(int array[2][5])

首先二维的大小一定要有,而且需要和传入的参数匹配。所以C正确

4、C 语言中的整型常量有3种表示方法。请问这句话的说法是正确的吗?

正确。有十进制,十六进制,八进制。

5、下列可用于 C 语言用户标识符的一组是 ()

A、void,define,WORD

B、a3_b3,_123,Car

C、For,-abc,IF Case

D、2a,DO,sizeof

答案选B。A中void是系统定义的关键词,不能作为用户标识符,define可以。C种-abc中的-不能作为用户标识符的开头。D中sizeof也是系统定义的关键词。

6、执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是()。

int a;
float b;
scanf("a=%d,b=%f",&a,&b);

应该输入a=25,b=2.5

7、有以下程序

#include <stdio.h>
main()
{ 
    int a, b;
    for( a = 1,b = 1; a <= 100; a ++)
    { 
        if( b >= 20) break;
        if( b % 3 == 1)
        { 
            b = b + 3; 
            continue;
        }
        b = b – 5;
    }
    printf("%d\n",a);
}

程序的输出结果是:

输出a的结果,当a>100或b>=20时,循环结束。

b=1,a=1

b=4,a=2

............

b=22,a=8

break

所以,输出结果为8

8、用户双击鼠标时产生的消息序列,下面正确的是()

A、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,WM_LBUTTONUP

B、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONUP,WM_LBUTTONDBLCLK

C、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,WM_LBUTTONDBLCLK

D、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBLCLK,WM_LBUTTONUP

选D。

9、假定CSomething是一个类,执行下面这些语句之后,内存里创建了____个CSomething对象。

CSomething a();
CSomething b(2);
CSomething c[3];
CSomething &ra = b;
CSomething d=b;
CSomething *pA = c;
CSomething *p = new CSomething(4);

10、请问下列代码的输出结果有可能是哪些()

#include<stdint.h>
#include<stdio.h>
union X
{
    int32_t a;
    struct 
    {
        int16_t b;
        int16_t c;
    };
};
int main(){
    X x;
    x.a=0x20150810;
    printf("%x,%x\n",x.b,x.c);
    return 0;
}

按大端存储,b = 0x2015 c = 0x0810

按小端存储,b = 0x0810 c = 0x2015

猜你喜欢

转载自blog.csdn.net/weixin_42095973/article/details/81112780