三级数据库上机实验内容正整数排序求平均值_第1页
三级数据库上机实验内容正整数排序求平均值_第2页
三级数据库上机实验内容正整数排序求平均值_第3页
三级数据库上机实验内容正整数排序求平均值_第4页
三级数据库上机实验内容正整数排序求平均值_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

正整数排序求平均值

(包括将数拆散、求最大最小值)整数分离+排序212223(选一个题)(47484996979899数字重新组合)(选一个题)50535471727378100(选一个题)下面是典型例题的解题方法1已知数据文件IN.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。最后main()函数调用写函数writeDat()把数组b中的数输出到文件OUT.DAT中。例如:7153,7+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+1。8129,8+1!=2+9,则该数不满足条件忽略。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[300],b[300],已定义变量:cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。(04套)2对300个数都要进行判断,可以用循环实现每次循环要解决整数的数字分离问题然后对分离的数字进行判断,满足条件的进行记数,同时把该整数存入另一个数组b中循环结束后,数组b中已经有了数据,然后进行从大到小排序编程点拨代码3jsValue(){inti,j,qw,bw,sw,gw,tmp;for(i=0;i<300;i++){

}

}循环实现:对a数组中的300个数据都进行判断,a[i]进行数字分离,个位gw,十位sw,百位bw,千位qwgw=a[i]%10;sw=a[i]/10%10;bw=a[i]/100%10;qw=a[i]/1000;个位gw,十位sw,百位bw,千位qw进行判断if(qw+bw-sw-gw==0)b[cnt++]=a[i];b数组进行排序,cnt为数据中元素的个数for(i=0;i<cnt-1;i++)for(j=i+1;j<cnt;j++)if(b[i]<b[j]){tmp=b[j];b[j]=b[i];b[i]=tmp;}4已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的含有两位数字的数(新数的十位数字是原四位数的个位数字,新数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的含有两位数字的数(新数的十位数字是原四位数的百位数字,新数的个位数字是原四位数的十位数字),如果两个新组成的数均是偶数并且至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。(47套)5voidjsVal(){intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;i<MAX;i++){}for(i=0;i<cnt-1;i++)for(j=i+1;j<cnt;j++)if(b[i]<b[j]){newV1=b[j];b[j]=b[i];b[i]=newV1;}}编程点拨循环实现:对a数组中的数据都进行判断,循环次数MAX对a[i]进行数字分离qw=a[i]/1000;gw=a[i]%10;bw=a[I]/100%10;sw=a[I]/10%10;个位,千位组成新数,百位和十位组成新数newV1=gw*10+qw;newV2=bw*10+sw;条件满足记数和保存到b数组中:gw和bw都不为O,两个新数都为偶数,有一个书被9整除if(gw&&bw&&(newV1%2==0)&&(newV2%2==0)&&(newV1%9==0||newV2%9==0))b[cnt++]=a[i];对b数组排序6【例】程序PROG1.C的功能是:计算出自然数SIX和NINE满足条件SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件所有的SIX与NINE的和SUM。请编写函数countValue()实现程序的要求,最后main()函数调用函数writeDAT()把结果cnt和sum,输出到文件OUT.DAT中。其中的S,I,X,N,E各代表一个十进制数字,允许代表的数字相同,但S和N不能为0。例如:944+944+944=1416+1416注意:部分源程序存放在PROG1.C中。请勿改动主函数main()和输出数据函数writeDAT()的内容。(02套)7S,I,X,N,E分别取1-9之间的任意一个数可以用穷举法来表示SIX和NINE两个数编程点拨for(s=1;s<10;s++)for(i=0;i<10;i++)for(x=0;x<10;x++)for(n=1;n<10;n++)for(e=0;e<10;e++){six=s*100+i*10+x;nine=n*1000+i*100+n*10+e;…….}代码8【例9-2】PROG1.C文件的内容如下:#include<stdio.h>intcnt,sum;voidcountValue(){}voidmain(){cnt=sum=0;countValue();printf("满足条件的个数=%d\n",cnt);printf("满足条件所有的SIX与NINE的和=%d\n",sum);writeDAT();}9【例9-2】writeDAT(){FILE*fp;fp=fopen("OUT.DAT","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose(fp);}10【例9-2】答案:voidcountValue(){ints,i,x,n,e,six,nine;for(s=1;s<10;s++)for(i=0;i<10;i++)for(x=0;x<10;x++)for(n=1;n<10;n++)for(e=0;e<10;e++){six=s*100+i*10+x;nine=n*1000+i*100+n*10+e;if((3*six)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论