企业做网站有什么作用,宁波seo优化报价多少,网站备案证书下载密码忘了,西安网站建设行业动态一、双空
编译器可以根据硬件特性选择合适的类型长度#xff0c;但要遵循如下限制#xff1a;short与int类型至少为___C___位#xff0c;long至少为__D____位#xff0c;并且short类型不长于int类型#xff0c;int类型不得长于long类型。
A. 4 B.8 C.16 D. 32 E. 64…一、双空
编译器可以根据硬件特性选择合适的类型长度但要遵循如下限制short与int类型至少为___C___位long至少为__D____位并且short类型不长于int类型int类型不得长于long类型。
A. 4 B.8 C.16 D. 32 E. 64
二、
如下结构体在64位机器上的大小为__D_字节。 struct s1
{char a;union{short b;char c:2,d:1;};int *e;
};A.4 B. 11 C. 13 D. 16 E. 18解析这里考了struct的字节问题需要考虑对齐。并且union 的字节取成员变量的最大字节即2.a是一个指针在64位系统下是8字节所以考虑上对齐为16字节。 三、
以下程序输出结果是_C_____ #include stdio.hvoid main()
{int a 1, b 1;ab;printf(a%d,b%d, a, b);
}A.1,1 B.1,2 C.2,1 D.2,2解析 aba b(a)b
四、
以下程序输出的是__D_____ #include stdio.hvoid main()
{int a 5;int b;b a;printf(a%d,b%d, a, b);
}A.5,5 B.5,6 C.6,5 D.6,6五、 请问以下程序输出结果是____B_____ #includeiostream
using namespace std;
int main ()
{int a[][3]{{1,2,3},{4,5,0}},(*pa)[3],i;
paa;
for(int i0;i3;i)
{if (i2){pa[1][i]pa[1][i]-1;}else{pa[1][i]1;}}
printf(%d\n,a[0][1]a[1][1]a[1][2]);}A.6 B.7 C.8 D.9 E.10 F.以上答案不对解析 这里的 int (*pa)[3],实际上定义了一个指向由三个元素组成的一维数组令paa,所以pa完全代替了a,所以后面的赋值也就是对a的赋值因此答案是B 六、
若有定义int A[3][4];能表示数组元素A[1][1]的是____B_____
A. (A[1]1) B.*(A[1][1]) C.(*(A1)[1]) D.*(A5)
解析
A. (A[1]1) 表示A[1][1]的地址B.正确 C.正确的分解顺序是(A1)[1]*(A11)*(A2):表示第二行第0列的首地址然后再加上*,就表示A[2][0]. D.越界
注意[ ]的优先级优于*或者
七、
多选
定义一个函数指针变量pfun使下面的赋值语句没有编译警告且无编译错误 int test(void)
{return 0;
}
pfuntest;请选择_____A, B____ A. int (*pfun)(void);
B.typedef int(*PFUN)(void);
PFUN pfun;
C. int* (pfun)(void);
D.int *(*pfun)(void);
解析;本题考了函数指针其中A是常规的做法B、typedef的典型用法typedef有两种用法一种是创建别名另一种是掩饰复合类型如数组和指针。 例如你不用像下面这样重复定义有 81 个字符元素的数组char line[81]; char text[81]; 只需这样定义Line类型即代表了具有81个元素的字符数组使用方法如下typedef char Line[81];Line text,line;getline(text);或者如上面的题中的用法。 八、 定义变量a,包含10个函数指针的数组函数带一个整型变量返回值为整型___C_____
A. int a[10]() B. (int*) a[10] C.int (*a[10])() D.int *(a()[10]) 九、
已知 struct point{int a;int *b; }p;p.a300;p.b(int*)500;
则 p.ap.b的值是_B____ A.800 B.1700 C.2300 D.1100 解析;
p.b(int*)500;将500转化为指针实际上就是pb取了500的八进制数一般地址取十六进制用printf(%X,p.b)输出。然后p.ap.b实际上就是将p.b的地址往后移了300*41200字节int为4个字节所以实际上等于500300*41700
参考
1. 为什么整数可以转换为指针 2. int *p(int *)100; 数字转换成int类型的指针 3.c语言 一个指针值加上一个整型值是什么意思
十、
多选 以下程序输出__A,B_____ printf(%d,55^0xAA);
A. 157 B.0x9D C.127 D.128
解析 55二进制110111 0xAA(二进制)10101010 二者取异或运算得10011101------十进制157,十六进制0x9D
十一、 以下程序输出的是_____C_____ int a,b;a1;b32;printf(%d,%d\n,ab,132);A.0,0 B.0,1 C.1,0 D.1,1 解析; 左移或者右移把握一个标准就是在移位运算时byte、short和char类型移位后的结果会变成int类型对于byte、short、char和int进行移位时规定实际移动的次数是移动次数除以32的余数也就是移位33次和移位1次得到的结果相同。移动long型的数值时规定实际移动的次数是移动次数和64的余数也就是移动66次和移动2次得到的结果相同。
而且左移时高位移出(舍弃)低位的空位补零。右移时若是负数低位舍弃高位补1,若是正数低位舍弃高位补0
例如 int i 1, j 0x80000000; //设int为32位i i 33; // 33 % 32 1 左移1位,i变成2j j 33; // 33 % 32 1 左移1位,j变成0,最高位被丢弃int k 0x80000000; 即二进制为100000000 00000000 00000000 00000000k k 1; //k的值不会变成0x40000000,而会变成0xc0000000即二进制为11000000 00000000 00000000 000000000这里a1,a32 //32%320未移位故a1, 但是132由于越界直接舍弃高位所以答案为0总之记住若是int类型移动的次数为移动次数与32/64的余数若是一个数常数则移位超过32/64直接舍弃高位为0 十二、
如果数组a的首地址为65072每个整数为16位的则下列程序打印输出的是______C_______ #include stdio.h
int main()
{int a[3][4]{1,3,5,7,9,7,5,3,1,3,5,7};printf(%u\n,a1);return 0;
}A. 65088 B. 65120 C. 65080 D.65096 E.以上答案都不对解析 a的首地址65072a1指向a[1][0],离首地址相差4个int,由于每个整数为16位也就是2字节所以共相差8个字节因此输出65072865080
十三、 如果数组a的首地址为50152则下列程序打印输出的是______B_______ #include stdio.h
int main()
{int a[3][4]{1,3,5,7,9,7,5,3,1,3,5,7};printf(%u\n,a1);return 0;
} A. 50168 B.50200 C.50153 D.50156 E.以上答案都不对
解析 注意到a为二维数组的首地址指向第0行a1指向二维数组的最后一个元素的下一个元素因此5015212*450200
十四、
请问以下程序输出结果是_____C_______ int a[3][3]{1,2,3,4,5,6,7,8,9};int (*ptr)[3]a;printf(%d,(*(ptr1))[2]);A.4 B.5 C.6 D.7 解析ptra;所以ptr指向a数组的第0行然后再看(*(ptr1))[2]);看的顺序是ptr1----*(ptr1)-------(*(ptr1))[2]),依次指向 1行首地址1行0列首地址1行2列元素即a[1][2],也就是6
十五、多选题
HASH值计算公式是(MAC[1]^MAC[2]^MAC[3]^MAC[4])%8
下面4个MAC地址哪些是不会发生hash冲突的_________
A. 00 d0 f8 01 02 03
B.00 1a a9 7f 78 58
C. 00 00 5e 00 01 cc
D.02 03 05 06 aa fe
解析 MAC地址是6字节十六进制数组成的。
A d0 ^ f8 ^ 01 ^ 0211010000 ^ 11111000 ^00000001^000000100010101143(10进制)
B1a ^ a9 ^ 7f ^7800011010 ^10101001 ^01111111 ^0111100010110100180(10进制)
C: 00^ 5e ^ 00^ 0195(10进制)
D:03^ 05 ^06^ aa170(10进制)
43%83,180%84 95%87 170%82 好像都不会冲突啊怎么做
十六、
请补齐以下程序__________ int setx_r(int len)
{Lock(cb);g_ptx_ptr-lengthlen;g_ptx_ptr-strkmalloc(d_len);if (g_ptx_ptr-strnull||g_ptx_ptr!OK){_________________;return ERR;}Unlock(ch);Return Success;
}A. Lock(cb) B.Unlock(cb) C. break D.不必填写 E。以上答案都不对 十七、
以下程序输出是___D_____ #include stdio.h
#include stdlib.h
#include string.h
#define Max 10
char* test()
{
char buf[Max];
memset(buf,0,Max);
sprintf(buf,%s,001);
sprintf(buf,%s%s,buf,buf);
return buf;}
void main()
{printf(%s,test());}A.001 B.001001 C.001001001 D.不确定或者运行错误 E.以上答案都不对 答案 D
解析由于char* test(),返回的是局部指针所以一旦函数调用结束buf分配的内存释放所以返回的是随机的字符。
十八、
请问以下程序输出结果是______F____ int i,j;
int array[10];
int *aparray5;
for(i0;i10;i)
{array[i]i;
}
i3;j5;
printf(i[array]j%d\n,i[array]j);A.3 B.4 C. 5 D.6 E.7 F.8 G.9 H.以上答案都不对解析 上面代码起初我以为是错的后来实际编译一下可以通过i[array]相当于*(arrayi),也就是array[i],所以这里相当于array[3]5358 十九、
下面程序片段的运算结果为____C_______ int main ()
{
int x2016,y2017,z2018;
zxy;
printf(%d\n,z);}A.4033 B.4034 C.6051 D.6052解析 zxy,由于的优先级优于,故左式相当于z(x)(y);x,y,都是先使用后自增故z2016201720186051 二十、
下面程序的输出结果为_______C______ #includeiostream
#includemath.h //包含了string.h
using namespace std;char buf[256];
int main ()
{
sprintf(bufsprintf(buf,%s,abc\0%de),%s,fgh%%di);
printf(buf,112);
return 0;}A.abc B.fgh C.abcfgh%di D.fgh%de E.abc%de二十一、下面的输出结果是____8_____ char* s \\tmp012\012;cout strlen(s) endl;解析 最初拿到这道题我的答案是7,原因是\\使用了转义字符表达‘\’后面还有‘\0’strlen遇到\0就停止计数所以共有\\tmp012共7个字符。其实错了\012实际上是用八进制表示的字符\n表示换行。所以共有8个字符。实际上‘\0’是不会直接出现在字符串中编译器默认字符串的末尾为‘\0’。在C中除了用八进制表示字符还可以使用\x**即一个十六进制表示一个字符或者使用ASCII值直接表示。 二十二、下面的输出结果是_____53_____ int a[5] { 9876, 0123, 4567, 2345, 8901 };printf(%x\n, *(a 1));解析 *(a1)a[1]0123,输出%x实际上输出16进制。而0123是8进制转化为16进制为53.二十三、下面的输出结果是_____0____ int a -6;unsigned int b 6;cout a b endl;解析unsigned int 与int相加时会转化为int再加 二十四、在32位系统下下面的输出结果是__64 16 16 4_______ int a[4][4];cout sizeof(a) endl;cout sizeof(a[0]) endl;cout sizeof(*a) endl;cout sizeof(*a1) endl;解析a表示二维数组故字节为4*4*464a[0]或者*a代表0行一维数组故字节为4*416,而*a1表示0行1列元素的地址是一个指针所以字节为4