当前位置: 首页 > news >正文

做ppt找图片的网站成都网站建设 常凡云

做ppt找图片的网站,成都网站建设 常凡云,php 网站 手机版,工业风格装修效果图前言 NWAFU 2021阶段二 C 一、题目描述 题目描述 在三维笛卡尔坐标系中#xff0c;可以用X,Y,Z三个坐标分量表示三维空间中的一个点。现有一系列用X,Y,Z表示的三维点#xff0c;需要对其按指定的X、Y或Z分量进行升序或降序排序。请用C语言实现这一排序过程#xff0c;程序…前言 NWAFU 2021阶段二 C 一、题目描述 题目描述 在三维笛卡尔坐标系中可以用X,Y,Z三个坐标分量表示三维空间中的一个点。现有一系列用X,Y,Z表示的三维点需要对其按指定的X、Y或Z分量进行升序或降序排序。请用C语言实现这一排序过程程序主体框架已完成。 其中排序函数selection_sort()原型规定为     void selection_sort(Point *a, int n, char mode, AXIS ch) 用于对长度为n的Point类型结构体数组a按指定的模式mode(字符A或DD表示升序A表示降序)根据指定的坐标分量ch(枚举值0、1或2分别表示X轴、Y轴和Z轴)实现排序。 在程序主体框架中已给出了三维点结构体的定义、AXIS坐标分量枚举类型定义、排序方式回调函数类型CallBack定义及所有需要的函数原型。 请用wget命令从此处下载程序主体框架后设计selection_sort()函数的实现以完成该通用排序功能并在本地完成测试和调试工作。 注意不能改变代码框架中所有的函数原型只需提交要求的selection_sort()函数及其调用的没有列出的自定义函数的实现代码禁止提交其他代码否则会造成编译错误。 #include stdlib.h #include stdio.htypedef struct {int x, y, z; } Point;typedef enum { XAXIS, YAXIS, ZAXIS } AXIS; typedef int (*CallBack)(int, int); /* 定义一个函数指针类型CallBack该类型的指针对应的函数要求返回值是一个整型数据且含有两个整型形参。 */ int compareA(int, int); int compareD(int, int); Point *input(int n); void selection_sort(Point * a, int n, char mode, AXIS ch); CallBack setmode(char mode); /* 返回一个CallBack类型的函数指针 */int main() {int i, ch, n;char k;scanf(%d%c%d, n, k, ch);Point *pt input(n);selection_sort(pt, n, k, ch);for (i 0; i n; i)printf(%d %d %d\n, pt[i].x, pt[i].y, pt[i].z);free(pt);return 0; }Point *input(int n) {int i;Point *a;a (Point *) malloc(n * sizeof(Point));for (i 0; i n; i)scanf(%d%d%d, a[i].x, a[i].y, a[i].z);return a; }int compareA(int x, int y) {return x y; }int compareD(int x, int y) {return x y; }CallBack setmode(char mode) {if (mode D)return compareD;elsereturn compareA; } 输入  三维点的个数n、排序方式mode、排序分量ch及n个三维点的X、Y、Z坐标其中mode为字符D或A分别表示升序和降序ch为枚举值0、1、2分别表示X轴、Y轴和Z轴坐标分量 输出 升序或降序排列的结果 样例输入 3A1 2 1 0 1 2 4 6 5 -2 样例输出 6 5 -2 1 2 4 2 1 0 提示 回调函数CallBack定义了一种函数指针类型本题目中要求在函数selection_sort()里调用其所定义的函数setmode(返回指向比较函数的指针调用形式参考compareD()和compareA()。 二、设计步骤 理解题意后这道题的重点在于理解已有的程序结构对于不熟悉函数指针的初学者有一定难度。setmode()函数的实质是通过参数mode调用对应的compare函数从而实现对两个数的判断功能因此在调用时应当写为 setmode(mode)(a,b) //根据mode参数对a和b进行比较 同时还要注意该函数的返回值。程序的核心结构可以通过冒泡排序实现。  代码实现 void selection_sort(Point * a, int n, char mode, AXIS ch); void Swap(Point *,Point *); //Point交换函数void selection_sort(Point * a, int n, char mode, AXIS ch) {int i,j,temp;int *p; //定义一个长度为n的整形数组存储用于比较的坐标值p (int *)malloc(n * sizeof(int));if(ch XAXIS) //根据ch给数组p赋值也可以用switch{for(i 0;i n;i){p[i] a[i].x;}}else if(ch YAXIS){for(i 0;i n;i){p[i] a[i].y;}}else{for(i 0;i n;i){p[i] a[i].z;}}//冒泡排序for(i 0;i n - 1;i){for(j n - 2 - i;j 0;j--){if(!setmode(mode)(p[j],p[j1])){Swap(a[j],a[j1]); //交换坐标位置temp p[j]; //交换p位置p[j] p[j1];p[j1] temp;}}} }void Swap(Point *x,Point *y) {Point temp *x;*x *y;*y temp; }三、补充 然鹅当你经过上面的思考过程信心满满地提交代码时却被91%伤害得猝不及防 Expected: -2 0 0 0 1 2 3 2 1 1 2 3 4 6 5 ------------------------------ Yours: -2 0 0 0 1 2 1 2 3 3 2 1 4 6 5 这个测试点为 5D1 1 2 3 3 2 1 0 1 2 4 6 5 -2 0 0 这是此题的一个小bug在这个样例中它对{1,2,3}和{3,2,1}进行了交换而在我们的程序中显然不需要这样的操作。本着顾客就是上帝的原则我们添加一个判断条件使得当mode判断y值相等时按照x进行排序即可通过。 在冒泡中添加以下代码 if(ch YAXIS p[j] p[j1]) //补充部分 {if(!setmode(A)(a[j].x,a[j1].x)){Swap(a[j],a[j1]);temp p[j];p[j] p[j1];p[j1] temp;} } 总结 NWAFU 2021阶段二 C
http://www.zqtcl.cn/news/165438/

