计算机二级

有以下程序: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 0B.0 7C.1 1D.43 0

题目
有以下程序: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。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下四个程序中,完全正确的是()。A.include main( ); { /* programmlng* / printf( "p

以下四个程序中,完全正确的是( )。

A.#include <stdio.h> main( ); { /* programmlng* / printf( "programming! \n" ); }

B.#include <stdio.h> main( ) { /*/programming printf("programming! \n"); }

C.#include <stdio.h> main( ) { /*programming* / printf( "programming! \n" ); }

D.include <stdio.h> main ( ) { /*/* programming*/*/ printf( "programming! \n" ); }


正确答案:C
解析:选项A)main();后面不应该有分号;选项B)中的注释语句不正确;选项D)的include前缺少#。

第2题:

有以下程序:includemain(){char a[]="abcdefg",b[10]="abcdefg"; printf("%d%d\n",siz

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

A.7 7

B.8 8

C.8 10

D.10 10


正确答案:C
解析:用a[]="abcdefg"对数组a进行初始化,是用一个字符串作初值。数组a的长度包括由系统加上的'\0',因此是8。b[10]="abcdefg"只初始化了前7个元素,后3个元素为0('\0'),所以长度为10。

第3题:

以下四个程序中,完全正确的是( )。A.includeB.include main(); main() {/*pr

以下四个程序中,完全正确的是( )。

A.#include<stdio.h>

B.#include<stdio.h> main(); main() {/*programming*/ {/*/programming/*/ printf("programming!\n");} printf("programming!\n");}

C.#include<stdio.h>

D.include<stdio.h> main() main() {/*/*programming*/*/ {/*programming*/ printf("programming!\n");} printf("programming!\n");}


正确答案:B
解析:选项A中的main()后面不能直接用分号。选项C中的注释符使用不正确,编译器会把从第一个“/*到第一个*/”之间的当作注释,最后一个“*/”会被作为程序代码去编译。选项D中的include前要加上#表示是预定义语句。

第4题:

有以下程序:include main ( ){char a :'a',b; printf( "% c," , + + a); printf("%c

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

A.b,b

B.b,c

C.a,b

D.a,c


正确答案:A
解析:程序中pdntf("%c",++a)是先将a加1,再输a,因此输出的是'b',而pfintf("%c\n",b=a++)是先将a的值赋给b,a再加1,所以输出的也是'b'。

第5题:

有以下程序 include void fun(char **p) { ++p; printf("%s\n",*p);

有以下程序 #include <stdio.h> void fun(char **p) { ++p; printf("%s\n",*p); } main() { char *a[]={"Moming","Afternoon","Evening","Night"}; fun(a); } 程序的运行结果是

A.Afternoon

B.fternoon

C.Morning

D.orning


正确答案:A
解析:本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和—般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针(即字符型二级指针),所以数组名a可以用作函数fun()的实参。

第6题:

有以下程序: include point ( char * p) {p + = 3; }main( ) char b[4] = {'a','b','c

有以下程序: #include <stdio.h>point ( char * p) { p + = 3; }main( ) char b[4] = {'a','b','c','d'} , *p=b; point(p); printf( "% c \n" , * p);

A.a

B.b

C.c

D.d


正确答案:A
解析:C函数的参数传递方式采用按值传递,不能通过调用函数改变形参指针本身的值,只能改变指针所指变量的值。调用point函数时,将实参指针p的值(b数组的首地址)传给了形参指针P,P+=3运算使形参指针指向字符d,但并不能改变main函数中p的值,所以本题正确答案应该是选项A)。

第7题:

有以下程序 include int fun(char s[]) { int n=O; whil

有以下程序 #include <stdio.h> int fun(char s[]) { int n=O; while(*s<='9'&&*s>='0') { n=10*n+*s-'0'; s++; } return (n); } main() { char s[10]={ '6', '1', '*', '4', '*', '9', '*', '0', '*'}; printf("%d\n",fun(s)); }

A.9

B.61490

C.61

D.5


正确答案:C
解析:题目fun()函数中while循环的意思是:判断s所指内容是否为数字字符,如果是数字字符,则计算表达式11=10*n+*s-'0';。其中。s-'0'的作用是将相应的数字字符转换为数值,例如字符'8'减去字符'0'后,得到的结果就是数值8了。n=10*n+的作用是将累计变量n中原来内容乘以10,然后再加上刚转换的数字字符的数值,例如原来n的值为1,*s现在的内容为'2',那么执行了n=10*n+*s-'0,;语句后,n的值变为12,如果接下来再来一个'8'字符,执行n=10*n+*s-'0';语句后,n的值就是128了。故不难看出fun()函数的作用是“将数字字符串转换为相应的十进制数值,碰到非数字字符时结束”。从主函数中定义的字符数组s的初始化内容可以看出,fun()函数返回值应该是61。故应该选择C。

第8题:

有以下程序:includevoid fun(char**p){++P;printf("%s\n",*p);}main()char*a[]={"Morn

有以下程序: #include<stdio.h> void fun(char**p) { ++P;printf("%s\n",*p);} main() char*a[]={"Morning","Afternoon","Evening","Night"}; fun(A); } 程序的运行结果是( )。

A.Afternoon

B.fternoon

C.Morning

D.oring


正确答案:A

第9题:

有以下程序:include include main( ) {char a[ 7 ] = "a0 \0a0 \0";int i,

有以下程序:#include <stdio.h>#include <string.h>main( ) { char a[ 7 ] = "a0 \0a0 \0"; int i,j; i = sizeof(a); j = strlen(a); printf(" % d %d \n" ,i,j); }程序运行后的输出结果是( )。

A.22

B.76

C.72

D.62


正确答案:C
解析:C语言.中以,'\0'作为字符串的结束符,且strlen函数计算的是,'\0',字符前的所有字符的个数,故本题中strlen(a)应为2。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof运算符是计算变量或数组所分配到的内存空间的大小,所以本题的sizeof(a)为7。

第10题:

有以下程序: include main( ) {char s[ ] ="159" , * p;p=s;printf( "% c", * p + +

有以下程序: #include <stdio.h> main( ) { char s[ ] ="159" , * p; p=s; printf( "% c", * p + + ); printf("%~", * p++);}程序运行后的输出结果是( )。

A.15

B.16

C.12

D.59


正确答案:A
解析:语句p=s将指针变量p指向字符数组s,第一次输出时,由于++和*为同一优先级,而结合方向为自右向左,所以,*p++相于*(p++)。但又因为“++”在p的右侧,所以,先输出*p,得到s[0]的值,然后P++,P指向s[1],故第二次输出时,输出s[1]的值,所以输出结果为15。

更多相关问题