2007年(春)上机试卷(05)
(本试卷上机时间为70分钟)
一,改错题(18分)
[程序功能]
下列程序完成对n阶矩阵(n为奇数)的变换,将原矩阵左下角n/2阶子块中的数据与矩阵右上角n/2阶子块中的数据作交换,显示交换过子块后的n阶矩阵。 [测试数据与运行结果] n=5
原矩阵: 变换后的矩阵: 0 1 2 3 4 0 1 2 15 16 5 6 7 8 9 5 6 7 20 21 10 11 12 13 14 10 11 12 13 14 15 16 17 18 19 3 4 17 18 19 20 21 22 23 24 8 9 22 23 24 [含有错误的源程序]
#include
void swap(int x, int y) { int t;
t=*x; *x=*y; *y=t; }
void change(int a[][M], int n) { int i, j, c;
for(i=0;i< n/2;i++) for(j=n/2+1;j swap(&a[i][j],&a[i+n/2+1][j-n/2+1]); } void print(int a[][M],int n) { int i,j; printf(\ for(i=0;i { for(j=0;j } void main() { int a[M][M],i,j,n=0; printf(\scanf(\if(n>=10||n%2==0) { printf(\for(i=0;i for(j=0;j [要求] 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。 3.改正后的源程序myf1.c保存在考试软盘的根目录中供阅卷使用,否则不予评分。 二,编程题(22分) [程序功能] 解密 密文由若干个8进制数形式的字符串组成,相邻两个8进制数形式的字符串之间用字符8分隔,每个8进制数形式的字符串对应的8进制数是一个字符的ASCII码,ASCII码对应的字符是解密后的明文字符。 例如:密文为\,则明文为\[编程要求] 1,编写函数void fun(char *s,char *c),其功能是将s指向的密文解密,并将明文保存到c指向的数组中。 2,编写main函数,声明字符数组s和c,用测试数据初始化s数组,调用函数fun对s数组中的密文解密,将解密后得到的明文输出到屏幕并用写文件函数保存到结果文件myf2.out中,最后将学生本人的准考证号字符串也保存到结果文件myf2.out中。 [测试数据与运行结果] 测试数据: 10181248124810181038113840810181248408104810181278116 输出结果: ATTACK AT DAWN My exam number is : 考生本人准考证号字符串 [要求] 1,源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。 2,数据文件的打开,使用,关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3,源程序文件和运行结果文件均需保存在考试盘根目录中供阅卷使用。 4,不要复制扩展名为OBJ和EXE的文件到考试盘上。

