(课堂已布置的作业)将整型数组num[N]定义为外部的、用六个函数:
- void main(void);
- 冒泡函数void bubble_sort(void);
- 选择排序一函数void select_sort1(void);
- 选择排序二函数void select_sort2(void);
- 随机数初始化数组函数void init(void);//随机种子、每个数小于55。
- 打印输出函数void prt(void);//每行打12个
处理num[N]数组排降序!
7.编写另一函数 ??? del(int);从排好降序的num[N]整型数组中删除从首至尾第一次出现的某数(在main中从键盘输入),若删除成功、余下数仍连续保持降序、置首数为55。
8.初始化外部数组num[N]、编写另一函数
void odd_even(void)实现将数组元素奇数排列在前、偶数排列在后。(不允许定义其它数组辅助操作)
函数的构建:
1、初始化数组num
void Init()//初始化num,随机产生0—55的数据 { int i; srand((unsigned)time(NULL)); for(i=0;i<MAXN;i++) { num[i]=rand()%56;//随机数在0—55中产生 } }
随机产生数组num
2、冒泡排序
void Bublle_Sort()//冒泡排序(降序) { int i,j,temp; for(i=0;i<MAXN-1;i++) { for(j=0;j<MAXN-i-1;j++) { if(num[j]<num[j+1]) { temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } }
Bublle_Sort()
3、选择排序1:
void select_sort1()//选择排序(降序) { int i,j,k,temp; for(i=0;i<MAXN-1;i++) { k=i; for(j=i+1;j<MAXN;j++) { if(num[j]>num[k]) k=j;//选择出第i大的数,与num[i]交换位置 } if(k!=i) { temp=num[k]; num[k]=num[i]; num[i]=temp; } } }
select_sort1()
4、选择排序2
void select_sort2()//选择排序2(降序) { int i,j,k,temp; for(i=0;i<MAXN-1;i++) { k=i; for(j=i+1;j<MAXN;j++) { if(num[j]>num[k]) { temp=num[k]; num[k]=num[j]; num[j]=temp; } } } }
select_sort2()
5、输出排序
void prt()//每行打12个,处理num[N]数组排降序! { int i; select_sort2(); for(i=0;i<MAXN;i++) { if(i%12==11||i==MAXN-1) printf("%2d\n",num[i]); else printf("%2d ",num[i]); } }
prt()
6、把数组第i个数置为55
void del(int x) { int i; for(i=0;i<MAXN;i++) { if(x==num[i]) { num[i]=55; return ; } } printf("删除失败!\n"); }
del(int x)
7、奇数在前,偶数在后
void odd_even()//实现将数组元素奇数排列在前、偶数排列在后。 { int i,j,temp; for(i=0;i<MAXN-1;i++)//类似选择排序 { if(num[i]%2) continue; for(j=i+1;j<MAXN;j++) { if(num[j]%2) { temp=num[i]; num[i]=num[j]; num[j]=temp; continue; } } break; } }
odd_even()
8、完整代码:
#include<stdio.h> #include<stdlib.h>//随机函数的头文件(rand()) #include<time.h>//时间函数的头文件(srand((unsigned)time(NULL)))辅助产生随机数 #define MAXN 100 int num[MAXN]; void Init()//初始化num,随机产生0—55的数据 { int i; srand((unsigned)time(NULL)); for(i=0;i<MAXN;i++) { num[i]=rand()%56;//随机数在0—55中产生 } } void Bublle_Sort()//冒泡排序(降序) { int i,j,temp; for(i=0;i<MAXN-1;i++) { for(j=0;j<MAXN-i-1;j++) { if(num[j]<num[j+1]) { temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } } void select_sort1()//选择排序2(降序) { int i,j,k,temp; for(i=0;i<MAXN-1;i++) { k=i; for(j=i+1;j<MAXN;j++) { if(num[j]>num[k]) k=j;//选择出第i大的数,与num[i]交换位置 } if(k!=i) { temp=num[k]; num[k]=num[i]; num[i]=temp; } } } void select_sort2()//选择排序2(降序) { int i,j,k,temp; for(i=0;i<MAXN-1;i++) { k=i; for(j=i+1;j<MAXN;j++) { if(num[j]>num[k]) { temp=num[k]; num[k]=num[j]; num[j]=temp; } } } } void print() { int i; for(i=0;i<MAXN;i++) { if(i%12==11||i==MAXN-1) printf("%2d\n",num[i]); else printf("%2d ",num[i]); } } void prt()//每行打12个,处理num[N]数组排降序! { select_sort2(); print(); } void del(int x) { int i; for(i=0;i<MAXN;i++) { if(x==num[i]) { num[i]=55; return ; } } printf("删除失败!\n"); } void odd_even()//实现将数组元素奇数排列在前、偶数排列在后。 { int i,j,temp; for(i=0;i<MAXN-1;i++)//类似选择排序 { if(num[i]%2) continue; for(j=i+1;j<MAXN;j++) { if(num[j]%2) { temp=num[i]; num[i]=num[j]; num[j]=temp; continue; } } break; } } void main() { int i; Init(); printf("初始化num数组:\n"); print(); printf("\nprt()函数的效果\n"); prt(); Init(); select_sort1(); printf("\n选择排序1:\n"); print(); Init(); select_sort2(); printf("\n选择排序2:\n"); print(); Init(); Bublle_Sort(); printf("\n冒泡排序:\n"); print(); del(31); printf("\n删除第一个31并置为55:\n"); print(); Init(); odd_even(); printf("\n将奇数置于头,偶数置于尾:\n"); print(); }
实现效果:
时间: 2024-10-19 23:35:20