用c++ 编写一个函数 void paixu(int *a,int len),该西数的功能是对数组进行排序(排序方法不要求,冒泡选择均可),len 表示数组中待排序 元素个数。写出主函数,动态输入数组,调用这个自定义函数实现排序。

时间: 2023-11-28 09:49:17 浏览: 136
好的,以下是代码实现: ```cpp #include <iostream> using namespace std; void paixu(int *a, int len) { for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - i - 1; j++) { if (a[j] > a[j + 1]) { swap(a[j], a[j + 1]); } } } } int main() { int n; cout << "请输入待排序元素个数:"; cin >> n; int *a = new int[n]; cout << "请输入" << n << "个整数:" << endl; for (int i = 0; i < n; i++) { cin >> a[i]; } paixu(a, n); cout << "排序后的结果为:" << endl; for (int i = 0; i < n; i++) { cout << a[i] << " "; } delete[] a; return 0; } ``` 这里使用冒泡排序实现,可以根据需要修改排序算法。主函数中首先动态输入数组,然后调用自定义函数 `paixu` 对数组进行排序,最后输出排序后的结果。注意需要释放动态分配的内存。
阅读全文

相关推荐

给这段代码添加中文注释:#include<stdio.h> #include<conio.h> #include<windows.h> struct student { char code[10]; float s1,s2,s3; float score; char grade; }temp; void set(int *choice) { printf(" ******* 1、从文件读取数据 *******\n"); printf(" ******* 2、计算并显示成绩 *******\n"); printf(" ******* 3、按等级查询 *******\n"); printf(" ******* 4、按总评成绩排序 *******\n"); printf(" ******* 5、按学号查询 *******\n"); printf(" ******* 6、查询所有等级 *******\n"); printf(" ******* 7、保存到文件 *******\n"); printf(" ******* 0、退出系统 *******\n\n"); printf("请选择您所需要操作的功能:"); *choice=getch(); } void dispinfo() { system("cls"); printf("\n\n"); printf(" *********************** 欢迎成绩核算系统 **********************\n\n"); printf(" *********************** **************** **********************\n\n"); } int duqu(struct student *list) { int n = 0; FILE fp = fopen("C:\Users\dell\Desktop\软件设计-源文件\A3\note.txt", "r"); if (fp == NULL) { printf("无法打开文件"); return n; } char line[100]; fgets(line, 100, fp); sscanf(line, "%d", &n); printf("\n"); // 空一行 printf(" 学号 平时成绩 期中成绩 期末成绩 \n"); // 输出表头 for (int i = 0; i < n; i++) { fgets(line, 100, fp); sscanf(line, "%s %f %f %f", list[i].code, &list[i].s1, &list[i].s2, &list[i].s3); printf("\t %s %5.1lf %5.1lf %5.1lf \n", list[i].code, list[i].s1, list[i].s2, list[i].s3); } printf("\n\n\n ****** 读取文件成功! 按任意键继续! ****** \n"); fclose(fp); while (getchar() != '\n'); // 等待用户按下回车键继续 return n; } void view(struct student list, int amount) { float sum = 0, average = 0; printf("\n 学号 总评 等级 \n"); for (int i = 0; i < amount; i++) { sum += list[i].score; printf("%10s %6.1f %c \n", list[i].code, list[i].score, list[i].grade); } average = sum / amount; printf(" 本班总人数 %d 本班平均成绩 %.1f\n", amount, average); printf("\n\n\n\n\n ***** 摁任意键继续! ****** \n"); getch(); } void paixu(struct student list, int amount) { for (int i = 0; i < amount; i++) { for (int j = i + 1; j < amount; j++) { if (list[j].score > list[i].score) { struct student temp = list[j]; list[j] = list[i]; list[i] = temp; } } } view(list, amount); } void calculate(struct student list[], int amount) { for(int i = 0; i < amount; i++) { float score = list[i].s10.3 + list[i].s20.3 + list[i].s30.4; list[i].score = score; if(score >= 90) { list[i].grade = 'A'; } else if(score >= 80) { list[i].grade = 'B'; } else if(score >= 70) { list[i].grade = 'C'; } else if(score >= 60) { list[i].grade = 'D'; } else { list[i].grade = 'E'; } } dispinfo(); view(list, amount); }

