(21)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
A.(!E==0)
B.(E>0‖E<0)
C.(E==0)
D.(E!=0)
(22)要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是
A.while((ch=getchar())!=′N′)printf("%c",ch);
B.while(ch=getchar()!=′N′)printf("%c",ch);
C.while(ch=getchar()==′N′)printf("%c",ch);
D.while((ch=getchar())==′N′)printf("%c",ch);
(23)已定义以下函数
int fun(int *p)
{return *p;)
fun函数返回值是
A.不确定的值
B.一个整数
C.形参P中存放的值
D.形参P的地址值
(24)若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A.*p=&a; scanf("%1f",p);
B.*p=&a; scanf("%f",p);
C.p=&a; scanf("%1f",*p);
D.p=&a; scanf("%1f",p);
(25)现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连续的三个结点。
struct node
{char data;
struct node *next; }*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是
A.q->next=r->next;p->next=r;r->next=q;
B.p->next=r;q->next=r->next;r->next=q;
C.q->next=r->next;r->next=q;p->next=r;
D.r->next=q;p->next=r;q->next=r->next;
(26)有以下程序段
struct st
{int x;int *y;}*pt;
int a[]={l,2},b[]={3,4};
struct st c[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是
A.*pt->y
B.pt->x
C.++pt->x
D.(pt++)->x
(27)设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为
A.EOF
B.非0值
C.0
D.NULL
(28)设有以下语句
int a=1,b=2,c;
c=a^(b<<2);
执行后,C的值为
A.6
B.7
C.8
D.9
(29)有以下程序
#include <stdio.h>
main()
{char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是
A.1267
B.1256
C.1278
D.1245
(30)有以下程序
main()
{int y=10;
while(y--);printf("y=%d\n",y);
}
程序执行后的输出结果是
A.y=0
B.y=-1
C.y=1
D.while构成无限循环