如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
2009年(春)上机试卷(01)改错题(20分)【程序功能】已知x数组中存储的n阶矩阵中有一个鞍点(鞍点是指该位置上的数是所在行的最大数,同时也是所在列的最小数),程序实现将矩阵中鞍点所在列移动到最右侧。【测试数据与运行结果】测试数据:1320465-17980-11032运行结果:Andian:a[0][1]120345-167809-13210【含有错误的源程序】#include<stdio.h>#defineN=4voidexchange(inta[][N]){inti,j,k,f,t,m,mj;for(i=0;i<N;i++){m=a[i][0];mj=0;f=1;for(j=0;j<N;j++)if(a[i][j]>m){m=a[i][j];mj=j;}for(k=0;k<N&&f;k++)if(a[k][mj]>m)f=0;if(k>=N)break;}if(f){printf(“Andian:a[%d][%d]\”,i,mj);for(i=0;i<N;i++){t=a[i][mj];for(j=mj;j<N-1;j++)a[i][mj]=a[i][mj+1];a[i][N-1]=t;}}}voidmain(){intx[N][N]={{1,3,2,0},{4,6,5,-1},{7,9,8,0},{-1,10,3,2}},i,j;for(i=0;i<N;j++){for(j=0;j<N;j++)printf(“%3d,x[i][j]);printf(“\n”);}printf(“\n”);exchange(intx[N][N]);for(i=0;i<N;i++){for(j=0;j<N;j++)printf(“%3d”,x[i][j]);printf(“\n”);}}【要求】将上诉程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。改错时,可以修改与语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。二、编程题(20分)【程序功能】将一个十进制整数m转成r进制整数的字符串表示形式。【编程要求】编写函数voidtrdec(char*str,intidec,intibase),其功能是将十进制整数idec转换为ibase进制数的字符串表示形式,将得到的字符串保存到str指向的字符数组中。编写main函数,接受键盘输入的一个整数调用到trdec函数分别将该整数转换为二进制、八进制及十六进制的字符串表示形式,将转换后得到的三个字符串按给出的运行结果形式输出到屏幕及结果文件myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。【测试数据与运行结果】测试数据:26运行结果:11010B,32Q,1AH【要求】源程序文件名为myf2.c,输出结果文件名为myf2.out。数据文件的打开,使用,关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用。不要复制扩展名OBJ和EXE的文件到T:盘中。2009年(春)上机试卷(02)(本试卷上机时间为70分钟)一,改错题(20分)【程序功能】函数merge的功能是:合并两个字符串集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串的个数。【测试数据与运行结果】测试数据:S1集合:{“while”,“for”,“switch”,“if”,“break”,“continue”}S2集合:{“for”,“case”,“do”,“else”,“char”,“switch”}运行结果:whileforswitchifbreakcontinuecasedoelsechar【含有错误的源程序】#include<stdio.h>#include<string.h>intmerge(chars1[][10],chars2[][10],chars3[][10],intm,intn){inti,j,k=0;for(i=0;i<m;i++)s3[k++]=s1[i];for(i=0;i<n;i++){for(j=0;j<m;j++)if(strcmp(s2[i],s1[j]))break;if(j>m)strcpy(s3[k++],s2[i]);}returnk;}voidmain(){inti,j;chars1[