2009年秋季语言上机.pdfVIP

  • 0
  • 0
  • 约3.62千字
  • 约 3页
  • 2026-01-30 发布于北京
  • 举报

2009年秋二级C语言上机试卷(试卷代号C03)

一、改错题(16分)

【程序功能】

对一个二维数组中的数据排序。排序规则如下:将整个数组中值最小的元素所在行调

整为数组第1行(行下标为0),将除第1行外剩余行中值最小的元素所在行调整为数组第

2行,将除第1、2行外剩余行中值最小的元素所在行调整为数组第3行,其它以此类推。

【测试数据与运行结果】

数组初始化数据:输出:

34568210

82101234

54325432

12343456

【含有错误的源程序】

#includestdio.h

intgetmin(inta[],intn)

{inti,min=a[0];

for(i=1;in;i++)

if(a[i]min)/*算法错,中,改为if(a[i]min)*/

min=a[i];

returnmin;

}

voidlineswap(inta[],intb[],int*n)

/*语法错,易,改为voidlineswap(inta[],intb[],intn)*/

{inti,t;

for(i=0;in;i++)

{t=a[i];a[i]=b[i];b[i]=t;}

}

voidmain()

{inta[4]={{3,4,5,6},{8,2,1,0},{5,4,3,2},{1,2,3,4}},i,j;

/*语法错,易,改为inta[4][4]={{3,4,5,6},{8,2,1,0},{5,4,3,2},{1,2,3,4}}*/

for(i=0;i3;i++)

{for(j=1;j4;j++)/*算法错,中,改为for(j=i+1;j4;j++)*/

{if(getmin(a[j],4)getmin(a[i],4))

lineswap(a[j],a[i],4);

}

}

for(i=0;i4;i++)

{for(j=0;j4;j++)printf(%d,a[i][j]);

printf(\n);

}

getch();

}

二、编程题(24分)

【程序功能】

计算由两个整数生成的两个合法代码的码距。

这里的合法代码定义为由16个二进制数字字符组成的字符串。例如“0000000000100101”

是一个合法代码。

码距是指两个合法代码中对应位数字字符不同的位数。例如,合法代码

“0000000000100101”和“0000000000001110”自右向左在第1、2、4、6位上具有不同数字字

符,因此这两个合法代码的码距为4。

【编程要求】

1.编写函数inthamming(intx,inty,chara[],charb[])实现以下功能:先

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档