资源描述:
《c语言-2010春C语言上机试卷C05答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2010年春二级C语言上机试卷(试卷代号C05)答案一、改错题(16分)【程序功能】一个数列中相邻的n个数被称为n阶子序列。程序实现在二维数组a的每一行中找出和值最大的3阶子序列,并将这些子序列的起始列下标及和值保存在二维数组b中。函数sta在pa指向的一维数组m个元素中找出和值最大的n阶子序列,将找到的子序列起始下标保存到pos指向的变量中,函数返回最大和值。【测试数据与运行结果】数组初始化数据:123451232165432输出:positon:a[0][2]max:12positon:a[1][1]max:7positon:a[2][0]max
2、:15【含有错误的源程序】#include"stdio.h"intsta(int*pa,intm,intn,int*pos){inti=0,j=0,max=1,sum;intb;/*语法错,中,改为int*b*/if(n3、b[i]=sum;}max=b[0];for(i=1;i<=m-n;i++){if(b[i]>max){max=b[i];*pos=i;}}}free(b);returnmax;}voidmain(){inta[3][]={{1,2,3,4,5},{1,2,3,2,1},{6,5,4,3,2}},b[3][2]={0},i,n,*p=&n;/*语法错,易,改为inta[3][5]={{1,2,3,4,5},{1,2,3,2,1},{6,5,4,3,2}}*/for(i=0;i<3;i++){b[i][1]=sta(a[i],5,3,p);b[i][0
4、]=p;/*语义错,中,改为b[i][0]=n;或b[i][0]=*p;*/printf("positon:a[%d][%d]max:%4d",i,b[i][0],b[i][1]);}getch();}二、编程题(24分)【程序功能】判断求余运算“%”对于一个数组是否封闭。求余运算“%”对于一个数组的封闭性定义为:对于一维数组a中的任意两个元素a[i]和a[j](i¹j),若当a[j]不为0时a[i]%a[j]的值都存在于a数组中,则称求余运算“%”对于a数组是封闭的。【编程要求】1.编写函数intjudge(inta[],intn)实现以下功能
5、:判断求余运算%对于a指向的包含n个元素的数组是否封闭,若封闭则函数返回1,否则函数返回0。2.编写函数main实现以下功能:声明一维数组a和b并用测试数据初始化,分别用a数组和b数组作实参两次调用judge函数,判断求余运算“%”对于a数组及b数组是否封闭,若封闭则输出“yes”,否则输出“no”。将a数组和b数组中数据及判断结果输出到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。【测试数据与运行结果】a数组初始化数据:{1,3,22,4,15,2,7,5,0}b数组初始化数据:{1,3,8,4,6,7,5,0
6、}输出:13224152750yes13846750no【参考答案】#includeintbelong(inta[],intn,intx){inti;for(i=0;i7、,4,15,2,7,5,0},b[]={1,3,8,4,6,7,5,0},i,m;if((fp=fopen("d:\myf2.out","w"))==NULL){printf("Cannotopenthefile!");exit(0);}m=judge(a,9);for(i=0;i<9;i++){printf("%4d",a[i]);fprintf(fp,"%4d",a[i]);}if(m){printf("yes");fprintf(fp,"yes");}else{printf("no");fprintf(fp,"no");}m=
8、judge(b,8);for(i=0;i<8;i++){printf("%4d",b[i]);fprintf