二级C语言典型题解析
有以下程序
void f (int a [],int i,int j)
{ int t;
if(I
{ t = a[I];a[I]= a[j];a[j]= t;
f(a,i+1,j-1);
}
}
main()
{ int I,aa[5]={1,2,3,4,5 };
f(aa,0,4);
for(I = 0;I}
执行后的输出结果是
a) 5,4,3,2,1,b) 5,2,3,4,1,c) 1,2,3,4,5,d) 1,5,4,3,2,.然后递归调用f(a,i+1,j-1),即f(a,1,3),交换aa[1]和aa=[3]的值使得aa[5]={5,4,3,2,1 };然后递归调用f(a,i+1,j-1),即f(a,2,2)。因为i=j=2,所以我退出函数调用,用下面的程序
int num输出aa[5]的数组元素为“5,4,3,2,1,”
;
int分数;
};
main()
{ struct STU s[5]= { { "杨三",20041,703},{ "李四国",20042,580},
{ "王印",20043,680},{ "孙丹",20044,550},
{ "鹏华",20045,537}},*p[5],* t;
int i,j;
for(I = 0;I for(I = 0;I for(j = I+1;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)550 550 b)680 680 C)580 550d)580 680
答案:C
解析:此题的算法类似于“冒泡排序”,它将p[0]、p[1]、p[2]、p[3]和p[4]指向s[5]中成员得分由低到高排列的数组单元,即533 所以该语句的作用是将位置指针从文件末尾提前2*sizeof(int)字节)
# include
main()
{ file * FP; int i,a[4]={1,2,3,4},b;
fp=fopen("data.dat "," WB ");
for(I = 0;I fclose(FP);
fp=fopen("data.dat "," Rb ");
fseek(fp,-2L*sizeof(int),SEEK _ END);
fread(&b,sizeof(int),1,FP);/*将sizeof(int)字节的数据从文件读入变量B */
fclose(FP);
printf("%d\n ",b);
}
执行后输出结果为
A)2 B)1 C)4 D)3
答案:D
解析:此程序首先建立一个二进制文件data.dat,从数组a[4]中取出四个整型变量数据块
0条评论