相关文章:

  • 网站的维护和推广2345网址大全设主页访问
  • 天津商城网站建设公司如何申请注册企业邮箱
  • 做家旅游的视频网站好给我一个可以在线观看的免费
  • 香奈儿网站建设做网站应该问客户什么需求
  • 永久免费ppt下载网站互联网上市公司一览表
  • 甘肃省建设工程168网站东营智能网站设计
  • 网站跨机房建设方案山西运城市建设局网站
  • 网站被k文章修改设计师图片素材
  • 建设银行益阳市分行桃江支行网站9377烈焰传奇手游官网
  • 网站收费怎么做沈阳建设工程信息网 等级中项网
  • 做网站后台教程视频杭州网站开发建设
  • 维度 网站建设优秀vi设计网站
  • 快速搭建网站工具海洋网络做网站不负责
  • 做电影资源网站服务器怎么选wordpress唱片公司模板
  • 医院网站建设投标要求wordpress文章的表是什么
  • 怎么做网站后门海外营销推广
  • 网站建设中英版网站要做手机版怎么做的
  • 安徽网站开发与维护专业阜阳建设部网站
  • 山东省住房和建设厅网站网站优化大计
  • 大良建网站织梦建设两个网站 视频
  • 用html5制作个人网站航空港建设局网站
  • 祥云平台建站网站备案通过什么可以备案
  • 免费建造网站系统php和wordpress
  • 九脉堂是做网站的网站权重不稳定
  • 网站怎么做来流量门户网站的发布特点
  • 网站设计相似侵权吗免费游戏网站建设
  • 湖北长安建设网站制作一个网站的步骤是什么
  • js网站开发成都房地产最新政策
  • 天津网站制作维护无锡网络推广外包
  • 国外中文网站排行娱乐新闻做的好的网站