永发信息网

c语言 排序问题!!!急(200分)

答案:3  悬赏:60  手机版
解决时间 2021-02-11 19:16
c语言 排序问题!!!急(200分)
最佳答案
我来```=着```来了``这个够多了吧`不够再说``
根据这个排序代码:

--------------------------冒泡排序法
#include
# include
#define N 8
void Init(int a[]);
void Close(void);
void Pr(int a[],int n);
void DrawChange(int i,int j);
void Bubble_sort(int a[],int n);
void main(void)
{
int i,a[N];
printf("Please enter 8 int number\n");
for(i=0;iscanf("%d",&a[i]);
Init(a);
Bubble_sort(a,8);
Close();
exit(0);
}

void Init(int a[])
{
int gd=DETECT,gm,i;
initgraph(&gd,&gm,"");
cleardevice();
setcolor(YELLOW);
outtextxy(210,10,"any key to continue");
Pr(a,40);
getch();
}
void Close (void)
{
getch();
closegraph();
}
void Pr(int a[],int n)
{
int i;
char num[5];
settextstyle(0,0,2);
setcolor(GREEN);
for(i=100;i<500;i+=50)
{
sprintf(num,"%d",a[(i-100)/50]);
outtextxy(i,n,num);
}
}
void DrawChange(int i,int j)
{
setcolor(6);
line(j*50+120,i+8,j*50+140,i+8);
line(j*50+120,i+8,j*50+120+5,i+4);
line(j*50+120,i+8,j*50+120+5,i+12);
line(j*50+140,i+8,j*50+140-5,i+4);
line(j*50+140,i+8,j*50+140-5,i+12);
}
void Bubble_sort(int a[],int n)
{
int i,j,t,flag;
char num1[5],num2[5];
for(i=0;i{
flag=0;
for(j=0;j{
Pr(a,i*40+80);
setcolor(BLUE);
sprintf(num1,"%d",a[j]);
outtextxy(100+j*50,i*40+80,num1);
sprintf(num2,"%d",a[j+1]);
outtextxy(100+(j+1)*50,i*40+80,num2);
sleep(1);

if(a[j]>a[j+1])
{
flag=1;
DrawChange(i*40+80,j);
setcolor(RED);
outtextxy(100+j*50,i*40+80,num1);
outtextxy(100+(j+1)*50,i*40+80,num2);
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
sleep(1);
setfillstyle(SOLID_FILL,BLACK);
bar(0,i*40+60,640,i*40+100);
}
}
Pr(a,i*40+80);
sleep(1);
if(flag==0)break;
}
}

功能说明:
通过图形的方式展现冒泡排序``从小往大排```每轮排序后换行`且显示出排序过程`

程序的具体功能设计 :

void Pr(int a[],int n);
void DrawChange(int i,int j);
void Bubble_sort(int a[],int n);
程序的功能主要由着3方面来完成```

首先是`void Pr(int a[],int n);``输出函数``

for(i=100;i<500;i+=50)
{
sprintf(num,"%d",a[(i-100)/50]);
outtextxy(i,n,num);
}
通过这个循环来实现``图形模式下输出数组``

其次是
DrawChange(int i,int j)``通过画箭头的方式来显示交换过程`

如1 2 1←→2 2 1
{
setcolor(6);
line(j*50+120,i+8,j*50+140,i+8);
line(j*50+120,i+8,j*50+120+5,i+4);
line(j*50+120,i+8,j*50+120+5,i+12);
line(j*50+140,i+8,j*50+140-5,i+4);
line(j*50+140,i+8,j*50+140-5,i+12);
}

最后是Bubble_sort``
基于普通的冒泡排序的方法```双层循环控制``

