C语言课程设计报告---根据条件进行学生成绩排序
成绩处理程序实验报告

一、实验目的1. 熟悉C语言编程环境,掌握C语言的基本语法和编程技巧。
2. 学习使用循环、条件语句等控制结构编写程序。
3. 熟悉数据结构,掌握数组的运用。
4. 实现一个成绩处理程序,能够实现输入、输出、排序、查询等功能。
二、实验内容1. 设计一个成绩处理程序,实现以下功能:(1)输入学生信息,包括姓名、学号、成绩。
(2)输出所有学生信息。
(3)按照成绩从高到低排序。
(4)查询学生信息。
2. 实验要求:(1)使用C语言编写程序。
(2)程序结构清晰,代码规范。
(3)实现功能完整,无错误。
三、实验步骤1. 定义学生结构体,包含姓名、学号、成绩等属性。
2. 创建一个数组用于存储学生信息。
3. 编写函数实现以下功能:(1)输入学生信息:通过循环让用户输入学生信息,并存储到数组中。
(2)输出所有学生信息:遍历数组,输出每个学生的信息。
(3)排序:使用冒泡排序算法对数组进行排序,按照成绩从高到低排序。
(4)查询学生信息:通过学号或姓名查询学生信息,并输出结果。
4. 编写主函数,调用上述函数实现成绩处理程序。
四、实验代码```c#include <stdio.h>#include <string.h>#define MAX_STUDENTS 100typedef struct {char name[50];int id;float score;} Student;void inputStudents(Student students[], int count);void outputStudents(const Student students[], int count); void sortStudents(Student students[], int count);void queryStudent(const Student students[], int count); int main() {Student students[MAX_STUDENTS];int count = 0;inputStudents(students, &count);outputStudents(students, count);sortStudents(students, count);queryStudent(students, count);return 0;}void inputStudents(Student students[], int count) {printf("Enter the number of students: ");scanf("%d", count);for (int i = 0; i < count; i++) {printf("Enter information for student %d:\n", i + 1);printf("Name: ");scanf("%s", students[i].name);printf("ID: ");scanf("%d", &students[i].id);printf("Score: ");scanf("%f", &students[i].score);}}void outputStudents(const Student students[], int count) {printf("\nList of students:\n");for (int i = 0; i < count; i++) {printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);}}void sortStudents(Student students[], int count) {for (int i = 0; i < count - 1; i++) {for (int j = 0; j < count - i - 1; j++) {if (students[j].score < students[j + 1].score) {Student temp = students[j];students[j] = students[j + 1];students[j + 1] = temp;}}}}void queryStudent(const Student students[], int count) {int id;char name[50];int found = 0;printf("Enter student ID or name to query: ");scanf("%s", name);if (strlen(name) > 0) {for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) {printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);found = 1;break;}}} else {printf("Enter student ID: ");scanf("%d", &id);for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);found = 1;break;}}}if (!found) {printf("Student not found.\n");}}```五、实验结果1. 输入学生信息:```Enter the number of students: 3Enter information for student 1:Name: Zhang SanID: 1001Score: 90.0Enter information for student 2: Name: Li SiID: 1002Score: 85.0Enter information for student 3: Name: Wang WuID: 1003Score: 95.0```2. 输出所有学生信息:```List of students:Name: Zhang San, ID: 1001, Score: 90.00 Name: Li Si, ID: 1002, Score: 85.00 Name: Wang Wu, ID: 1003, Score: 95.00 ```3. 按成绩排序:```List of students:Name: Wang Wu, ID: 1003, Score: 95.00 Name: Zhang San, ID: 1001, Score: 90.00 Name: Li Si, ID: 1002, Score: 85.00```4. 查询学生信息:```Enter student ID or name to query: Zhang SanName: Zhang San, ID: 1001, Score: 90.00```六、实验总结本次实验通过实现一个成绩处理程序,学习了C语言的基本语法和编程技巧,掌握了数据结构、数组的运用,以及冒泡排序算法。
C语言课程设计报告学生成绩管理系统(广工)

