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