for(i=0;i{
flag=0;
for(j=0;j在把Pr(int a[],int n);
DrawChange(int i,int j);融合进去后就基本完成设计了```

===========================================================================
程序的结构 程序基于1个main函数和``5个自定义函数构成以及系统自带的一些函数
void Init
void Close
void Pr
void DrawChange
void Bubble_sort```
其中main()函数调用了`Init Close Pr DrawChange Bubble_sort```
Pr调用了sprintf outtextxy这2个系统自带的输出函数
DrawChange 调用了line画线着个系统自带的输出函数
Bubble_sort 比较复杂 调用了`` 自定义函数Pr DrawChange``以及sprintf
outtextxy
sleep
bar等一系列系统函数

通过函数实现了个模块的独立性`
是程序结构也十分清晰
全部回答
嗯。。。哦。。。我还是学得少,懂不起你那高深的语言,哈哈!!!
--------------------------冒泡排序法
#include
# include
#define N 8
void Init(int a[]);
void Close(void);
void Pr(int a[],int n);
void DrawChange(int i,int j);
void Bubble_sort(int a[],int n);
void main(void)
{
int i,a[N];
printf("Please enter 8 int number\n");
for(i=0;iscanf("%d",&a[i]);
Init(a);
Bubble_sort(a,8);
Close();
exit(0);
}
void Init(int a[])
{
int gd=DETECT,gm,i;
initgraph(&gd,&gm,"");
cleardevice();
setcolor(YELLOW);
outtextxy(210,10,"any key to continue");
Pr(a,40);
getch();
}
void Close (void)
{
getch();
closegraph();
}
void Pr(int a[],int n)
{
int i;
char num[5];
settextstyle(0,0,2);
setcolor(GREEN);
for(i=100;i<500;i+=50)
{
sprintf(num,"%d",a[(i-100)/50]);
outtextxy(i,n,num);
}
}
void DrawChange(int i,int j)
{
setcolor(6);
line(j*50+120,i+8,j*50+140,i+8);
line(j*50+120,i+8,j*50+120+5,i+4);
line(j*50+120,i+8,j*50+120+5,i+12);
line(j*50+140,i+8,j*50+140-5,i+4);
line(j*50+140,i+8,j*50+140-5,i+12);
}
void Bubble_sort(int a[],int n)
{
int i,j,t,flag;
char num1[5],num2[5];
for(i=0;i{
flag=0;
for(j=0;j{
Pr(a,i*40+80);
setcolor(BLUE);
sprintf(num1,"%d",a[j]);
outtextxy(100+j*50,i*40+80,num1);
sprintf(num2,"%d",a[j+1]);
outtextxy(100+(j+1)*50,i*40+80,num2);
sleep(1);

if(a[j]>a[j+1])
{
flag=1;
DrawChange(i*40+80,j);
setcolor(RED);
outtextxy(100+j*50,i*40+80,num1);
outtextxy(100+(j+1)*50,i*40+80,num2);
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
sleep(1);
setfillstyle(SOLID_FILL,BLACK);
bar(0,i*40+60,640,i*40+100);
}
}
Pr(a,i*40+80);
sleep(1);
if(flag==0)break;
}
}
功能说明:
通过图形的方式展现冒泡排序``从小往大排```每轮排序后换行`且显示出排序过程`
程序的具体功能设计 :
void Pr(int a[],int n);
void DrawChange(int i,int j);
void Bubble_sort(int a[],int n);
程序的功能主要由着3方面来完成```
首先是`void Pr(int a[],int n);``输出函数``
for(i=100;i<500;i+=50)
{
sprintf(num,"%d",a[(i-100)/50]);
outtextxy(i,n,num);
}
通过这个循环来实现``图形模式下输出数组``
其次是
DrawChange(int i,int j)``通过画箭头的方式来显示交换过程`
如1 2 1←→2 2 1
{
setcolor(6);
line(j*50+120,i+8,j*50+140,i+8);
line(j*50+120,i+8,j*50+120+5,i+4);
line(j*50+120,i+8,j*50+120+5,i+12);
line(j*50+140,i+8,j*50+140-5,i+4);
line(j*50+140,i+8,j*50+140-5,i+12);
}
最后是Bubble_sort``
基于普通的冒泡排序的方法```双层循环控制``
for(i=0;i{
flag=0;
for(j=0;j在把Pr(int a[],int n);
DrawChange(int i,int j);融合进去后就基本完成设计了```
===========================================================================
程序的结构 程序基于1个main函数和``5个自定义函数构成以及系统自带的一些函数
void Init
void Close
void Pr
void DrawChange
void Bubble_sort```
其中main()函数调用了`Init Close Pr DrawChange Bubble_sort```
Pr调用了sprintf outtextxy这2个系统自带的输出函数
DrawChange 调用了line画线着个系统自带的输出函数
Bubble_sort 比较复杂 调用了`` 自定义函数Pr DrawChange``以及sprintf
outtextxy
sleep
bar等一系列系统函数
通过函数实现了个模块的独立性`
是程序结构也十分清晰
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蜗牛是怎么冬眠
芜湖景新装饰工程有限公司这个地址在什么地方
有的女生为什么喊不出来老公两字
PCF是什么文件, 有哪个知道啊? 知道告诉我啊
小何粮油店我想知道这个在什么地方
百度贴吧会员一个月是指30天还是一个月到期
为何百度网页打不开
海信电视怎么装智能卡
六下口算440
琵琶王花园小区西门我想知道这个在什么地方
永身态医疗保健品商城在哪里啊,我有事要去这
萌新的梅花转字怎么写
金地商行地址有知道的么?有点事想过去
什么树小脑筋急转弯
国家卫计委向全国推荐过国珍松花粉吗
推荐资讯
湖北有哪些三本大学排名及分数线
手表iwc371446的两个小表盘
天津北辰区苹果手机维修去那呀,大家谁知道?
2024铝合金再结晶温度是多少?
C++primer 快看完了,想学下MFC,听说WFC很猛
似念似念是什么意思
冒险岛可以改名吗
淮北市公安局公交派出所地址在什么地方,想过
欧洲各足球队的10号是谁
要除去碳酸钠溶液中混有的少量碳酸氢钠可加入
下列现象出现于文艺复兴时期的意大利,能够体
怎样快速做完作业,很快,抄写这种
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?