一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计程序要有的功能:1。
输入记录2。
用指定格式显示全部记录3。
根据姓名查找记录4。
根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7。
按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
流程图:四、详细设计源程序:#include ”stdio。
h”#include "stdlib.h”#include "string。
h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。
c语言课程设计成绩排序

c语言课程设计成绩排序一、教学目标本节课的教学目标是让学生掌握C语言中成绩排序的功能实现。
具体包括:1.知识目标:使学生了解排序算法的原理,掌握常用的排序方法,如冒泡排序、选择排序和插入排序等。
2.技能目标:培养学生运用C语言实现成绩排序功能,提高编程能力。
3.情感态度价值观目标:培养学生独立思考、合作交流的学习态度,激发他们对计算机科学的兴趣。
二、教学内容本节课的教学内容主要包括:1.排序算法的原理及分类。
2.C语言中成绩排序的实现方法,包括冒泡排序、选择排序和插入排序等。
3.结合实际案例,让学生动手实践,掌握排序算法的应用。
三、教学方法为了达到本节课的教学目标,将采用以下教学方法:1.讲授法:讲解排序算法的原理和分类,让学生了解各种排序方法的基本思想。
2.案例分析法:分析实际案例,让学生掌握排序算法的应用。
3.实验法:让学生动手实践,编写C语言程序实现成绩排序功能,提高编程能力。
4.讨论法:在课堂上学生进行小组讨论,培养学生的合作交流能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C语言程序设计》等相关教材,为学生提供理论知识的学习。
2.参考书:提供额外的学习资料,帮助学生深入了解排序算法。
3.多媒体资料:制作PPT等教学课件,直观展示排序算法的原理和实现过程。
4.实验设备:为学生提供编程实践的环境,如计算机、编程软件等。
五、教学评估本节课的教学评估将采用多元化评价方式,全面反映学生的学习成果。
具体包括:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以体现学生的学习态度。
2.作业:布置与课程内容相关的编程作业,评估学生对知识的掌握程度。
3.考试:安排一次课程结束后的考试,测试学生对排序算法的理解和应用能力。
评估方式要求客观、公正,确保评价结果能够真实反映学生的学习情况。
六、教学安排本节课的教学安排如下:1.进度:按照教材的章节顺序,依次讲解排序算法的原理、分类和实现方法。
C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
C语言程序设计课程设计报告

C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
C语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。
h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。
C课程设计 成绩排序+报告

2013-2014学年第二学期学号《高级语言程序设计》课程设计报告题目:成绩排序专业:计算机科学与技术班级:姓名:指导教师:成绩:计算机与信息工程系2014年6月2日目录1设计目的及要求 (1)1.1课程设计的目的 (1)1.2课程设计的基本要求 (1)2设计内容 (2)2.1模块说明 (2)2.2 模块结构图 (2)2.3详细设计说明 (4)2.31程序流程图 (4)2.3.2删除学生成绩记录模块 (5)2.3.3查询学生成绩记录模块 (6)2.3.4学生成绩排序模块 (7)2.4函数流程图 (8)3程序测试 (9)3.1软件测试 (9)3.2运行结果及截图 (9)4参考文献 (11)5总结 (12)6源代码 (13)计算机与信息工程系《高级语言程序设计》课程设计报告1设计目的及要求1.1课程设计的目的(1).巩固和掌握高级语言程序设计基本概念;(2).掌握基本的程序设计方法;(3).掌握开发软件所需的需求定义能力;(4).提高书写程序设计说明文档的能力;(5).提高综合运用高级语言的能力,强化编程和调试能力。
1.2课程设计的基本要求1)根据所给的课程设计题目,分析课程设计题目的要求;2)对系统功能模块进行分析,写出详细的设计说明文档;3)编写程序代码,调试所编写程序使其能正确运行;4)设计完成的软件便于完成和使用;5)设计完成后提交课程设计报告;课程设计报告内容包括:课程设计的目的、设计任务与要求、设计说明书、设计成果和心得五个部分,具体要求见设计报告模板;6)总结:调试分析过程描述:包括测试数据、测试输出结果以及对程序调试过程中的存在问题的思考(列出主要问题的出错现象、出错原因等)包括课程设计过程中的学习体会与收获;7)任务:设计一个学生成绩排序系统,该系统的主要功能如下:具备对成绩的管理功能(添加、删除、排序)具备对成绩的统计功能(最高分,最低分,平均分,及格率等)具备按学号、姓名、或课程名查询成绩的功能。
C语言排序学生成绩资料

