2005年上半年全国计算机二级C语言笔试真题
点击查看试题参考答案
(33)有以下程序
prt(int *m,int n)
{ int i;
for(i=0;i
}
main()
{
int a[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是______。
A.1,2,3,4,5,
B.2,3,4,5,6,
C.3,4,5,6,7,
D.2,3,4,5,1,
(34)有以下程序
main()
{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p
}
程序运行后的输出结果是______。
A.1,2,3,4,5,6,7,8,9,0,
B.2,3,4,5,6,7,8,9,10,1,
C.0,1,2,3,4,5,6,7,8,9,
D.1,1,1,1,1,1,1,1,1,1,
(35)有以下程序
#define P 3
void F(int x){return(P*x*x);}
main()
{printf("%d\n",F(3+5));}
程序运行后的输出结果是______。
A.192
B.29
C.25
D.编译出错
(36)有以下程序
main()
{int c=35;printf("%d\n",c&c);}
程序运行后的输出结果是______。
A.0
B.70
C.35
D.1
(37)以下叙述中正确的是______。
A.预处理命令行必须位于源文件的开头
B.在源文件的一行上可以有多条预处理命令
C.宏名必须用大写字母表示
D.宏替换不占用程序的运行时间
(38)若有以下说明和定义
union dt
{int a;char b;double c;}data;
以下叙述中错误的是______。
A.data的每个成员起始地址都相同
B.变量data所占的内存字节数与成员c所占字节数相等
C.程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D.data可以作为函数的实参
(39)以下语句或语句组中,能正确进行字符串赋值的是______。
A.char *sp;*sp="right!";
B.char s[10];s="right!";
C.char s[10];*s="right!";
D.char *sp="right!";
(40)设有如下说明
typedef struct ST
{long a;int b;char c[2];}NEW;
则下面叙述中正确的是______。
A.以上的说明形式非法
B.ST是一个结构体类型
C.NEW是一个结构体类型
D.NEW是一个结构体变量
(41)有以下程序
main()
{ int a=1,b;
for(b=1;b<=10;b++)
{ if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是______。
A.3
B.4
C.5
D.6
(42)有以下程序
main()
{ char s[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
程序运行后的输出结果是______。
A.15
B.16
C.12
D.59
(43)有以下函数
fun(char *a,char *b)
{ while((*a!='\0')&&(*b!='\0')&&(*a==*b))
{ a++;b++; }
return(*a-*b);
}
该函数的功能是______。
A.计算a和b所指字符串的长度之差
B.将b所指字符串连接到a所指字符串中
C.将b所指字符串连接到a所指字符串后面
D.比较a和b所指字符串的大小
(44)有以下程序
main()
{ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{ for(j=0;j<=i;j++) printf("L",' ');
for(j=_____;j<4;j++) printf("M",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角
1 2 3 4
6 7 8
11 12
16
则在程序下划线处应填入的是______。
A.i-1
B.i
C.i+1
D.4-i
(45)有以下程序
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
(46)程序中若有如下说明和定义语句
char fun(char *);
main()
{
char *s="one",a[5]={0},(*f1)()=fun,ch;
......
}
以下选项中对函数fun的正确调用语句是______。
A.(*f1)(a);
B.*f1(*s);
C.fun(&a);
D.ch=*f1(s);
(47)有以下结构体说明和变量定义,如图所示:
struct node
{int data; struct node *next;} *p,*q,*r;
data next data next data next
p q r
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。
A.P->next=q->next;
B.p->next=p->next->next;
C.p->next=r;
D.p=q->next;
(48)以下对结构体类型变量td的定义中,错误的是______。
A.typedef struct aa
B.struct aa
{ int n; { int n;
float m; float m;
}AA; }td;
AA td; struct aa td;
C.struct
D.struct
{ int n; { int n;
float m; float m;
}aa; }td;
struct aa td;
(49)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是______。
A.feof(fp)
B.ftell(fp)
C.fgetc(fp)
D.rewind(fp)
(50)有以下程序
#include
void WriteStr(char *fn,char *str)
{ FILE *fp;
fp=fopen(fn,"w");fputs(str,fp);fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是______。
A.start
B.end
C.startend
D.endrt