文档介绍:第2类数位分解后按数筛选统计并排序第2类数位分解后按数筛选统计并排序试题十一已知数据文件 T 中存有 300个4 位数, 并已调用读函数 readDat() 把这些数存入数组 a中。请编制函数 jsValue() , 其功能是: 求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个 t , 再把所有满足此条件的 4 位数依次存入数组 b中, 然后对数组b的4 位数按从小到大的顺序进行排序, 最后调用写函数 writeDat() 把数组 b 中的数输出到 文件中。例如: 6712,6 +2=7+1 ,则该数满足条件,存入数组 b 中,且个 t = cnt +1。 8129,8 +9≠1+2 ,则该数不满足条件,忽略。注意:部分源程序已给出。程序中已定义数组: a[300] , b[300] ,已定义变量: cnt 。请勿改动主函数 main() 、读函数 readDat() 和写函数 writeDat() 的内容。【参考答案】 void jsValue() { int i,j; /* 定义循环控制变量*/ int a1,a2,a3,a4; /* 定义变量保存4 位数的每位数字*/ int temp; /* 定义数据交换时的暂存变量*/ for(i=0;i<300;i++) /* 逐个取每一个 4 位数*/{ a4=a[i]/1000; /*求4 位数的千位数字*/ a3=a[i]%1000/100; /*求4 位数的百位数字*/ a2=a[i]%100/10; /*求4 位数的十位数字*/ a1=a[i]%10; /*求4 位数的个位数字*/ if(a4+a1==a3+a2) /* 如果千位数加个位数等于百位数加十位数*/ { t]=a[i]; /* 将满足条件的数存入数组 b中*/ cnt++; /* t*/ }} for(i=0;t-1;i++) /* 用选择法对数组 b的4 位数按从小到大的顺序进行排序*/ for(j=i+1;t;j++) if(b[i]>b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; }} 试题十二已知数据文件 T 中存有 200个4 位数, 并已调用读函数 readDat() 把这些数存入数组 a中, 请编制一函数 jsVal( ), 其功能是: 如果 4 位数各位上的数字均是奇数, t , 并把这些4 位数按从大到小的顺序存入数组b中。最后调用函数 writeDat() t 及数组 b 中符合条件的 4 位数输出到 文件。注意:部分源程序已给出。程序中已定义数组: a[200] , b[200] ,已定义变量: cnt 。请勿改动主函数 main() 、读函数 readDat() 和写函数 writeDat() 的内容。【参考答案】 void jsVal() { int i,j; /* 定义循环控制变量*/ int a1,a2,a3,a4; /* 定义变量保存 4 位数的每位数字*/ int temp; /* 定义数据交换时的暂存变量*/ for(i=0;i<200;i++) /* 逐个取每一个 4 位数*/ { a4=a[i]/1000; /*求4 位数的千位数字*/ a3=a[i]%1000/100; /*求4 位数的百位数字*/ a2=a[i]%100/10; /*求4 位数的十位数字*/ a1=a[i]%10; /*求4 位数的个位数字*/ if(a4%2!=0 && a3%2!=0 && a2%2!=0 && a1%2!=0) /* 如果 4 位数各位上的数字均是奇数*/{ t]=a[i]; /* 将满足条件的数存入数组 b中*/ cnt++; /* 统计满足条件的数的个数*/ }} for(i=0;t-1;i++) /* 将数组 b 中的数按从大到小的顺序排列*/ for(j=i+1;t;j++) if(b[i]<b[j]) { temp=b[i]; b[i]=b[j]; b[j]=temp; }} 试题十三已知数据文件 T 中存有 300个4 位数, 并已调用读函数 readDat() 把这些数存入数组 a中, 请编制一函数 jsValue() , 其功能是: 求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的 t , 再把所有满足此条件的 4 位数依次存入数组 b中, 然后对数组 b的4 位数从大到小进行排序,最后调用写函数 writeDat() 把数组 b 中的数输出到 文件。例如: 7153,7 +1=5+3 ,则该数满足条件,存入数组 b 中,且个 t = cnt +1。 8129,8 +1≠2+9 ,则该数不满足条件,忽略。注意:部分源