任务1 输入/输出多个学生一门 课程的成绩
4.1.1 一维数组
以下对一维整型数组a的正确定义的是: A、int a(10) B、int n=10, a[n] C、int n; int a[n]; D、#define SIZE 10
scanf(“%d”,%n); int a[SIZE];
任务1 输入/输出多个学生一门 课程的成绩
数据类型 数组名[常量表达式];
数组元素
的数据类型
遵循C语言
标识符规则
例如:int a[5];
数组长度 几个数组元素
任务1 输入/输出多个学生一门 课程的成绩
4.1.1 一维数组
说明: 常量表达式表示元素的个数,即数组
长度。 常量表达式中可以包括常量和符合常
量,不能包含变量。
int i=5;
int a[i]; /*数组长度为变量*/
{ printf("%d ",i+1);break; }
}}
任务1 输入/输出多个学生一门 课程的成绩
4.1.3 一维数组
练习:一个班50位同学参加了一次C语言 程序设计考试,现要输入全班同学的成 绩,并按逆序输出。
任务2 排序学生成绩
任务1中已经输入了50个同学的成 绩到数组中,现在需要确定如何对学 生成绩从低到高进行排序。
{ scanf("%d",&mathScore[i]); }
for(i=0;i<5;i++)
{ sum=sum+mathScore[i]; }
average=sum/5.0;
printf("%f ",average);
}
c语言课程设计

课程设计任务书一、设计题目(一)学生成绩排名(二)根据条件进行学生成绩排名(三)链表的操作(链表的建立,访问,删除链表指定结点,增加结点)(四)学生成绩文件管理(五)一个综合系统(学生成绩管理系统)二、主要内容(一)学生成绩排名先采用选择法,将学生成绩从高到低进行排序,再输入一个学生的成绩,将此成绩按照排序规律插入已排好序的学生成绩数组,最后将排好序的成绩单进行反序存放。
(二)根据条件进行学生成绩排名在函数中进行10个学生成绩从高到低排名,再改进函数,进行n个学生成绩从高到低排名, 排名方式根据函数的style参数进行,如style为‘a'按升序排,style为' d ' 按降序排(a:ascending 升,d:descending 降)。
编写多个不同函数,使之能实现不同的排序算法(3种以上),再编写一个通用输出函数,(要求用函数指针做参数)能分别打印不同排序算法的结果。
(三)链表的操作(链表的建立,访问,删除链表指定结点,增加结点)建立一个动态链表,将学生数据(学号,成绩)存入链表结构中,实现链表的访问(求学生成绩的平均分,找到最高分,最低分,将其数据输出)。
删除指定学号的学生数据,对学生数据进行排序,分别在链表头部,中间,末尾插入学生数据。
(四)学生成绩文件管理定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩,输出三门课程的平均分数最高的学生的学号、姓名及其平均分,将10个学生的相关数据,存入文件中,再从文件中读出,按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件中,再从文件中读取第 1 ,3 , 5 ,7,9个学生的数据。
(五)学生成绩管理系统设计:数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。
要求具有以下功能:(1)添加、删除任意个记录。
C语言课程设计报告(学生成绩管理系统)

C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
c语言学生成绩排序

