资源描述:
《数字排列问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NANCHANGUNIVERSITY报告题目:数组中数字排列问题学院:经济与管理学院系:工商管理类专业班级:工业工程081班学生姓名:杨浩昌学号:5400208579数组中数字排列问题在C语言中,数组中数字的排列问题举足轻重。下面通过几个例子来简要说明数组中数字排列的几种类型。<1)在数组中删除某些不合规则的数后剩下的数按原顺序重新排列如:函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4
2、、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。b5E2RGbCAP程序如下:#include#defineN9//定义变量N的值intfun(inta[],intn>//fun函数类型说明{inti,j。//变量i,j的类型说明4/4j=0。//给变量j赋初值0for(i=0。i//给变量i赋初值0,表达式i//判断a[i]是否是
3、奇数a[j]=a[i]。j++。//将a[i]赋给a[j],并且数组a中的元素位置由j来控制,每增加一个元素,则j就加1DXDiTa9E3d}returnj。//返回删除偶数后a所指数组中数据的元素j}main(>//main为主函数{intb[N]={9,1,4,2,3,6,5,8,7},i,n。//b[N]为给定的数组printf("Theoriginaldata:">。for(i=0。iprintf("%4d",b[i]>。printf("">。n=fun(b,N>。//将奇数的个数赋给变量npr
4、intf("Thenumberofodd:%d",n>。printf("Theoddnumber:">。for(i=0。iprintf("%4d",b[i]>。printf("">。//输出n的值}<2)数组中比平均值大的数与小于等于平均数的交错排列,并且其中比平均值大的数从大到小排列,而小于等于平均值的数从小到大排列RTCrpUDGiT如:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素
5、中的次大值放在a[3];其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。5PCzVD7HxA程序如下:#include#defineN9//定义变量N的值voidfun(inta[],intn>//fun函数说明{inti,j,max,min,px,pn,t。//说明变量i,j,max,min,px,pn,t的类型jLBHrnAILgfor(i=0。i/
6、/给变量i赋初值0,表达式i4/4//给变量i+1赋给变量j,表达式j//判断max是
7、否小于a[j],若小于,则把a[j]赋值给max{max=a[j]。px=j。}并将变量j的值赋给变量pxif(min>a[j]>//判断min是否大于a[j],若大于,则把a[j]赋值给min{min=a[j]。pn=j。}就将变量j的值赋给变量pn}if(pn!=i>//判断pn是否等于i,如果不等于,则就min赋给a[i],a[i]赋给a[pn]dvzfvkwMI1{t=a[i]。a[i]=min。a[pn]=t。if(px==i>px=pn。//如果px等于i,则就将pn赋给px}if(px!=i+1>//判断pn是否等
8、于i+1,如果不等于,则就max赋给a[i+1],相应地将a[i+1]赋给a[px]rqyn14ZNXI{t=a[i+1]。a[i+1]=max。a[px]=t。}}}main(>{intb[N]={9,1,4,2,3,6,5,8,7},i。printf("