给这段代码添加中文注释:#include<stdio.h> #include<conio.h> #include<windows.h> struct student { char code[10]; float s1,s2,s3; float score; char grade; }temp; void set(int *choice) { printf(" ******* 1、从文件读取数据 *******\n"); printf(" ******* 2、计算并显示成绩 *******\n"); printf(" ******* 3、按等级查询 *******\n"); printf(" ******* 4、按总评成绩排序 *******\n"); printf(" ******* 5、按学号查询 *******\n"); printf(" ******* 6、查询所有等级 *******\n"); printf(" ******* 7、保存到文件 *******\n"); printf(" ******* 0、退出系统 *******\n\n"); printf("请选择您所需要操作的功能:"); *choice=getch(); } void dispinfo() { system("cls"); printf("\n\n"); printf(" *********************** 欢迎成绩核算系统 **********************\n\n"); printf(" *********************** **************** **********************\n\n"); } int duqu(struct student *list) { int n; int i=0; FILE *fp; fp=fopen("C:\Users\dell\Desktop\软件设计-源文件\A3-2","r"); fscanf(fp,"%d",&n); for(i=0;i<n;i++) { fscanf(fp,"%s %f %f %f",list[i].code,&list[i].s1,&list[i].s2,&list[i].s3); } printf("学号 平时成绩 期中成绩 期末成绩 \n"); for(i=0;i<n;i++) printf("\t %s %5.1lf %5.1lf %5.1lf \n",list[i].code,list[i].s1,list[i].s2,list[i].s3); printf("\n\n\n ****** 读取文件成功!摁任意键继续! ****** \n"); getch(); fclose(fp); return n; } void view(struct student *list,int amount) { int i=0; float average=0; printf("\n 学号 总评 等级 \n"); for(i=0;i<amount;i++) { average+=list[i].score; printf("%10s %6.1f %c \n",list[i].code,list[i].score,list[i].grade); } average/=amount; printf(" 本班总人数 %d 本班平均成绩 %.1f\n",amount,average); printf("\n\n\n\n\n ***** 摁任意键继续! ****** \n"); getch(); } void paixu(struct student *list,int amount) { float temp; char temp1; char temp2[10]; int i,j; for(i=0;i<amount;i++) for(j=i+1;j<amount;j++) { if(list[j].score>list[i].score) { temp=list[j].score; list[j].score=list[i].score; list[i].score=temp; strcpy(temp2,list[j].code); strcpy(list[j].code,list[i].code); strcpy(list[i].code,temp2); temp=list[j].s1; list[j].s1=list[i].s1; list[i].s1=temp; temp=list[j].s2; list[j].s2=list[i].s2; list[i].s2=temp; temp=list[j].s3; list[j].s3=list[i].s3; list[i].s3=temp; temp1=list[j].grade; list[j].grade=list[i].grade; list[i].grade=temp1; } } view(list,amount); }

