★☆题目11 (整数各位数运算及排序题)
在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到 文件out.dat中。 int jsSort() { int i,j,cnt=0; data xy;
for(i=0;i<200;i++)
if(aa[i].x1>(aa[i].x2+aa[i].x3)) bb[cnt++]=aa[i]; for(i=0;i for(j=i+1;j if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) { xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;} return cnt; } ************************************************************************* 整数统计运算题 ★☆题目12整数统计运算题) 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。 void CalValue(void) {int i,data; for(i=0;i { totNum++; data=xx[i]>>1; if(data%2==0){totCnt++;totPjz+=xx[i];} } if(totCnt==0) totPjz=0; else totPjz/=totCnt; } ************************************************************************* 第 6 页 共 52 页 ☆题目13(整数统计运算题) 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求: 1、求出这文件中共有多少个正整数totNum; 2、求这些数中的各位数字之和是偶数的数的个数totCnt, 以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。 void CalValue(void) { int i,qw,bw,sw,gw; for(i=0;i if(xx[i]>0) { totNum++; qw=xx[i]/1000; bw=xx[i]/100; sw=xx[i]0/10; gw=xx[i]; if((qw+bw+sw+gw)%2==0) { totCnt++; totPjz+=xx[i];} } if(totCnt==0) totPjz=0; else totPjz/=totCnt; } ************************************************************************** ☆题目14(整数统计运算题) 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数中的各位数字之和是奇数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。 void CalValue(void) { int i ,qw,bw,sw,gw; for(i=0;i if(xx[i]>0) { totNum++; qw=xx[i]/1000; bw=xx[i]/100; sw=xx[i]0/10; gw=xx[i]; if((qw+bw+sw+gw)%2) { totCnt++; totPjz+=xx[i];} } if(totCnt==0) totPjz=0; else totPjz/=totCnt; } ************************************************************************** 第 7 页 共 52 页 题目15(整数统计运算题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a[200],b[200],已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 void jsVal() {int i,j,thou,hun,ten,data; for(i=0;i<200;i++) {thou=a[i]/1000; hun=a[i]00/100; ten=a[i]0/10; data=a[i]; if(thou-hun-ten-data>=0&&a[i]%2) b[cnt++]=a[i]; } for(i=0;i if(b[i]>b[j]) {thou=b[i]; b[i]=b[j];b[j]=thou;} } ********************************************************************** 题目16(整数统计运算题) 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。 void CalValue(void) {int i,data; for(i=0;i if(data%2){totCnt++;totPjz+=xx[i];} } if(totCnt==0) totPjz=0; else totPjz/=totCnt; } ********************************************************************* 第 8 页 共 52 页 题目17(整数统计运算题) 请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。 sum=0; pj=0.0; cnt1=cnt2=0; for(i=0;i { if(xx[i]%2) cnt1++; else cnt2++; if(i%2==0) {pj+=xx[i];sum++;} } pj/=sum; ******************************************************************************* ☆题目18(整数统计运算题) 请编制程序prog1.c,从文件IN.DAT中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。 cnt=0; max=xx[0]; pj=0.0; n=0; for(m=0;m if(max {if(xx[m]==max) cnt++; if(xx[m]%3==0||xx[m]%7==0) { pj+=xx[m]; n++; } } pj/=n; ***************************************************************************** 题目19(整数统计运算题) 请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)。 结果cnt1,cnt2,pj输出到out.dat中。 cnt1=0; cnt2=0; pj=0.0; for(m=0;m **************************************************************************** 第 9 页 共 52 页 题目20(整数各位数字运算题) 已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。 例如:9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+1。 9812,9-8-1-2>0,则该数不满足条件忽略。 jsValue() { int i,j,qw,bw,sw,gw; for(i=0;i<300;i++) { qw=a[i]/1000; bw=a[i]/100; sw=a[i]0/10; gw=a[i]; if(qw-bw-sw-gw>0) b[cnt++]=a[i]; } for(i=0;i if( b[i]>b[j]) { qw=b[i]; b[i]=b[j]; b[j]=qw;} } ******************************************************************* ☆题目21(整数各位数字运算题 ) 已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。 例如:6712,6+2=7+1,则该数满足条件存入数组b中,且个数cnt=cnt+1。 8129,8+9<>1+2,则该数不满足条件忽略 jsValue() {int i,qw,bw,sw,gw,j; for(i=0;i<300;i++) {qw=a[i]/1000; bw=a[i]00/100; sw=a[i]0/10; gw=a[i]; if(qw+gw==bw+sw) b[cnt++]=a[i]; } for(i=0;i if(b[i]>b[j]) {qw=b[i]; b[i]=b[j]; b[j]=qw;} 第 10 页 共 52 页