在文件in33.dat中有200个正整数,且每个正整数均在1000至9999之间。函数readDat()的功能是读取这20
在文件in33.dat中有200个正整数,且每个正整数均在1000至9999之间。函数readDat()的功能是读取这200个数并存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按照每个数的后3位的大小进行升序排列,将排序后的前10个数存入数组bb中,如果数组bb中出现后3位相等的数,则对这些数按原始 4位数据进行降序排列,最后调用函数writeDat()把结果bb输出到文件out33.dat中。
例如:处理前6012 5099 9012 7025 8088
处理后9012 6012 7025 8088 5099
注意:部分源程序已给出。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
include<stdio. h>
include<string. h>
include<conio. h>
int aa[200] ,bb[10];
void readDat ();
void writeDat();
void jsSort()
{
void main ( )
{
readDat ( );
jsSort ( );
writeDat ( );
}
void readDat ()
{
FILE *in;
int i;
in=fopen ("in33 .dat" , "r" );
for(i=0;i<200;i++) fscanf (in, "%d ".&aa[i]);
fclose (in);
}
void writeDat ()
{
FILE *out;
int i;
clrscr ( );
ut =fopen ("out33 .dar" , "w" );
for (i=0; i<10; i++)
{
printf ("i=%d, %d\n", i+1, bb[i] ;
fprintf (out, "%d\n" ,bb[i] );
}
fclose (out);
}
void jsSort() { int i,j,data; for(i=0;i199;i++) for(j=i+1;j200;j++) { if(aa[i]%1000>aa[j]%1000) /*按照每个数的后3位的大小进行升序排列*/ { data=aa[i]; aa[i]=aa[j]; aa[j]=data; } else if(aa[i]%1000==aa[j]%1000) /*如果后3位数值相等,则对这些数 值按原始4位数据进行降序排列*/ if(aa[i]aa[j]) { data=aa[i]; aa[i]=aa[j]; aa[j]=data; } } for(i=0;i10;i++) /*将排好序的前十个数存入数组bb中*/ bb[i]=aa[i]; } 解析:本题考查的知识点如下:
(1)循环结构的嵌套。
(2)选择结构的嵌套。
(3)特殊运算符“%”的使用。
(4)数据的升降序排列。
在该题中,首先要解决的问题是如何把题中4位数转换成符合要求的3位数。这里要用到一个比较特殊的运算符%,它的功能是取余。将4位数赊以1000取余则得到要求的3位数。根据题意,若后3位相等,则按照原数据进行降序排序,所以在这里要加一个选择结构进行判断。对数据进行排序,可以使用最简单的“选择排序法”。即第一次从第一个数据开始和所有后面的数据进行比较,与比它大(小)的数据交换位置,将数据中最大(小)的数交换到最前面。第二次从第二个数据开始与后面的数据进行比较,,将此次比较中最(小)的数据交换至第二个位置,直至最后一个数据。
数列与分组1.在数列1/2,1/3,2/3.,1/4,2/4.,3/4/,1/5,…中,数47/9 数学 2020-04-09 …
10克蜂蜜中含有3.2克葡萄糖,照这样计算,300克蜂蜜中含有多少克葡萄糖?不正确的算式是()A. 数学 2020-05-13 …
观察下列等式:1^3=1^2,1^3+2^3=3^2,1^3+2^3+3^3=6^2,1^3+2^ 数学 2020-05-15 …
将一组数字按如图2方式排列,若(m,n)表示第m排从左到右第n个数,则(5,4)表示的数是____ 其他 2020-05-15 …
1+2+3+n=2分之1n(n+1),n是正整数,研究1*2+2*3+你(n+1),观察1*2=3 数学 2020-05-20 …
求解答下面几道数学题!是有关数学归纳法的!谢谢在线等第一题:已知1^3+2^3+3^3+……+n^ 数学 2020-06-06 …
(1)观察下列一组数据找出规律:1/2+1+1/2=2,1/3+2/3+1+2/3+1/3=3,1/ 数学 2020-11-17 …
一副扑克牌中有1,2,3,4,5,6,7,8,9,10,J,K,Q,A这几个种类各自有多少张?一副扑 数学 2020-11-30 …
六年级分数速算与巧算有3道题望大虾们能帮帮ME(简算!!急!!)0.375*(7/9+14/51)+ 其他 2020-12-09 …
高手帮忙解决一道初2数学诡辩题2=3因为4-10=9-15,所以4-10+25/4=9-15+25/ 其他 2020-12-23 …