50 学生成绩排序成绩: 10 / 折扣: 0.8大家参加了期末考试,成绩出来后老师要对n个学生进行成绩汇总和排序。
要求程序按成绩降序进行排序。
在排序过程中对于成绩相同的学生,要按照输入数据的顺序进行排列。
例如:有5名学生的成绩:zha ng1,90zha ng2,91zha ng3,99zha ng4,91zha ng5,98则排序结果应该为:z hang3,99z hang5,98z hang2,91z hang4,91z hang1,90请注意例题中“zh ang2”和“zha ng4”的排列顺序。
输入:第一行为将要输入的学生数量n从第二行起后面连续n 行数据,每行为一名学生的姓名(长度不超过20个字符,不包括空格),考试成绩(int)输出:排序后的结果。
每行为一名学生的姓名和成绩。
测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1.5?2.zhan g1,90?3.z hang2,91?4.zha ng3,99?5.zhang4,91? 6.zh ang5,98?以文本方式显示1.zhan g3,99?2.z hang5,98?3.zha ng2,91?4.zhang4,91? 5.zh ang1,90?1秒64M0 测试用例 2以文本方式显示1.5?2.zhan g31,90? 3.zhang51,90?4.z hang2,90?5.zha ng42,90? 6.zhan g1,90?以文本方式显示1.z hang31,90?2.zh ang51,90?3.zha ng2,90?4.zhang42,90?5.z hang1,90?1秒64M0测试用例3以文本方式显示1.1?2.wan g,100?以文本方式显示1.w ang,100?1秒64M0 开启时间2012年05月21日星期一 12:00 折扣时间2012年05月 30日星期三23:55关闭时间2012年06月3日星期日23:55允许迟交:是#i nclud e<std io.h>#inc lude<strin g.h>#incl ude<m ath.h>typ edefstruc t stu dent{int scor e;ch ar na me[20];}s tuden t;vo id sw ap(st udent * s1,stud ent * s2){cha r nam etemp[20];strc py(na metem p,s1->name);st rcpy(s1->n ame,s2->na me);strcp y(s2->name,name temp);int temp;tem p=s1->scor e;s1->sco re=s2->sco re;s2->sc ore=t emp;}voi d sor t(stu dentstu[],intn){int i,j;f or(i=0;i<n;i++)for(j=0;j<n-1;j++){if(stu[j].sco re<st u[j+1].sco re){swap(&stu[j],&stu[j+1]);}el se if(stu[j].sc ore==stu[j+1].s core) {if(strc mp(st u[j].name,stu[j+1].n ame)>0) {swap(&stu[j],&s tu[j+1]);}}}}vo id in put(s tuden t * s){c har s tring[30];gets(stri ng);int n,i,j;n=st rlen(strin g);f or(i=0;i<n;i++){if(stri ng[i]==','){s->name[i]='\0';br eak;}s->n ame[i]=str ing[i];}s->sc ore=0;int temp;j=n-(i+1)-1;for(i++;i<n;i++,j--){te mp=(i nt)st ring[i]-48;s->score= s->score+ tem p *(i nt)po w(10.0,j); }}voidmain(){i nt n,i;st udent stu[20];scanf("%d\n",&n);fo r(i=0;i<n;i++){inp ut(&s tu[i]);}sort(stu,n);fo r(i=0;i<n;i++){pri ntf("%s,%d\n",s tu[i].name,stu[i].sc ore); }}。
学生成绩排名(用C编写)

