26.以下叙述中不正确的是:
A. C语言中的文本文件以ASCⅡ码形式存储数据
B. C语言中对二进制文件的访问速度比文本文件快
C. C语言中,随机读写方式不适用于文本文件
D. C语言中,顺序读写方式不适用于二进制文件
27.设有以下定义:
struct ss
{int info; struct ss *link;} x,y,z; 且已建立如下图所示链表结构:
请写出删除点y的赋值语句是 x.link = y.link。
xyz
28.下列选项中非法的表达式是:
A.0<=x<100B.i=j==0
C.(char) (65+3)D.x+1=x+1;
29.若已定义的函数有返回值,则以下关于该函数的调用的叙述中错误的是:
A. 函数调用可以作为独立的语句存在
B. 函数调用可以作为一个函数的实参
C. 函数调用可以出现在表达式中
D. 函数调用可以作为一个函数的形参
30.有以下函数定义:
void fun(int n,double x) { …… }
若下列选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是:
A.fun(int y,double m);B.k=fun(10,12.5);
C.fun(x,n); D.void fun(n,x);
31.有以下程序的输出结果是:
void fun(char *a,char *b)
{a=b; (*a)++;}
main()
{char c1='A',c2='a',*p1,*p2;
p1=&c1; p2=&c2; fun(p1,p2);
printf("%c%c\n",c1,c2);
}
A.AbB.aaC.AaD.Bb
32.若程序中包含C语言的头文件stdio.h ,以下选项中,正确运用指针变量的程序段是
A.int *i=NULL;B.float *f=NULL;
scanf("%d",i);*f=10.5;
C.char t='m', *c=&t;D.long *L;
*c=&t; L='\0';
33.有以下程序执行的结果是:
char fun(char x,char y)
{if (x<y) return x;
return y;
}
main()
{char a='9',b='8',c='7';
printf("%c\n",fun(fun(a,b),fun(b,c)));
}
A.函数调用出错B.8C.9D.7
34.有以下程序执行后输出结果是
#include <stdio.h>
int a=2;
int f(int *a)
{return (*a)++;}
main()
{int s=0;
{int a=5;
s+=f(&a); }
s+=f(&a);
printf("%d\n",s);
}
A.10B.9C.8D.7
35.有以下程序执行后输出结果是
#define f(x) x*x
main()
{int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
A.28B.64C.4D.3
36. 有以下程序执行后输出结果是
#include <stdio.h>
struct STU
{char name[10];
int num;
int score;
};
main()
{struct STU s[5]={{"YangSan",0041,703},{"LiSiguo",0042,580},{"WangYin",
0043,680},{"Sundan",0044,550},{"PengHua",0045,537}},*p[5],*t;
int i,j;
for(i=0;i<5;i++)p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]->score > p[j]->score)
{t=p[i];p[i]=p[j];p[j]=t;}
printf("%d%d\n",s[1].score,(*p[1]).score);
}
A.550550B.680680C.580550D.580680
37.下面程序的运行结果是:
int f(int a[],int n)
{if(n>1)return a[0]+f(&a[1],n-1);
else return a[0];
}
main()
{int aa[3]={1,2,3},s;
s=f(&aa[0],3);
printf("%d\n",s);
}
答案: 6
38.结构化程序有三种基本结构组成,三种基本结构组成的算法:
A. 可以完成任何复杂的任务B. 只能完成部分复杂的任务
C. 只能完成符合结构化的任务D. 只能完成一些简单的任务
39.有以下程序运行后输出结果是
main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q;
*q=*p+5;
printf("%d %d\n",*p,*q);
}
A.运行后报错B.66C.611D.510
注:(指针q无指向)若是
main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q;
q=p+5;
printf("%d %d\n",*p,*q);
}
则答案为C
40.有以下程序运行后输出结果是
main()
{char s[]="Yes\n/No",*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
A.n/NoB./No C.n/NoD.
YesYes Yes /No
/NoYes
注: 在C语言中,所有指针变量都可以赋予“空”值,以下语句是等价的:
p=NULL;p=0;p='\0';*(ps+4)=0;等价于*(ps+4)= '\0'或*(ps+4)= NULL;
41.以下程序中,for循环体执行的次数是 4。
#define N 2
#define M N+1
#define K M+1*M/2
main()
{int i,n=0;
for(i=1;i<K;i++)
{...}
...
}
42.执行下面的程序段后,变量k中的值为
A) 不定值 B) 0 C) 30 D) 10
int k=3, s[2];
s[0]=k; k=s[1]*10;
43.在C程序中,可把整型数以二进制形式存放到文件中的函数是
A) fprintf函数 B) fread函数 C) fwrite函数 D) fputc函数
44.下列程序执行后的输出结果是
A) -32767 B) FFFE C) -1D) -32768
main()
{ char x=0xFFFF; printf("%d \n",x--); }
45.若有定义: float w; int a, b; 则合法的switch语句是
A) switch(w)B) switch(a);
{ case 1.0: printf("*\n"); { case 1 printf("*\n");
case 2.0: printf("**\n"); case 2 printf("**\n");
}}
C) switch(b)D) switch(a+b);
{ case 1: printf("*\n"); { case 1: printf("*\n");
default: printf("\n");case 2: printf("**\n");
case 1+2: printf("**\n"); default: printf("\n");
}}
46.以下C语言程序段的执行结果是
A) a=12 y=12 B) a=12 y=12 C) a=12 y=12D) a=12 y=12
a=14 y=16 a=16 y=28 a=14 y=26 a=14 y=44
a=16 y=20
a=18 y=24
int a, y;
a=10; y=0;
do
{ a+=2; y+=a;
printf("a=%d y=%d\n",a,y);
if(y>20) break;
} while(a=14);
47.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是 (说明:'\b'是退格符←)
A) a\bre\'hi\'y\\\bouB) a\bre\'hi\'y\bou
C) re'hi'you D) abre'hi'y\bou