D. 三种循环语句都可能出现无穷循环
13. 若有声明“int a[]={1,2,3,4},*p,i;”,则以下程序段中不能输出13的是 (13) 。
A. for(i=0;i<4;i+=2) printf("%d",a[i]); B. for(p=0;p<4;p+=2) printf("%d",a[p]); C. for(p=a;p
D. for(p=a,i=0;i<4;i+=2) printf("%d",p[i]);
14.在下列C语言源程序的错误中,通常不能在编译时发现的是 (14) 。
A. 括号不匹配 B. 非法标识符 C. 数组元素下标值越界 D. 程序结构不完整
15.若有声明“long a,b;”且变量a和b都需要通过键盘输入获得初值,则下列语句中正确的是 (15) 。
A. scanf("%ld%ld,&a,&b"); B. scanf("%d%d",a,b);
C. scanf("%d%d",&a,&b); D. scanf("%ld%ld",&a,&b); 16.若有程序段“char c=256; int a=c;”,则执行该程序段后a的值是 (16) 。 A. 256 B. 65536 C. 0 D. -1 17.若在一个C语言源程序中“e1”和“e3”是表达式,“s;”是语句,则下列选项中与语
句“for(e1; ;e3)s;”功能等同的语句是 (17) 。
A. e1;while(10)s;e3; B. e1;while(10){s;e3;} C. e1;while(10){e3;s;} D. while(10){e1;s;e3;}
18.若有声明“int a[3][4], *p=a[0] ,(*q)[4]=a;”,则下列叙述中错误的是 (18) 。
A. a[2][3]与q[2][3]等价 B. a[2][3]与p[2][3]等价
C. a[2][3]与*(p+11)等价 D. a[2][3]与p=p+11,*p等价
19. 若有声明“long fun(int *x,int n,long *s);int a[4]={1,2,3,4}; long b,c;”,
则以下函数调用形式中正确的是 (19) 。 A. c=fun(a,4,b); B. c=fun(a[],4,&b); C. c=fun(a[4],4,b); D. c=fun(a,4,&b);
20.已知在函数f中声明了局部变量x,如果希望f函数第一次被调用返回后变量x中存
储的数据保持到下次f函数被调用时仍可以使用,则在声明x时必须指定其存储类型为 (20) 。
A. auto B. register C. static D. extern
21. 若有如下的类型定义和变量声明,则在给出的选项中值不为7的表达式是 (21) 。
A.ptr->a struct ss
B.(++ptr)->a
C.x[1].a
D.x[0].b->a
{ int a; struct ss *b; }x[3]={{5,&x[1]},{7,&x[2]},{9,0}}, *ptr=&x[0];
22. 若需要对一个数据文件abc.txt中的数据做加密处理并且限定只能做一次打开文件操
作,则在“fp=fopen("abc.txt", 模式字符串 ); ”中,模式字符串应当是 (22) 。 A. "w+" B. "r+" 23.若有如下声明和语句:
C. "a+"
D. "r"
int t[3][3],*pt[3],k;
for(k=0;k<3;k++) pt[k]=&t[k][0];