学生成绩排名一直想用C语言做一个简单的学生成绩排名的程序,但碍于水平有限,看了很久的书,参考了很多资料,用了很长时间才写出这么一个程序.现在我把做这个程序的过程写出来,都是些很基本的东西,希望对刚接触C语言的人有一点点的帮助.我要实现的功能:我有两组成绩,分别是数学和英语,我要按照分数的高低从高到低排列分数;并且后面要跟上学号,也就是说学号跟成绩是搭配在一起排序的.我的设想:做成一个有下拉的菜单但水平不够,暂时只能做个文字提示性的菜单,形如:Press 1 for MathPress 2 for EnglishOther numbers for Exit我按1,排列数学成绩并显示出来,我按2排列英语成绩并显示出来,按其他数字退出运行.我先试验了一下,用了三个数充当学生成绩,程序如下:#include <stdio.h>void main(){int n;int t;int a;int b;int c;while(1){printf("Press 1 for Math\nPress 2 for English\nOther numbers for Exit\n Your choice:");scanf("%d",&n);if(n==1){printf("input:\n");scanf("%d,%d,%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=c;c=a;a=t;}if(b>c){t=b;b=c;c=t;}printf("%d,%d,%d\n",a,b,c);}else if(n==2){printf("Input:\n");scanf("%d,%d,%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=c;c=a;a=t;}if(b>c){t=b;b=c;c=t;}printf("%d,%d,%d\n",a,b,c);}elsebreak;}}运行结果符合我的预想(我用TC2.01英文版,输入成绩时以下面这种方式,如:2 6 3 8,不要2,6,3,8,否则出错),然后我就开始在此基础上改进这个程序,把学生成绩增加到10个,用数组存储这些成绩,排名时把学号也带上一起排,排序方法用冒泡排序法.程序代码如下:#include <stdio.h>void main(){int n,t,k,i,j;int M[10];int E[10];int Num[10];while(1){printf("Press 1 for Math\nPress 2 for English\nOther numbers for Exit\n\nYour choice:");/*打印出1 for Math 2 for English*/scanf("%d",&n); /*接收输入的数字*/if(n==1){printf("Input students' scores:\n"); /*输入各个学生分数*/for(k=0;k<10;k++)scanf("%d",&M[k]);printf("Input students' numbers:\n"); /*输入对应的学生学号*/for(k=0;k<10;k++)scanf("%d",&Num[k]);printf("\n");for(i=0;i<9;i++) /*按分数高到低排序,冒泡排序法*/{for(j=0;j<9-i;j++){if(M[j]<M[j+1]) /*没有写成绩相等时的情况,相等时不做处理,按输入时的顺序输出*/{t=M[j];M[j]=M[j+1];M[j+1]=t;t=Num[j]; /*分数排序的同时把学号也调换*/Num[j]=Num[j+1];Num[j+1]=t;}}}printf("Score Number\n");for(k=0;k<10;k++){printf("%d %d\n",M[k],Num[k]);}printf("\n");}else if(n==2){printf("Input students' scores:\n");for(k=0;k<10;k++)scanf("%d",&E[k]);printf("Input students' numbers:\n");for(k=0;k<10;k++)scanf("%d",&Num[k]);printf("\n");for(i=0;i<9;i++){for(j=0;j<9-i;j++){if(E[j]<E[j+1]){t=E[j];E[j]=E[j+1];E[j+1]=t;t=Num[j];Num[j]=Num[j+1];Num[j+1]=t;}}}printf("Score Number\n");for(k=0;k<10;k++){printf("%d %d\n",E[k],Num[k]);}printf("\n");}else /*按其他数字退出程序运行*/break;}}运行后达到了我想要的效果,只是菜单有点不太满意,我会改进这个版本的.我说过我是一个初学者,如果您也是一个初学者,欢迎跟我交流.。
C语言排序学生成绩

