江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
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:盘中.