2009年春季江苏计算机二级C语言上机试题 |
江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2009年春) 二级C语言 (试卷代号C01) (本试卷完成时间70分钟) 一、改错题(20分) 【程序功能】 已知x数组中存储的n阶矩阵有一个鞍点(鞍点是指该位置上的数是所在行的最大数。 同时也是所在列的最小数),程序实现将矩阵中鞍点所在列移动到最右侧。 【测试数据与运行结果】 测试数据; 1 3 2 0 4 6 5 -1 7 9 8 0 -1 lO 3 2 运行结果; An dian;a[0][1] 1 2 0 3 4 5 -1 6 7 8 0 9 -1 3 2 10 【含有错误的源程序】 #include<stdio.h> #define N=4 void exchange(int a[][N]) {int i,j,k,f,t,m,mj; for(i=O;i<N;i++) {m=a[i][0]; mj=O;f=1; for(j=0;j<N;j++) if(a[i][j]>m) {m=a[i][j]; mj=j;} for(k=O;k<N&&f;k++) if(a[k][mj]>m) f=O; if(k>=N)break; } if(f) {printf("An dian;a[%d][%d]\n",i,mj); for(i=O;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; } } } void main() {int x[N][N]={{1,3,2,0},{4,6,5,-1),{7,9,8,0),{-1,10,3,2}},i,j; for(i=O;i<N;i++) {for(j=0;j<N;j++) printf("%3d",x[i][j]); printf("\n"); } printf("\n"); exchange(int x[N][N]); for(i=0;i<N;i++) {for(j=O;j<N;j++) printf("%3d",x[i][j]); printf("\n"); } } 【要求】 1. 将上述程序录入到文件myfl.C中,根据题目要求及程序中语句之间的逻辑关系对程序 中的错误进行修改。 2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译 预处理命令,但不能增加其它语句,也不能删去整条语句. 3. 改正后的源程序(文件名myfl.c)保存在T:盘根目录中供阅卷使用,否则不予评分。 二、编程题(20分) 【程序功能】 将一个十进制整数m转换成r进制整数的字符串表示形式。 【编程要求】 1.编写函数void trdec(char *str,int idec,int ibase),其功能是将十进制整数idec 转换为ibase进制数的字符串表示形式,将得到的字符串保存到str指向的字符数组中。 2.编写main函数,接收键盘输入的一个整数,调用trdec函数分别将该整数转换为二进 制、八进制及十六进制数的字符串表示形式,将转换后得到的三个字符串按给出的运行 结果形式输出到屏幕及结果文件myf2.out中.最后将考生本人的准考证号字符串也保 存到结果文件myf2.out中。 【测试数据与运行结果】 测试数据:26 运行结果:11O1OB,32Q,1AH 【要求】 1.源程序文件名为myf2.C。输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现. 3.源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到T:盘中. |