pb=&x; b)pb=x;
c)*pb=&x; d)*pb=*x
答案:a
评析:选项a将变量x的地址赋给指针变量pb,使pb指向x’选项b是将x的值当作地址赋给指针pb,db指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。
(16)设整型数i=5,则printf("%d",i+++++i);的输出为________。
a)10 b)1l
c)12 d)语法错误
答案:d
评析:c语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、--),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。
(17)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元
int *p;
p=___________malloc(sizeof(im));
则应填入__________。
a)int b)int
c)(*int) d)(int*)
答案:d
评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。
(18)下面程序输出的结果是__________。
main()
{
int i=5,j=9,x;
x=(i==j?i:(j=7));
printf("\n%d,%d",i,j);
}
a)5,7 b)5,5
c)语法错误 d)7,5
答案:a
评析:条件表达式的一般形式为:表达式i?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为a。(19)若执行下面程序时从键盘上输入5,
main()
{
int x:
scanf("%d",&x);
if(x++>5)printf("%d\n",x);
else printf("%d\n",x--);
}
则输出是________。
a)7 b)6
c)5 d)4
答案:b
评析:根据c语言的语法,x++是在使用x之后,再将x的值加1,在if语句中,x的值为5,条件不成立,执行else后面的语句,因为x的值已经加1,为6,所以打印结果为6。
(20)若有以下定义和语句:
int a[]={l,2,3,4,5,6,7,8,9,10},*p=a;
则值为3的表达式是_________。
a)p+=2,*(p++) b)p+=2,*++p
c)p+=3,*p++ d)p+=2,++*p
答案:a
评析:引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a[2]。b、c的内容为a[3],d将a[2]前自加,结果为4。
(21)设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表
达式是___________。
a)’a’&&’b’ b)a<=b
c)a‖+c&&b-c d)!((a 答案:d
评析z选项a:’a’&&’b’是字符a与b的相与,不为0;选项b:a<=b,由题中变量赋值可知,结果为1。选项c:a‖+c&&b-c,结果为1;选
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
责任编辑:小草