修改findgrade,使得第二次调用findgrade时情况与第一次相同:void findgrade(struct student list[], int amount) { dispinfo(); // 显示菜单信息 printf("\n\n\n 请选择您需要查询的等级(输入大写A(优)/B(良)C(中)/D(及格)/E(不及格)): "); char g = getchar(); // 获取用户输入等级 int count = 0; // 计数等级为g的学生人数 printf("\t\t 学号 总评 等级 \n"); for (int i = 0; i < amount; i++) { if (list[i].grade == g) { // 如果学生等级为g count++; // 计数器加一 printf("\t\t%10s %6.1f %c \n", list[i].code, list[i].score, list[i].grade); // 输出该学生的信息 } } printf("\n\n 等级为%c总共有%d人, 总人数%d ,占总人数的%.2lf\n", g, count, amount, (double)count / amount); // 输出等级为g的学生人数和占比 printf("\n\n\n ****** 按任意键继续! ****** \n"); getch(); // 等待用户按键 } //定义主函数 int main() { //设置控制台颜色为淡红色 system("color F4"); //定义学生结构体数组 struct student list[100]; //定义用户输入的选择 int choice; //定义学生数量 int amount; //循环,直到用户选择退出程序 while (1) { //显示菜单信息 dispinfo(); //获取用户输入的选择 set(&choice); //根据用户选择调用相应的函数 switch (choice) { //选择1:读取学生信息 case '1': amount = duqu(list); break; //选择2:计算学生平均分和总分 case '2': calculate(list, amount); break; //选择3:查找指定分数段的学生信息 case '3': findgrade(list, amount); break; //选择4:按照总分从高到低排序学生信息 case '4': paixu(list, amount); break; //选择5:查找指定学生的信息 case '5': find(list, amount); break; //选择6:按照总分从高到低输出学生信息 case '6': gradelist(list, amount); break; //选择7:保存学生信息到文件中 case '7': save(list, amount); break; //选择0:退出程序 case '0': //清屏 system("cls"); //输出退出程序提示信息 printf("\n\n\n\n\n\n\n\n\n\n\n ******* 谢谢使用!欢迎再次光临! ******\n"); //等待用户按下任意键后返回0,程序结束 getch(); return 0; //其他输入无效,提示用户重新输入 default: printf(" 无效的选项,请重新输入!\n"); break; } } }

大家在看

recommend-type

CEC2017 优化问题的测试函数

CEC 2017 常用的单目标测试函数,可用于测试智能优化方法的性能。(Problem Definitions and Evaluation Criteria for the CEC 2017 Competition on Constrained RealParameter Optimization)
recommend-type

python大作业基于python实现的心电检测源码+数据+详细注释.zip

python大作业基于python实现的心电检测源码+数据+详细注释.zip 【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【备注】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! python大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zippython大作业基于python实现的心电检测源码+数据+详细注释.zip python大作业基于python实现的心电检测源码+数据+详细注释.zip
recommend-type

千方百剂服务器及客户端安装白皮书

千方百剂服务器及客户端安装白皮书.doc
recommend-type

实验2.Week04_通过Console线实现对交换机的配置和管理.pdf

交换机,console
recommend-type

iometer使用指南

windows下的iometer的使用指南,比较详细。

最新推荐

recommend-type

JS实现中文汉字按拼音排序的方法

在JavaScript中,对中文汉字进行拼音排序是一项常见的需求,特别是在数据处理和用户界面展示时。以下将详细介绍如何使用JS实现中文汉字按拼音排序,并提供相关的操作技巧。 首先,JavaScript提供了`Array.prototype...
recommend-type

数据结构算法课程设计-汽车牌照的排序与查找问题

在这个设计中,为了进行二分查找,需要将所有车牌号转换为数字形式存储在一个一维数组中,然后在该数组中进行二分查找,以定位到所需车牌号对应的信息。 在数据结构的选择上,考虑到程序的实用性,建议使用链表来...
recommend-type

家庭支出管理系统 c/c++

家庭支出管理系统是一个基于C或C++编程语言设计的程序,旨在帮助用户统计和分析家庭一个月内的支出情况。这个系统的设计目标是让学生熟悉和熟练运用数组、指针等基础数据结构和操作,同时锻炼他们的算法思维和程序...
recommend-type

goland2022.3.3自学用

goland2022.3.3自学用
recommend-type

自动驾驶进阶-YOLOv11多模态融合的道路障碍物检测系统优化.pdf

想深入掌握目标检测前沿技术?Yolov11绝对不容错过!作为目标检测领域的新星,Yolov11融合了先进算法与创新架构,具备更快的检测速度、更高的检测精度。它不仅能精准识别各类目标,还在复杂场景下展现出卓越性能。无论是学术研究,还是工业应用,Yolov11都能提供强大助力。阅读我们的技术文章,带你全方位剖析Yolov11,解锁更多技术奥秘!
recommend-type

Spring Websocket快速实现与SSMTest实战应用

标题“websocket包”指代的是一个在计算机网络技术中应用广泛的组件或技术包。WebSocket是一种网络通信协议,它提供了浏览器与服务器之间进行全双工通信的能力。具体而言,WebSocket允许服务器主动向客户端推送信息,是实现即时通讯功能的绝佳选择。 描述中提到的“springwebsocket实现代码”,表明该包中的核心内容是基于Spring框架对WebSocket协议的实现。Spring是Java平台上一个非常流行的开源应用框架,提供了全面的编程和配置模型。在Spring中实现WebSocket功能,开发者通常会使用Spring提供的注解和配置类,简化WebSocket服务端的编程工作。使用Spring的WebSocket实现意味着开发者可以利用Spring提供的依赖注入、声明式事务管理、安全性控制等高级功能。此外,Spring WebSocket还支持与Spring MVC的集成,使得在Web应用中使用WebSocket变得更加灵活和方便。 直接在Eclipse上面引用,说明这个websocket包是易于集成的库或模块。Eclipse是一个流行的集成开发环境(IDE),支持Java、C++、PHP等多种编程语言和多种框架的开发。在Eclipse中引用一个库或模块通常意味着需要将相关的jar包、源代码或者配置文件添加到项目中,然后就可以在Eclipse项目中使用该技术了。具体操作可能包括在项目中添加依赖、配置web.xml文件、使用注解标注等方式。 标签为“websocket”,这表明这个文件或项目与WebSocket技术直接相关。标签是用于分类和快速检索的关键字,在给定的文件信息中,“websocket”是核心关键词,它表明该项目或文件的主要功能是与WebSocket通信协议相关的。 文件名称列表中的“SSMTest-master”暗示着这是一个版本控制仓库的名称,例如在GitHub等代码托管平台上。SSM是Spring、SpringMVC和MyBatis三个框架的缩写,它们通常一起使用以构建企业级的Java Web应用。这三个框架分别负责不同的功能:Spring提供核心功能;SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架;MyBatis是一个支持定制化SQL、存储过程以及高级映射的持久层框架。Master在这里表示这是项目的主分支。这表明websocket包可能是一个SSM项目中的模块,用于提供WebSocket通讯支持,允许开发者在一个集成了SSM框架的Java Web应用中使用WebSocket技术。 综上所述,这个websocket包可以提供给开发者一种简洁有效的方式,在遵循Spring框架原则的同时,实现WebSocket通信功能。开发者可以利用此包在Eclipse等IDE中快速开发出支持实时通信的Web应用,极大地提升开发效率和应用性能。
recommend-type

电力电子技术的智能化:数据中心的智能电源管理

# 摘要 本文探讨了智能电源管理在数据中心的重要性,从电力电子技术基础到智能化电源管理系统的实施,再到技术的实践案例分析和未来展望。首先,文章介绍了电力电子技术及数据中心供电架构,并分析了其在能效提升中的应用。随后,深入讨论了智能化电源管理系统的组成、功能、监控技术以及能
recommend-type

通过spark sql读取关系型数据库mysql中的数据

Spark SQL是Apache Spark的一个模块,它允许用户在Scala、Python或SQL上下文中查询结构化数据。如果你想从MySQL关系型数据库中读取数据并处理,你可以按照以下步骤操作: 1. 首先,你需要安装`PyMySQL`库(如果使用的是Python),它是Python与MySQL交互的一个Python驱动程序。在命令行输入 `pip install PyMySQL` 来安装。 2. 在Spark环境中,导入`pyspark.sql`库,并创建一个`SparkSession`,这是Spark SQL的入口点。 ```python from pyspark.sql imp
recommend-type

新版微软inspect工具下载:32位与64位版本

根据给定文件信息,我们可以生成以下知识点: 首先,从标题和描述中,我们可以了解到新版微软inspect.exe与inspect32.exe是两个工具,它们分别对应32位和64位的系统架构。这些工具是微软官方提供的,可以用来下载获取。它们源自Windows 8的开发者工具箱,这是一个集合了多种工具以帮助开发者进行应用程序开发与调试的资源包。由于这两个工具被归类到开发者工具箱,我们可以推断,inspect.exe与inspect32.exe是用于应用程序性能检测、问题诊断和用户界面分析的工具。它们对于开发者而言非常实用,可以在开发和测试阶段对程序进行深入的分析。 接下来,从标签“inspect inspect32 spy++”中,我们可以得知inspect.exe与inspect32.exe很有可能是微软Spy++工具的更新版或者是有类似功能的工具。Spy++是Visual Studio集成开发环境(IDE)的一个组件,专门用于Windows应用程序。它允许开发者观察并调试与Windows图形用户界面(GUI)相关的各种细节,包括窗口、控件以及它们之间的消息传递。使用Spy++,开发者可以查看窗口的句柄和类信息、消息流以及子窗口结构。新版inspect工具可能继承了Spy++的所有功能,并可能增加了新功能或改进,以适应新的开发需求和技术。 最后,由于文件名称列表仅提供了“ed5fa992d2624d94ac0eb42ee46db327”,没有提供具体的文件名或扩展名,我们无法从这个文件名直接推断出具体的文件内容或功能。这串看似随机的字符可能代表了文件的哈希值或是文件存储路径的一部分,但这需要更多的上下文信息来确定。 综上所述,新版的inspect.exe与inspect32.exe是微软提供的开发者工具,与Spy++有类似功能,可以用于程序界面分析、问题诊断等。它们是专门为32位和64位系统架构设计的,方便开发者在开发过程中对应用程序进行深入的调试和优化。同时,使用这些工具可以提高开发效率,确保软件质量。由于这些工具来自Windows 8的开发者工具箱,它们可能在兼容性、效率和用户体验上都经过了优化,能够为Windows应用的开发和调试提供更加专业和便捷的解决方案。
recommend-type

如何运用电力电子技术实现IT设备的能耗监控

# 摘要 随着信息技术的快速发展,IT设备能耗监控已成为提升能效和减少环境影响的关键环节。本文首先概述了电力电子技术与IT设备能耗监控的重要性,随后深入探讨了电力电子技术的基础原理及其在能耗监控中的应用。文章详细分析了IT设备能耗监控的理论框架、实践操作以及创新技术的应用,并通过节能改造案例展示了监控系统构建和实施的成效。最后,本文展望了未来能耗监控技术的发展趋势,同时