这学期的线下C语言课程,大一同学们学完数组排序后,布置了一次数组排序算法可视化的作业,给了大家1天时间独立完成,通过可视化加深对排序算法的理解。

下面给出了四位同学的实现效果和代码,大家可以参考。

源代码1:

#include<stdio.h>
#include<time.h>
#include<graphics.h>
#include<string.h>

#define WEIGHT 30

int a[12];
int p, k;void startup()
{srand(time(0));initgraph(600, 400);setbkcolor(RGB(150, 150, 150));cleardevice();BeginBatchDraw();
}void show()
{for (int i = 0; i < 12; i++){if (p == i){setfillcolor(GREEN);setlinecolor(GREEN);}if (k < i){setfillcolor(RED);setlinecolor(RED);}fillrectangle(30 + 45 * i, 350 - a[i] * 10, 30 + WEIGHT + 45 * i, 350);TCHAR t[50];_stprintf_s(t, _T("%d"), a[i]);settextcolor(WHITE);settextstyle(15, 0, _T("宋体"));if (a[i] > 10)outtextxy(38 + 45 * i, 330 - a[i] * 10, t);elseouttextxy(41 + 45 * i, 330 - a[i] * 10, t);setfillcolor(WHITE);setlinecolor(WHITE);}FlushBatchDraw();Sleep(500);
}void WRITE()
{TCHAR s[50];_stprintf_s(s, _T("绿色方块向后运行,如果遇到比它大的方块,就会把动力和身上的绿色传给它"));settextcolor(RED);settextstyle(15, 0, _T("宋体"));outtextxy(50, 30, s);
}int main()
{int i, t;startup();for (i = 0; i < 12; i++){a[i] = rand() % 24 + 3;}for (i = 11; i > 0; i--){k = i;p = 0;WRITE();show();cleardevice();for (int j = 0; j < i; j++){if (a[j] > a[j + 1]){t = a[j];a[j] = a[j + 1];a[j + 1] = t;p = j + 1;WRITE();show();cleardevice();}else{p = j + 1;WRITE();show();cleardevice();}}}k = -1;show();Sleep(200000);EndBatchDraw();
}

源代码2:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
int a[100];
void hua(int x,int y,int yan,int dt)//画柱子
{BeginBatchDraw();cleardevice();int i;for(i=1;i<=10;++i){if(i==x||i==y)setfillcolor(RGB(255*yan,0,255*(1-yan)));else setfillcolor(RGB(255,255,255));if(i==x)fillrectangle(i*100+50+dt,500-a[i]*10,i*100+100+dt,500);else if(i==y)fillrectangle(i*100+50-dt,500-a[i]*10,i*100+100-dt,500);else fillrectangle(i*100+50,500-a[i]*10,i*100+100,500);}FlushBatchDraw();
}
int main()
{int i,j,t,k;initgraph(1200,600);for(i=1;i<=10;++i)a[i]=rand()%40+1;for(i=1;i<=10;++i){for(j=1;j<=9-i+1;++j){hua(j,j+1,0,0);if(a[j]>a[j+1])//交换的时候有闪动特效
            {for(k=1;k<=3;++k){hua(-1,0,1,0);Sleep(300);hua(j,j+1,1,0);Sleep(300);}hua(-1,0,0,0);for(k=0;k<=100;++k)hua(j,j+1,1,k),Sleep(5);t=a[j];a[j]=a[j+1];a[j+1]=t;}Sleep(300);hua(j,j+1,0,0);}Sleep(300);}_getch();closegraph();return 0;
}

源代码3:

#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <time.h>

int height, width, block, space;
int a[10];
int i, j;void givenumber()
{height = 600;width = 775;block = 50;space = 25;srand(time(NULL));for (int m = 0; m < 10; m++)a[m] = rand() % 40 +10;
}void draw()
{cleardevice();BeginBatchDraw();for (int n = 0; n < 10; n++){setfillcolor(WHITE);if (n == i)setfillcolor(RGB(255, 0, 0));if (n == j)setfillcolor(RGB(0, 0, 255));fillrectangle(space + n * (space + block), height - 10 * a[n], (n + 1) * (space + block), height);TCHAR s[20];swprintf_s(s, _T("%d"), a[n]);settextstyle(50, 0, _T("Times"));settextcolor(WHITE);outtextxy(3+space + n * (space + block), height - 10 * a[n]-50, s);if (i == 10){TCHAR word1[100] = _T("按空格键来重新开始");TCHAR word2[100] = _T("按E停止程序");settextstyle(50, 0, _T("Times"));settextcolor(WHITE);outtextxy(0, 0, word1);outtextxy(0, 50, word2);}FlushBatchDraw();}Sleep(1000);
}int main()
{there:givenumber();initgraph(width, height);draw();_getch();for (i = 0; i < 10; i++){for (j = i + 1; j < 10; j++){int temp;if (a[i] > a[j]){temp = a[i];a[i] = a[j];a[j] = temp;}draw();}}draw();while (1){char answer = _getch();if (answer == ' ')goto there;if (answer == 'e')return 0;}
}

源代码4:

#include<stdio.h>
#include<graphics.h>
#include<conio.h>

