有以下程序: main() { union{ unsigned int n; unsigned char c; }u1; u1.c='A'; printf("%c\n",u1.n); } 执行后输出结果是( )。A.产生语法错误B.随机值C.AD.65

题目

有以下程序: main() { union{ unsigned int n; unsigned char c; }u1; u1.c='A'; printf("%c\n",u1.n); } 执行后输出结果是( )。

A.产生语法错误

B.随机值

C.A

D.65


相似考题
更多“有以下程序:main(){ union{unsigned int n;unsignedchar c;}u1;u1.c='A';printf("%c\n",u1.n);} ”相关问题
  • 第1题:

    有以下程序:includedstdio.h>int f(int n); main( ){int a=3,s; s=f(a);s=s+f(a);printf(&qu

    有以下程序:

    includedstdio.h>

    int f(int n);

    main( )

    {int a=3,s;

    s=f(a);s=s+f(a);printf("%dkn",s);

    }

    int f(int n)

    {static int a=1;

    n+=a++;

    return n;

    }

    程序运行后的输出结果是( )。

    A.7

    B.8

    C.9

    D.10


    正确答案:C

    本题考查函数的调用。当执行s=f(a)时,进入fun函数,n=n+(a++),n的值为3,a的值为1,a++的意思是先用a的值,再将a加1为2,所以n的结果为4,也就是主函数中f(a)的结果为4;返回主函数,执行s=s+f(a),s为4,再次调用函数,此时n仍为3,a的值刚才已经自加2,所以计算后n的值为5,a自加l为3。返回主函数,f(a)的结果为5,所以s=4+5=9。

  • 第2题:

    以下程序的输出结果是______。 main() { unsigned short a=65536;int b; printf("%d\n",b=a); }

    A.0

    B.1

    C.2

    D.3


    正确答案:A
    解析:65536等于2的16次方,而短整型无符号数的取值范围为0~65535,65536已经超出a的存储范围,将截取溢出了的最高第17位,低16位全部为0,因此把a赋值给b,得到的是剩余的16个0,所以b的值为0。

  • 第3题:

    已知字符0的ASCⅡ码为十六进制数30,下面程序的输出是______。 main() { int i; union{unsigned char c;unsigned int i[4];}z; z.i[0]=0x39;z.i[1]=0x36; printf("%d\n",z.c); }

    A.56

    B.57

    C.58

    D.59


    正确答案:B
    解析:共用体变量中的所有成员共享存储空间,因此变量中的所有成员的首地址相同,且变量的地址也就是该变量成员的地址。

  • 第4题:

    有以下程序: #include<stdio.h> void func(int n) { int i; for(i=0;i<=n;i++)printf("*"): printf("#"); } main( ) {func(3);printf("????");func(4);printf("n\"); 程序运行后的输出结果( )。

    A.****#????***#

    B.***#????****#

    C.**#????****#

    D.****#????*****#


    正确答案:D
    本题考查简单的for循环,func(3)由于i是从0开始,所以会输出四个“*”和一个“#”,然后打印四个“?”func(4),会输出五个“*”和一个“#”,所以答案选择D。

  • 第5题:

    有以下程序: include main( ){ int m =12,n=34;printf( "% d% d" ,m++ , ++n);printf(

    有以下程序: #include <stdio.h>main( ){ int m =12,n=34; printf( "% d% d" ,m++ , ++n); printf("% d% d \n" ,n ++ , ++m); }程序运行后的输出结果是( )。

    A.12353514

    B.12353513

    C.12343514

    D.12343513


    正确答案:A
    解析:程序执行printf("%d%d",m++,++n);后,输出的是m和n+1的值1235,然后m+1=13,再执行printf("%d%d\n",n++,++m);输出n和m+1的值3514,之后n+1=36。这里要注意的是m++和++m的区别:m++是先输出m的值,再执行m++;++m是先执行++m,再输出m的值。

  • 第6题:

    若输入173253,则以下程序的运行结果为______。main(){ unsigned a; int n1,n2; scanf("%o",&a); printf("%o",getbits(a,4,8));}getbits(value,n1,n2)unsigned value;int n1,n2;{ unsigned z; z=~0; z=(z>>n1)&(z<<(16-n2)); z=value&z; z=z>>(16-n2); return(z);}

    A.173253

    B.6

    C.8

    D.173


    正确答案:B

  • 第7题:

    有以下程序: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。

  • 第8题:

    有以下程序

    #include<stdio.h>

    int f(int m)

    { static int n=0;

    n+=m:

    return n;

    }

    main()

    { int n=0;

    printf("%d,",f(++n));

    printf("%d\n",f(n++));

    }

    程序运行后的输出结果是

    A.1,2

    B.1,1

    C.2,3

    D.3,3


    正确答案:A
    解析:static变量用于局部变量中有记忆功能和全局生存期。函数中的静态变量的特点是每次调用函数,静态变量的值是上次调用完该函数后的静态变量值,所以在此题中,第一调用函数,返回1,此时函数中的静态变量n的值为l,所以第二次调用函数时,返回值为2。

  • 第9题:

    有以下程序: #include<stdio.h> int f(int m) { static int n=0; n+=m; return n; } main( ) { int n=0; printf("%d,"f(++n)); printf("%d\n",f(n++)); } 程序运行后的输出结果是( )。

    A.1,2

    B.1,1

    C.2,3

    D.3,3


    正确答案:A
    由题可知,输出是调用了f函数,其中有f(++n)和f(n++),其中n=0,所以输出的结果为l,2。

  • 第10题:

    有以下程序:include main ( ){int a =666,b =888;printf( "%'d \n", a,b); 程序运行

    有以下程序: #include <stdio, h> main ( ) { int a =666,b =888; printf( "%'d \n", a,b); 程序运行后的输出结果是( )。

    A.错误信息,

    B.666

    C.888

    D.666,888


    正确答案:B
    解析:在printf函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出。

  • 第11题:

    有以下程序 main() { union{unsigned int n; unsigned char c; }ul; u1.C='A'; pfintf("%c\n",u1.n); } 执行后输出结果是

    A.产生语法错

    B.随机值

    C.A

    D.65


    正确答案:C
    解析:在定义共用体的同时,定义了一个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的。因此给u1,c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1,n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。

  • 第12题:

    试题33

    有以下程序

    #include <stdio.h>

    int f(int m)

    { static int n=0;

    n+=m;

    return n;

    }

    main()

    { int n=0;

    printf(“%d,”, f(++n));

    printf(“%d\n”, f(n++));

    }

    程序运行后的输出结果是()

    A.1,2

    B.1,1

    C.2,3

    D.3,3


    正确答案:A
    试题33分析
    n=0,f(++n)),n先增1,调用f,n=0+1=1,输出n;f(n++))先取n的值1调用,n=1+1=2,然后输出n,最后n增1,变成3;所以第一次输出为1,第二次输出为2;
    试题33答案
    A

  • 第13题:

    有以下程序main(){ union{ unsigned int n;unsigned char c;}ul;ul.c='A';printf("%c\n",ul.n);}执行后输出结果是

    A.产生语法错

    B.随机值

    C.A

    D.65


    正确答案:C
    解析:共用体变量中所有成员共享一段存储空间,它们的值为最后一次对其中变量所赋的值。

  • 第14题:

    有以下程序:include main( ){ unsigned int a; int b=-1;a=b;printf(" % u", a);程序

    有以下程序: #include <stdio. h> main( ) { unsigned int a; int b=-1; a=b; printf(" % u", a);程序运行后的输出结果是( )。

    A.-1

    B.65535

    C.32767

    D.-32768


    正确答案:B
    解析:不同类型的对象进行混合运算时,需要进行数据的类型转换,其转换方向为int→unsigned→long→double。本题程序中的变量b为int型,需要转换为unsigned型。int型变量的数值范围为-32768~32767,最高位为符号位,而unsigned所表示的数的范围为0~65535,它的最高位为数值位。由于内存中是以补码形式存储数据的,所以整型数-1在内存中表示为16个1,最高位的1表示符号为负,将它转换为unsigned类型,即将原符号位的1看成数值,所以得到16个数值1,即65535。

  • 第15题:

    有以下程序:include main( ){int m =0256,n =256;printf( "% o % o \n" ,m,n); 程序

    有以下程序: #include <stdio, h> main( ) { int m =0256,n =256; printf( "% o % o \n" ,m,n); 程序运行后的输出结果是( ) 。

    A.0256 0400

    B.0256 256

    C.256 400

    D.400 400


    正确答案:C
    解析:o格式符是以八进制形式输出整数。此题m已是八进制数(256前面的0表示此数是八进制数),n是十进制数,所以输出时,直接输出m的值,n的值需要转换成八进制数400后再输出。

  • 第16题:

    有以下程序

    #include <stdio.h>

    void func(int n)

    { int i;

    for(i=0;i<=n;i++) printf(”*”);

    printf(”#”).

    }

    main( )

    { func(3); printf(”???? ”); func(4); printf(”\n”); }

    程序运行后的输出结果是

    A)****#????***#

    B)***# ????*** *#

    C)**#????*****#

    D)****#????*****#


    正确答案:D
    【答案】D
    【知识点】函数调用中形参与实参的关系
    【解析】第一次调用实参为3,所以形参变量n为3,打印四个*号后打印一个#号。然后在主函数中打印四个?。再次调用func函数,实参值为4,所以形参n的值为4,按照循环,打印五个*号后结束循环,再打印一个#号。

  • 第17题:

    有以下程序:main(){ union{ unsigned int n; unsigned char c; }u1; u1.c='A'; printf("%c\n",u1.n);}执行后输出结果是( )。

    A.产生语法错

    B.随机值

    C.A

    D.65


    正确答案:C
    解析:在定义共用体的同时,定义了—个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的。因此给u1.c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。所以,C选项为所选。

  • 第18题:

    下列程序的输出结果是______。 main() { unsigned short a=65536;int b; printf("%d\n",b:a); }

    A.0

    B.1

    C.2

    D.3


    正确答案:A

  • 第19题:

    以下程序的结果是 ( ) main( ) { unsigned int a=3,b=10; printf("%d\n",a<<2|b>>1); }A.1B

    以下程序的结果是 ( )

    main( )

    { unsigned int a=3,b=10;

    printf("%d\n",a<<2|b>>1);

    }

    A.1

    B.5

    C.12

    D.13


    正确答案:D

  • 第20题:

    以下程序的输出结果是() 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

  • 第21题:

    有以下程序:include main(){unsigned char a,b; a=413; b=4&3;printf("%d%d\n",a,

    有以下程序: #include <stdio.h> main() { unsigned char a,b; a=413; b=4&3; printf("%d%d\n",a,b); } 执行后的输出结果是( )。

    A.7 0

    B.0 7

    C.1 1

    D.43 0


    正确答案:A
    解析:&是按位“与”运算符,其运算规则是:参加运算的两个运算量,如果两个相应的位都为1,则该位的结果值为1,否则为0。|是按位“或”运算符,其运算规则是:两个相应位中只要有一个为1,该位的结果为1。4转换为二进制数为0100,3转换为二进制数为0011,则4|3=0111,即7,4&3=0000,即0。

  • 第22题:

    有以下程序 main() { union{ unsigned int n; unsigned char c; }ul; u1.c='A'; cout<<u1.n<<endl; } 执行后输出结果是

    A.产生语法错

    B.随机值

    C.A

    D.65


    正确答案:B
    解析:本题考查联合这种特殊的数据结构的基本知识。联合的本质在于联合的成员共事同一片连续的内存单元。本题中由于整型变量占两个字节,字符型变量占一个字节,而整型变量的一部分没有被赋值,故将输出随机值。本题答案为B。

  • 第23题:

    有以下程序 main() { union{ unsigned int n; unsigned char C; }ul; u1.C='A'; printf("%c\n",u1.n); } 执行后输出结果是

    A.产生语法错

    B.随机值

    C.A

    D.65


    正确答案:C
    解析:在定义共用体的同时,定义了一个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的.因此给u1.c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。所以,C选项为所选。