下列程序的输出结果是______。 union un { int a[3]; long b; char c[6]; }un1,*p; main() {p=&un1; p->a[0]=0x37; p->a[1]=0x38; p->a[2]=0x39; printf("%c\n",p->c[4]); }A.39B.9C.38D.8

题目

下列程序的输出结果是______。 union un { int a[3]; long b; char c[6]; }un1,*p; main() {p=&un1; p->a[0]=0x37; p->a[1]=0x38; p->a[2]=0x39; printf("%c\n",p->c[4]); }

A.39

B.9

C.38

D.8


相似考题
参考答案和解析
正确答案:B
解析:共用体中的成员共同占用一段内存单元,其中整型数组a中的数据存储形式以及和字符数组的对应关系如图所示。
更多“下列程序的输出结果是______。union un{int a[3]; long b; char c[6];}un1,*p;main(){p=&un1; ”相关问题
  • 第1题:

    下面程序的输出结果是______。 include main() {char *p[]="BOOL","OPK","H","SP"};int

    下面程序的输出结果是______。 #include<stdio.h> main() { char *p[]="BOOL","OPK","H","SP"}; int i; for(i=3;i>=0;i-,i-) printf("%c",*p[i]); printf("\n"); }

    A.SO

    B.SP

    C.SPOPK

    D.SHOB


    正确答案:A
    解析:p[0]存放的是“BOOL\0”的首地址;p[1]存放的是“OPK\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第—个字符。在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i-,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。

  • 第2题:

    以下程序的输出结果是【】。 includevoid main() {char *p= "12345678" , *r;long *q;

    以下程序的输出结果是【 】。

    include<iostream. h>

    void main() {

    char *p= "12345678" , *r;

    long *q;

    q=(long *)p;

    q++;

    r= (char *) q:

    cout<<r;

    }


    正确答案:5678
    5678

  • 第3题:

    若有如下程序:include using namespace std;int main(){ char *p="abcdefgh",*r; lon

    若有如下程序: #include <iostream> using namespace std; int main() { char *p="abcdefgh",*r; long *q; q=(long *)p; q++; r=(char *)q; cout<<r<<end1; return 0; } 上述程序的输出结果是( )。

    A.abcdefgh

    B.0

    C.abcd

    D.efgh


    正确答案:D
    解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串。还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

  • 第4题:

    下列程序的输出结果是()。 include main() {stmct st {int y,x,z; }; union {long i; i

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

    #include<stdio.h>

    main()

    { stmct st

    { int y,x,z;

    };

    union

    { long i;

    int j;

    char k;

    }un;

    printf("%d,%d\n",sizeof(stmct st),sizeof(un));

    }

    A.6,2

    B.6,4

    C.8,4

    D.8,6


    正确答案:B
    解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

  • 第5题:

    若有如下程序段: include using namespace std; int main() {char*p="abcdefgh",*r;l

    若有如下程序段:

    include <iostream>

    using namespace std;

    int main()

    {

    char *p="abcdefgh",*r;

    long *q;

    q=(long *)p;q++;

    r=(char *)q;

    cout<<r<<end1;

    return 0;

    }

    该程序的输出结果是______。


    正确答案:efgh
    efgh 解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“a=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给小然后执行“q++”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

  • 第6题:

    下列程序的输出结果是______。 main() { union} int a[2]; long k; char c[4]; }un,*sp=&un; sp->a[0]=0x39; sp->a[1]=0x38; printf("%1x\n",sp->k); }

    A.3938

    B.3839

    C.390038

    D.380039


    正确答案:D
    解析:结构体变量un的存储情况如图18-3所示,第一列表示地址,第二列为每个字节的值,可用两位的十六进制数表示,当把这4个字节的内容作为long型数据时,高地址字节的值表示高位,低地址字节的值表示低位。

  • 第7题:

    有以下程序,其输出结果是()。include using namespace std;int main(){ char a[10]={'

    有以下程序,其输出结果是( )。 #include <iostream> using namespace std; int main(){ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p; int i=8; p=a+i; cout<<p-3<<endl; return 0; }

    A.6789

    B.6

    C.789

    D.'6'


    正确答案:A
    解析:没有下标的数组名是一个指向该数组首元素的指针,本程序实现的功能是将字符“6”及其以后的字符按字符串形式输出。

  • 第8题:

    以下程序的输出结果是()。includeint fun (char*s){char *p=s;while (*p!='\0,) p++

    以下程序的输出结果是( )。 #include<iostream.h> int fun (char*s) { char *p=s; while (*p!='\0,) p++: return (p-s): } void main() { cout<<fun (" ABCDEF ")<<endl: }

    A.3

    B.6

    C.8

    D.0


    正确答案:B

  • 第9题:

    下面程序的输出结果是_______。 union un { int a[4]; long b; char c[6];} main() { union un u; printf("%d%d",sizeof(u),sizeof(uA) ); }

    A.82

    B.88

    C.188

    D.182


    正确答案:B
    解析:sizeof函数计算已知类型所占的字节数。共用体变量所占的内存长度等于最长的成员的长度。

  • 第10题:

    以下程序的输出结果是includemain(){ union un{ int i;long k;char c;};struct byte{i

    以下程序的输出结果是 #include<stdio.h> main() { union un{ int i; long k; char c;}; struct byte{ int a; long b; union un c;}r; printf("%d\n",sizeof(r));}

    A.10

    B.13

    C.7

    D.8


    正确答案:A
    解析:本题主要考查了结构体和共用体数据的存储形式。共用体的一个特点是所有数据成员共用一段存储单元,而结构体每个数据成员都单独占据一段存储单元。共用体所占存储单元的大小由长度最长的数据成员的长度决定。题中共用体变量c占据4个字节的长度,结构体r所占存储空间的大小为int(2个字节)+long(4个字节)+共用体c(4个字节)=10个字节,所以答案为A)。

  • 第11题:

    以下程序的输出结果是() includemain(){ union un{int i; long k; char c;};struct by

    以下程序的输出结果是( ) # include<stdio.h> main() { union un{int i; long k; char c; }; struct byte{ int a; long b; union un c; } r; printf("%d\n",sizeof(r)); }

    A.10

    B.13

    C.7

    D.8


    正确答案:A

  • 第12题:

    有以下程序: include using namespace std; int main() {char a[10] = {'1','2','3',

    有以下程序: #include<iostream> using namespace std; int main() { char a[10] = {'1','2','3','4','5','6','7','8','9','0'),*p; int i=8; p=a+i; cout<<p-3<<end1; return 0; } 执行程序后的输出结果是( )。

    A.6

    B.6789

    C.'6'

    D.789


    正确答案:B
    解析:本题考核如何引用数组。解此题需要注意的几点是:没有下标的数组名就是一个指向该数组第1个元素的指针;字符'0'~'9'与数字0~9是不相等:a[i]与*(a+i)所指的是同一个数组元素。根据以上几点可知,本程序实现的功能是把字符'6'以及其后面的字符按字符串形式输出。

  • 第13题:

    以下程序运行后的输出结果是【】include main ( ) {char a[] ="123456789", *p;int i =0;

    以下程序运行后的输出结果是【 】

    include <stdio.h>

    main ( )

    { char a[] ="123456789", *p;

    int i =0;

    p=a;

    while( * p)

    { if(i%2 ==0) *p='*';

    p++;i++;

    }

    puts(a);

    }


    正确答案:*2*4*6*8*
    *2*4*6*8* 解析:程序中指针p指向数组a,while(*P)语句的循环条件是* p!='\0',在循环体中,当 i=0,2,4,6,8时,i%2=0,执行*p='*',即a[i]='*',继续执行p++;i++;使i为奇数;当i=1, 3,5,7时,i%2=1,继续执行p++;i++;使i为偶数。可见,程序在字符串"123456789",的下标为偶数的位置上赋值'*',代替原字符串中的1,3,5,7,9。所以,程序输出结果为*2*4*6*8*。

  • 第14题:

    下列程序的输出结果是( )。 include using namespace std; int main() {

    下列程序的输出结果是( )。 #include<iostream> using namespace std; int main() { char a[]="Hello,Test"; char *p=a; while(*p) { if(*p>='a'&&*p<='z') cout<<char(*p+'A'-'a'); else cout<<*p; p++; } return 0; }

    A.hello,test

    B.Hello,Test

    C.HELLO,TEST

    D.hELLO,tEST


    正确答案:C
    解析:用一个指针变量p指向字符数组a,在while循环中,当不指向数组尾时,将小写字母转换为大写字母,然后将其输出。

  • 第15题:

    下列程序的输出结果是()。includemain(){struct st{int y,x,z;};union{long i; int j;

    下列程序的输出结果是( )。 #include<stdio.h> main() { struct st { int y,x,z; }; union { long i; int j; char k; }un; printf("%d,%d\n",sizeof(struct st),sizeof(un)); }

    A.6,2

    B.6,4

    C.8,4

    D.8,6


    正确答案:B
    解析: 本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

  • 第16题:

    下列程序的输出结果是( )。 include main() { struct st { int y,x,z; }; union {long

    下列程序的输出结果是( )。 #include <stdio.h> main() { struct st { int y,x,z; }; union { long i; int j; char k; } un; printf("%d,%d\n",sizeof(struct st),sizeof(un)); }

    A.6, 2

    B.6, 4

    C.8, 4

    D.8, 6


    正确答案:B
    解析:本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。

  • 第17题:

    下列程序的执行结果是_______。includeunion un{ int i;char c[2];};void main(){union

    下列程序的执行结果是_______。 #include<stdio.h> union un { int i; char c[2]; }; void main() { union un x; x.c[0]=10; x.c[1]=1; printf("\n%d",x.i); }

    A.266

    B.11

    C.265

    D.138


    正确答案:A
    解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2千字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

  • 第18题:

    以下程序运行后,输出结果是______。includess(char*s){char *p=s; while(*.p)p++; retu

    以下程序运行后,输出结果是______。#include<stdio.h>ss (char *s){ char *p=s; while(*.p)p++; return(p-s);}main(){ char *a="abded"; int i; i=ss((A); print ("%d\n",i);}

    A.8

    B.7

    C.6

    D.5


    正确答案:D

  • 第19题:

    下列程序的输出结果是()。includeusing namespace std;int main(){char a[]="Hello,Te

    下列程序的输出结果是( )。 #include<iostream> using namespace std; int main() { char a[]="Hello,Test"; char *p=a; while(*p) { if(*p>='a'&&*p<='’z') cout<<char(*p+'A'-'a'); else cout<<*p; p++; } return 0; }

    A.hello,test

    B.Hello,Test

    C.HELLO,TEST

    D.hELLO,tEST


    正确答案:C
    解析:用一个指针变量p指向字符数组a,在while循环中,当不指向数组尾时,将小写字母转换为大写字母,然后将其输出。

  • 第20题:

    下列程序输出的结果是()。includeun1(char a,char b){char c;c=a;a=b;b=c;}fun2(char*a

    下列程序输出的结果是( )。 #include<stdio.h> un1(char a,char b){char c;c=a;a=b;b=c;} fun2(char*a,char b){char c;c=*a;*a=b;b=c;} fun3(char*2,char*b){charc;c=*a;*a=*b;*b=c;} void main() { char a,b; a='A';b='B';funl(a,b);putchar(a);putchar(b);

    A.BABBAB

    B.ABBBBA

    C.ABBABA

    D.ABABBA


    正确答案:B
    解析: 由程序中的主函数main入手,分别调用funl,fun2,fun3函数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以d调用funl后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,印传递的是地址,所以形参a的改变合影响实参a的值,即BB。同理,调用fun3后为BA。

  • 第21题:

    以下程序运行后,输出结果是()includess(char*s){char*p=s; while(*p)p++ return(p-s);

    以下程序运行后,输出结果是( ) #include<stdio.h> ss(char *s) { char*p=s; while(*p) p++ return(p-s); } main() { char *a="abded" int i; i=ss(a) ; printf("%d\n",i); }

    A.8

    B.7

    C.6

    D.5


    正确答案:D

  • 第22题:

    下列程序的执行结果是______。include union {int i;char c[2]; }; void main() {union

    下列程序的执行结果是______。 #include<stdio.h> union { int i; char c[2]; }; void main() { union un x; x.c[0]=10; x.c[1]=1; printf("\n%d",x.i); }

    A.266

    B.11

    C.265

    D.138


    正确答案:A
    解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以兄i的值为266。

  • 第23题:

    下列程序的执行结果是______。include union un{ int i;char c[2];};void main(){union

    下列程序的执行结果是______。 #include <stdio.h> union un { int i; char c[2]; }; void main() { union un x; x.c[0]=10; x.c[1]=1; printf("\n%d",x.i) }

    A.266

    B.11

    C.265

    D.138


    正确答案:A
    解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。