计算机二级

有以下程序:include main(){union{charch[2];int d;} s;s.d=0x4321;printf("%x,%x\n",有以下程序: #include <stdio.h> main() { union { charch[2]; int d; } s; s.d=0x4321; printf("%x,%x\n",s.ch[0],s.ch[1]); } 在16位编译系统上,程序执行后的输出结果是( )。A.21,43B.43,21C.43,00D.21,00

题目
有以下程序:include main(){union{charch[2];int d;} s;s.d=0x4321;printf("%x,%x\n",

有以下程序: #include <stdio.h> main() { union { charch[2]; int d; } s; s.d=0x4321; printf("%x,%x\n",s.ch[0],s.ch[1]); } 在16位编译系统上,程序执行后的输出结果是( )。

A.21,43

B.43,21

C.43,00

D.21,00

参考答案和解析
正确答案:A
解析:int型变量和字符数组ch共用两个字节的存储单元,通常ch[0]位于低字节,ch[1]位于高字节,所以s.ch[0]=21,s.c[1]=43。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

19、下面程序执行后的输出结果是()。 #include <stdio.h> int main() { union { char ch[2]; short d; } s; s.d=0x4321; printf("%x,%x",s.ch[0],s.ch[1]); return 0; }

A.21,43

B.43,21

C.43,00

D.21,00


A

第2题:

下列程序的输出结果是______。include main(){union {int k;char i[2]; }*S,a; s=&

下列程序的输出结果是______。#include <stdio.h>main(){ union { int k; char i[2]; } *S,a; s=&a; s->i[0]=0x39; s->i[1]=0x38; printf("%x\n",s->k);}

A.3839

B.3938

C.380039

D.390038


正确答案:A

第3题:

有以下程序:

main

{ union

{ char ch[2];

int d;

}s;

d=0x4321;

printf("%x,%x\n",S.ch[0],S.ch[l]);

}

在16位编译系统上,程序执行后的输出结果是( )

A.21,43

B.43,21

C.43,00

D.21,00


正确答案:A
s是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此输出的结果为21,43。

第4题:

有以下程序:includedefine N 8void fun(int*x,int i){*x=*(x+i)+1;}main(){int a[N]=

有以下程序: #include<stdio.h> #define N 8 void fun(int*x,int i) {*x=*(x+i)+1;} main() {int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=0;i<N/2;i++) {printf("%d",a[i]);} printf("\n"); } 程序运行后的输出结果是( )。

A.1 3 1 3

B.3 2 3 4

C.4 2 3 4

D.1 2 3 4


正确答案:C
解析:函数fun(int*x,int i)的功能是把数组元素x[i]的值加1赋给x[0]。所以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在for循环语句中,输出数组a中的前4个元素的值,分别是4,2,3,4。

第5题:

有以下程序: main { union { char ch[2]; int d; }s; d=0x4321; printf("%x,%x\n",S.ch[0],S.ch[l]); } 在16位编译系统上,程序执行后的输出结果是( )

A.21,43

B.43,21

C.43,00

D.21,00


正确答案:A
s是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此输出的结果为21,43。

第6题:

以下程序的输出结果是( )。 include main()fint x=0; sub(&x,16,2); printf("%d\n",

以下程序的输出结果是( )。

include<stdio.h>

main()

fint x=0;

sub(&x,16,2);

printf("%d\n",x);

}

sub(int*a,int n,int k)

{if(k<=n) sub(a,n/2,2*k);

*a+=k;

}


正确答案:14
14 解析:本题考查递归函数的调用。在主函数中调用sub(&x,16,2)函数,此时n=16,k=2,if语句的控制的条件k=n成立,所以执行下面的语句,调用sub(x,8,4),此时n=8,k=4,if语句的控制条件k=n成立,所以执行下面的语句,调用sub(x,4,8),此时n=4,k=8,if语句控制的条件k=n不成立,因此,最后得x=2+4+8=14。

第7题:

有以下程序 main() { union { char ch[2]; int d; }s; s.d=0x4321; printf("%x,%x\n",s.ch[O],s.ch[1]); } 在16位编译系统上,程序执行后的输出结果是______。

A.21,43

B.43,21

C.43,00

D.21,00


正确答案:A
解析:此题考核的是共用体的特征。int类型变量和字符数组ch共用两个字节的相同的存储单元,通常ch[0]位于低字节,ch[1]位于高字节,所以s.ch[0]=21,s.ch[1]=43。

第8题:

有以下程序:main(){ union { char ch[2]; Int d; } s; s.d=0x4321; printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位编译系统上,程序执行后的输出结果是( )。A.21,43 B.43,21 C.43,00 D.21,00


正确答案:A
结构体和共用体;在“联合”中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值

第9题:

有以下程序

main()

{ union

{ char ch[2];

int d;

} s;

s.d=0x4321;

printf(" % x, % x\n",s.ch[0],s.ch[1]);

}

在 16 位编译系统上,程序执行后的输出结果是

A)21,43

B)43,21

C)43,00

D)21,00


正确答案:A
(41)A) 解析 : 因为联合的两个变量共用一段内存 ,ch[0] 占用低字节 ,ch[1] 占用高字节 , 所以在读它们的时候还是原来的数据 , 没发生改变。