int main()
{int width,heigh,N;width=1200;heigh=600;initgraph(width,heigh);BeginBatchDraw();float a[90];int i,j,t,k;float left,top,right,bottom;for(i=0;i<90;i++)a[i]=rand()%300;for(i=0;i<90;i++){left=100+i*12;top=heigh-a[i];right=left+10;bottom=heigh;fillrectangle(left,top,right,bottom);}for(i=0;i<89;i++){for(j=0;j<89-i;j++){if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;FlushBatchDraw();Sleep(5);cleardevice();for(k=0;k<90;k++){left=100+k*12;top=heigh-a[k];right=left+10;bottom=heigh;fillrectangle(left,top,right,bottom);if(k==j+1){setfillcolor(BLUE);fillrectangle(left,top,right,bottom);}else if(k>=90-i){setfillcolor(GREEN);fillrectangle(left,top,right,bottom);}else{setfillcolor(WHITE);fillrectangle(left,top,right,bottom);}}}}}cleardevice();for(i=0;i<90;i++){left=100+i*12;top=heigh-a[i];right=left+10;bottom=heigh;setfillcolor(GREEN);fillrectangle(left,top,right,bottom);}EndBatchDraw();_getch();return 0;
}

C语言作业 – 数组排序算法可视化相关推荐

  1. python socket发送数组_利用pyprocessing初步探索数组排序算法可视化

    [经过两次更新,功能基本完成]最终效果请直接下拉到最后一个视频观看 背景说明 这篇文章旨在初步探索利用pyprocessing的强大的可视化功能,以及pyprocessing和Ipython之间的本地 ...

  2. 短作业优先算法c语言实现,OS短作业优先调度算法C语言

    OS短作业优先调度算法C语言 采用短作业优先调度算法调度程序 学 号: 姓 名: 专 业: 指导老师: 日 期: 目录 一.实验题目3 二.课程设计的目的3 三.设计内容3 四.设计要求3 五.主要数 ...

  3. c语言可视化_这些算法可视化网站助你轻松学算法

    前言 无疑,数据结构与算法学习最大的难点之一就是如何在脑中形象化其抽象的逻辑步骤.而图像在很多时候能够大大帮助我们理解其对应的抽象化的东西,而如果这个图像还是我们自己一点点画出来的,那么无疑这个印象是 ...

  4. 非抢占式优先算法例题_非抢占短作业优先算法源代码(C语言)

    #include #include #define MAX 5 //进程数 /*短作业优先算法*/ struct pro { int num; //进程名 int arriveTime; //到达时间 ...

  5. AnyviewC编程作业系统——支持程序可视化运行、调试和测评

    AnyviewC编程作业系统--支持程序可视化运行.调试和测评 AnyviewC题库:C程序设计  例题62--习题239(2012-4-27) 1.025 编写一个C程序,用函数printf(cha ...

  6. Go语言-数据结构与算法

    go语言之专业数据结构与算法 3.golang实现数组结构 code\ArrayList\ArrayList.go package ArrayListimport ("errors" ...

  7. 支持中文的算法可视化网站,你想要的算法这都有

    大数据文摘出品 作者:蒋宝尚 上次文摘菌给大家推荐了一个能让算法动起来的开源项目之后,有热心的读者给文摘菌推荐了另一个算法可视化的网站.文摘菌打开之后,立即被起画风所折服,所以决定探索一番. 先给出网 ...

  8. 单片机c语言 i%3c%3c1,单片机C语言作业及上机习题及答案

    <单片机C语言作业及上机习题及答案>由会员分享,可在线阅读,更多相关<单片机C语言作业及上机习题及答案(37页珍藏版)>请在人人文库网上搜索. 1.第一次课熟悉winTC编译环 ...

  9. c语言作业帮,少训练大功课C语言

    紧急分配C语言. C语言分配,很紧急. 急C语言作业. //1. #include#includeintmain(void){&nbsp C语言作业,请设计一种算法来完成两个超长正整数的加法运 ...

最新文章

  1. Eclipse4.4设备egit插件提交本地项目代码到远程仓库
  2. 解决IE8,7下设置背景图片 background-size 不支持问题
  3. 常用的生物学数据库及网站介绍,你都了解了吗?
  4. 指定查找区间,查找学生姓名并显示是否修改成功
  5. 使用序列化查找对象中的脏字段
  6. matlab 赋空值,未对输出参数赋值 求大神帮忙解惑
  7. [Ext JS 4] 实战之Grid, Tree Gird 动态添加列续(性能考虑)
  8. for循环语句例子 python_Python for循环语句一般形式例子
  9. 多目录下一次性修改多个文件里的相同内容
  10. OpenCV-图像处理(29、凸包-Convex Hull)
  11. bp神经网络模型的优缺点,什么是BP神经网络模型?
  12. 搭建简单JAVA分布式爬虫系统
  13. Vue 大量数据展示卡顿解决方案(长列表优化)
  14. [架构之美]一款APP从想法-开发-上线-产品的全过程
  15. java未来三年的工作计划,未来三年的工作计划
  16. matlab图片白边_matlab 图像保存时去除白边
  17. mysql笛卡尔积查询很慢_浅谈MySQL使用笛卡尔积原理进行多表查询
  18. [微传感器]PID控制结合电路的通俗理解
  19. 惊了 消息中间件合集:MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka+笔记
  20. 探索消费级基因检测–祖源

热门文章

  1. JNI编程中数据类型转换的方法
  2. 使用ubuntu钉钉
  3. Altium AD20修改原理图右下角标题栏,自定义标题栏,添加图片、标题、页码、时间、作者
  4. Markdown_合并表格中的单元格
  5. leetcode963. Minimum Area Rectangle II
  6. ASP.net用法系列:如何从基类调用LINQ/EF类的属性
  7. JavaEE Web 开发 链接 mysql 出现 Class.not found的错误
  8. remote connect openshift mysql
  9. Linux 下socket通信终极指南(附TCP、UDP完整代码)
  10. 今天开博第一篇,呵呵