1、三级数据库技术-545 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.下列程序的功能是:将一正整数序列K1,K2,K9重新排列成一个新的序列。新序列中,比 K1小的数都在 K1的前面(左面),比 K1大的数都在 K1的后面(右面)。要求编写函数 NumSort(int a109)实现此功能,最后调用 Wdata()函数将新序列输出到文件 out.dat中。 说明:在程序中已给出了 10个序列,每个序列有 9个正整数,并存入数组 a109中,分别求出这 10个新序列。 例:序列6,8,9,1,2,5,4,7,3 经重排后成为3,4,5
2、,2,1,6,8,9,7 请勿改动主函数 main()和写函数 Wdata()的内容。 #include stdio.h NumSort(int a10 9) /*将新序列输出到文件 out.dat中*/ void Wdata(int a10 9) FILE *fp; int i, j; fp=fopen(“out.dat“, “w“); for (i=0; i10; i+) for (j=0; j9; j+) fprintf(fp, “%d“, ai j); /把数组元素 aij写入文件 out.dat中 if (j = 7) /如果列值小于等于 7,则写入一个逗号 fprintf(fp,
3、“,“); fprintf(fp, “n“); fclose (fp); main () int a10 9 = 6, 8, 9, 1, 2 5, 4 7, 3 3, 5, 8, 9, 1 2, 6 4, 7 8, 2, 1, 9, 3 5, 4 6, 7 3, 5, 1, 2, 9 8, 6 7, 4 4, 7, 8, 9, 1 2, 5 3, 6 4, 7, 3, 5, 1 2, 6 8, 9 9, 1, 3, 5, 8 6, 2 4, 7 2, 6, 1, 9, 8 3, 5 7, 4 5, 3, 7, 9, 1 8, 2 6, 4 7, i, 3, 2, 5 8, 9 4, 6 ; i
4、nt i, j; NumSort (a); for (i=0; i10; i+) for (j=0; j9; j+) printf(“%d“, ai j); if (j = 7) printf (“, “); printf (“n“); Wdata (a); (分数:100.00)_三级数据库技术-545 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.下列程序的功能是:将一正整数序列K1,K2,K9重新排列成一个新的序列。新序列中,比 K1小的数都在 K1的前面(左面),比 K1大的数都在 K1的后面(右面)。要求编写函数 NumSo
5、rt(int a109)实现此功能,最后调用 Wdata()函数将新序列输出到文件 out.dat中。 说明:在程序中已给出了 10个序列,每个序列有 9个正整数,并存入数组 a109中,分别求出这 10个新序列。 例:序列6,8,9,1,2,5,4,7,3 经重排后成为3,4,5,2,1,6,8,9,7 请勿改动主函数 main()和写函数 Wdata()的内容。 #include stdio.h NumSort(int a10 9) /*将新序列输出到文件 out.dat中*/ void Wdata(int a10 9) FILE *fp; int i, j; fp=fopen(“out.
6、dat“, “w“); for (i=0; i10; i+) for (j=0; j9; j+) fprintf(fp, “%d“, ai j); /把数组元素 aij写入文件 out.dat中 if (j = 7) /如果列值小于等于 7,则写入一个逗号 fprintf(fp, “,“); fprintf(fp, “n“); fclose (fp); main () int a10 9 = 6, 8, 9, 1, 2 5, 4 7, 3 3, 5, 8, 9, 1 2, 6 4, 7 8, 2, 1, 9, 3 5, 4 6, 7 3, 5, 1, 2, 9 8, 6 7, 4 4, 7,
7、8, 9, 1 2, 5 3, 6 4, 7, 3, 5, 1 2, 6 8, 9 9, 1, 3, 5, 8 6, 2 4, 7 2, 6, 1, 9, 8 3, 5 7, 4 5, 3, 7, 9, 1 8, 2 6, 4 7, i, 3, 2, 5 8, 9 4, 6 ; int i, j; NumSort (a); for (i=0; i10; i+) for (j=0; j9; j+) printf(“%d“, ai j); if (j = 7) printf (“, “); printf (“n“); Wdata (a); (分数:100.00)_正确答案:()解析:int i,
8、j, k, value, num; /*对数组 a109中每一行数据按照题目的要求进行处理*/ for(i=0;i10; i+) value=ai0; /把第 i行的第一个数赋给 value /*第 i行的每一个数与其第一个数 value相比较,如果其值小于第一个数 value的值,则把其前面的向后移动一位,并把其值赋给数组元素 ai0*/ for(j=0;j9;j+) if(aijvalue) /如果数组元素 aij的值小于 value num=aij; /把 aij的值赋给 num for(k=j;k0;k-) /把 aij前面的值向后移动一位 aik=aik-1; ai0=num; /n
9、um的值赋给 ai0 解析 将一正整数序列K1,K2,K9重新排列成一个新的序列。新序列中,比 K1小的数都在 K1的前面(左面),比 K1大的数都在 K1的后面(右面)。 定义整型循环变量 i、j、k 和局部整型变量 value.num。 在第一层 for循环中,循环变量 i从 0开始,依次递增直到其值等于 10,结束循环,实现对数组 a109中每一行数据按照题目的要求进行处理。在循环体中,把第 i行的第一个数 ai0赋给 value。在第二层 for循环中,循环变量 i从 0开始,依次递增直到其值等于或大于 9,用 if语句判断,如果数组元素 aij的值小于 value,则把 aij的值赋给 num,在第三层 for循环中,循环变量 k从 j开始,依次递减直到其值等于或小于 0,把 aik-1的值赋给 aik,实现把 aij前面的值向后移动一位,退出第三层 for循环后,把 num的值赋给 ai0。第二层循环依次执行,便实现了对 i行的数据的处理,再依次执行第一层 for循环,就可以完成对数组 a109的每行数据的处理。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1