char str[10];
一维字符数组str
char s1[3][5]; 二维字符数组s1
任务4 输入/输出学生
4.4.1 字符数组
1 一维字符数组的初始化
(1)用字符常数初始化
Example
char c[ ]={‘C’,’h’,’i’,’n’,’a’,’\0’}; 初始化后:
C h i n a \0
Байду номын сангаас
任务4 输入/输出学生
4.4.1 字符数组
1 一维字符数组的初始化
(2)直接用字符串常量初始化
Example
char c[ ]={“China”}; char c[ ]=“China”; 初始化后:
C h i n a \0
任务4 输入/输出学生
4.4.1 字符数组
2 二维字符数组的初始化
(1)用字符常数初始化
}
int a[ ][2]={1,2,3,4,5,6,7,8};
任务4 输入/输出学生
一个班上50位学生参与考试,需要 输入/输出学生的姓名信息。这个任 务需要解决多个字符的存放问题。
任务4 输入/输出学生
4.4.1 字符数组
一维字符数组 1 char 数组名[常量表达式];
二维字符数组 2
char 数组名[常量表达式1][常量表达式2];
任务1 输入/输出多个学生一门
课程的成绩
4.1.2 一维数组的引用
输入5个学生的数学成绩,计算平均分,将平均分
输出到屏幕上。
数组元素的地址也
void main()
是通过“&”运算符
{
得到的。
int i,mathScore[5],sum=0;float average;
C语言程序设计_课程实践

出,第二是计算每个同学的三门课的平均分,第三是按平均分的高低排序后输出成绩单。所以将这
一项目分成三个任务介绍:任务1是用结构体数组进行学生信息的输入输出;任务2是求平均分最高 学生的学号、姓名;任务3是输出学生排序后的成绩单。
项目6:学生成绩文件管理
项目要求
将一个班40个同学的相关数据,存入文件中,再从文件中读出,并将此数 据按照平均分数从高到低进行排序后输出在屏幕上和另一文件中。 项目分析 要完成学生成绩的文件管理,第一必须要了解文件的概念,然后学会文件 的打开与关闭;第二必须会对文件进行读取与写入。所以,将这一项目分 成二个任务介绍。任务一是将学生成绩顺序读写到文件中;任务二是学生 成绩随机读写到文件中。
例如:输入1000005008.9978 输出为:壹拾亿伍仟零玖元整 输入1000005008.902 输出为:壹拾亿伍仟零捌元玖角整 输入1000005008.906 输出为:壹拾亿伍仟零捌元玖角壹分
项目9:注册登录问题
• 编写登录程序,用户的名称和密码存放在一文件中,用 户登录时输入名称和密码,由系统自劢检查是否存在此 用户、密码是否正确,若名称和密码均正确,则登录成 功,若不正确,可以提供三次修改机会。要求:1. 为 了进行登录,还要编写注册程序(输入管理员密码,正 确则允许管理员增加新用户,错误则提供三次修改机会
项目5:学生成绩单制作
项目要求 在键盘中读入一个班学生的相 关数据(学号,姓名,三门课的 成绩),输出按照平均分数从高 到低进行排序后的成绩单。 程序的运行要求是:(程序运行 时为了方便,只输入五个学生记 录)
项目分析 要完成学生成绩单的制作,虽然可以用前面的项目四中的数组解决,但是如果用结构体数组会 显得更科学。所以在本项目中将用结构体数组进行操作。具体步骤是:首先进行学生信息的输入输
C++学生成绩排名系统课程设计(附源码)

河南城建学院C++语言课程设计报告书专业:信息管理与信息系统课程设计名称:《面向对象程序设计》题目:学生成绩排名系统班级:0834131设计者学号:设计者姓名:同组人员:指导老师:张妍琰郭力争完成时间:2015 年1月9 日目录目录 (1)第一章开发环境和开发工具 (1)1.1 C++简介 (1)1.2 开发背景 (1)1.3 开发环境 (2)第二章设计目的与实现 (3)2.1 系统需求分析 (3)2.2系统功能分析 (3)2.3系统总体设计 (4)2.3.1编写要求 (4)2.3.2开发设计思想 (4)2.3.3系统功能模块分析与设计 (5)2.4程序实现流程 (5)2.5成绩统计模块算法思想 (7)第三章测试与分析 (9)3.1数据显示 (9)3.2结果分析 (9)总结 (11)心得体会 (12)参考文献 (13)第一章开发环境和开发工具1.1C++简介C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。
当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class 关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。
C++应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。
它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。
C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。
它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误.1.2开发背景随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。
PTA(C语言)学生成绩排序

PTA(C语⾔)学⽣成绩排序假设学⽣的基本信息包括学号、姓名、三门课程成绩以及个⼈平均成绩,定义⼀个能够表⽰学⽣信息的结构类型。
输⼊n(n<50)个学⽣的成绩信息,按照学⽣的个⼈平均分从⾼到低输出他们的信息。
如果平均分相同,按输⼊的先后顺序排列。
输⼊格式:输⼊⼀个正整数n(n<50),下⾯n⾏输⼊n个学⽣的信息,包括:学号、姓名、三门课程成绩(整数)。
输出格式:输出从⾼到低排序后的学⽣信息,包括:学号、姓名、平均分(保留两位⼩数)。
输⼊样例:3101 Zhang 78 87 85102 Wang 91 88 90103 Li 75 90 84输出样例:102,Wang,89.67101,Zhang,83.33103,Li,83.00#include <stdio.h>#define N 51struct st{long num;char name[10];int yw; //三门成绩int sx;int yy;double average;}ST[N];int main(){int i,n;int j,k;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d %s %d %d %d",&ST[i].num,ST[i].name,&ST[i].yw,&ST[i].sx,&ST[i].yy);ST[i].average=(((double)ST[i].yw+ST[i].sx+ST[i].yy)/3);}for(j=0;j<N-1;j++){for(k=j+1;k<N-1;k++)if(ST[j].average<ST[k].average) //⽐较⼤⼩{ST[50]=ST[j];ST[j]=ST[k];ST[k]=ST[50];}}for(i=0;i<n;i++){printf("%d,%s,%.2lf\n",ST[i].num,ST[i].name,ST[i].average); //输出成绩}}。
C语言课程设计排名分档优秀之类的程序和流程图

for(i=0;i<N;i++)
{
fprintf(fp,"%d\t%s\t%d\t%d\t%d\t%5.2f\t%10d\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].average,stu[i].ranking);
printf("%s\t%s\t%s\t%s\n","分数段","数学","英语","物理");
fprintf(fp,"<60\t%d\t%d\t%d\n",count[0][0],count[0][1],count[0][2]);
printf("<60\t%d\t%d\t%d\n",count[0][0],count[0][1],count[0][2]);
层次图:
图1层次图
二、流程图
从文件中读取数据:
计算平均分及排名:
图4计算平均分及排名
计算每门平均分:
N
Y
Y
N
Y
Y
图5计算每门平均分
打印学生分数条:
图6学生分数条
打印不及格学生信息
图7不及格学生信息
打印优秀学生信息
图8打印优秀学生信息
三、
#include<stdio.h>
#include<stdlib.h>
}
for(i=0;i<N;i++)
C语言程序设计项目四学生成绩的排序

for(i=0;i<N;i++)
scanf("%d",&score[i]);
printf(" 按逆序输出本班同学的成绩:");
for(i=N-1;i>=0;i--)
printf("%3d",score[i]); }
注:为了程序运行方便,假设只有10人
三、相关知识
【例4-11】输入10 个数存入一维数组,然后再按逆序重新存放后输出。
分析:定义一个一维数组int a[10],用一个循环将10个数输 入。然后a[0]与a[9]交换,a[1] 与a[8],a[2]与a[7],a[3]与a[6], a[4]与a[5],即a[i]与a[9-i]交换 (i=0到(10-1)/2),最后输出a[0] 至a[9]即可。
【例4-9】以下程序运行后的输出结果是 ______ 。 #include "stdio.h" main() { int p[7]={11,13,14,15,16,17,18}; int i=0,j=0; while(i<7 && p[i]%2==1 )j+=p[i++]; printf("%d\n",j);}
分析:int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}是定义了一个整型数组a,一共有12个元素, 其下标的范围是0-11,即a[0]、a[1]…a[11],所以B是正确的。 答案为:B
三、相关知识
【例4-7】若有以下说明,则数值为4的表达式是( )。 INT A[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; CHAR C=’A’, D, G ; A. A[G-C] B. A[4] C. A['D'-'C'] D. A['D'-C]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程设计题目:根据条件进行学生成绩排序
学号:
姓名:
专业:
班级:
指导教师:
2012年6月24日
目录
(一)实验题目 (3)
(二)实验目的 (3)
(三)实验要求 (3)
(四)实验思路 (3)
(五)实验过程 (5)
(六)实验调试与结果 (8)
(七)实验小结 (8)
一.实验题目
根据条件进行学生成绩排序
(1)定义数组用以存放学生的成绩;
(2)在函数中进行5个学生成绩从高到低排序 sort1(int a[5]);
(3)改进第一步的函数为sort2(int a[],int n),进行n个学生成绩从高到低排序;
(4)改进第二步的函数为sort3(int a[],int n, char style), 将n个学生成绩排序,排名方式根据style参数进行,如style为‘a’按升序排,style 为’d’按降序排;
(5)将以上每一步骤的结果均输出,验证程序是否实现题目要求。
二.实验目的
本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体等相关内容的综合应用,使学生能进一步熟悉掌握C语言的基本语法,进一步提升编程能力并逐步培养编程思维,进而不断提高学生解决问题的能力,并为以后的语言学习打下良好的基础。
三.实验要求
1.要求我们独立完成课程设计的主要内容;
2. 按照实验课表安排进行,不得无故旷课;
3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据个人兴趣选做其它题目;
4.严格按照报告格式撰写课程设计报告;
5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。
四.实验思路
1.整体思路
2.程序流程图
五.实验过程
源程序清单
#include<stdio.h>
//sort1是进行5个学生成绩从高到低排序
void sort1(int a[5])
{
int i,j,k,t;
for(i=0;i<4;i++)
{ k=i;
for(j=i+1;j<5;j++)
if(a[j]>a[k]) k=j;
t=a[k];a[k]=a[i];a[i]=t;}
}
//sort2是进行n个学生成绩从高到低排序
void sort2(int b[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(b[j]>b[k])k=j;
t=b[i];b[i]=b[k];b[k]=t;}
}
//sort3是进行n个学生成绩排序,同时指定其style的类型void sort3(int c[],int n,char style)
{
int i,j,k,t;
if (style=='a') //学生成绩从低到高排序
{for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(c[k]>c[j])k=j;
t=c[i];c[i]=c[k];c[k]=t;}}
else if(style=='d') //学生成绩从高到低排序
{for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(c[j]>c[k])k=j;
t=c[i];c[i]=c[k];c[k]=t;}}
}
//主函数
void main()
{
int a[5],b[100],c[100],h,l,i,j,g;
printf("排序方法:选择排序法\n******请输入5个学生的成绩******\n"); for(i=0;i<5;i++)
scanf("%d",&a[i]); //输入5个学生的成绩
sort1(a); //调用sort1函数
printf("1.排序以后的成绩顺序:\n");
for(i=0;i<5;i++)
printf("%3d",a[i]);
printf("\n\n");
printf("************************************************************ *******************\n");
printf("\n");
printf("******g为学生人数******\n请输入g的值:\n");
scanf("%d",&g);
printf("\n");
printf("请输入g个学生的成绩:\n");
for(j=0;j<g;j++)
scanf("%d",&b[j]); //输入g个学生的成绩
sort2(b,g); //调用sort2函数printf("2.排序以后的成绩顺序:\n");
for(j=0;j<g;j++)
printf("%3d",b[j]);
printf("\n\n");
printf("************************************************************ *******************\n");
printf("\n");
printf("******h为学生人数******\n请输入h的值:\n");
scanf("%d",&h);
printf("请输入h个学生的成绩:\n");
for(l=0;l<h;l++)
scanf("%d",&c[l]); //输入h个学生的成绩
sort3(c,h,'a'); //调用sort3函数 printf("3.升序排序以后的成绩顺序:\n");
for(l=0;l<h;l++)
printf("%3d",c[l]);
printf("\n");
printf("******h为学生人数******\n请输入h个学生的成绩:\n");
for(l=0;l<h;l++)
scanf("%d",&c[l]);
sort3(c,h,'d'); //调用sort3函数 printf("3.降序排序以后的成绩顺序:\n");
for(l=0;l<h;l++)
printf("%3d",c[l]);
printf("\n");
}
六、执行结果
七、实验小结
通过本次课程设计,增加我对C的认识,也更加了解C,但是还有很多不足,在处理字符串操作的实验中,字符串查找、字符串排序,还是不会,只能借鉴,自己还需加强,多操作、同时也让我了解C用处,自己要多看看书上机操作,同时也提高了自己的编程能力。