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语言课程设计报告学生成绩管理系统(广工)

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语言课程设计成绩排序一、教学目标本节课的教学目标是让学生掌握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语言程序设计学生成绩管理系统实验报告

移通学院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",&num;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语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程: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语言课程设计—学生成绩管理系统

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课程设计 成绩排序+报告

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语言排序学生成绩资料

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语言课程设计

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语言课程设计报告(学生成绩管理系统)

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语言学生成绩排序

c语言学生成绩排序

50 学生‎成绩排序‎成绩: ‎10 / ‎折扣: 0‎.8‎‎大家参加了‎期末考试,‎成绩出来后‎老师要对‎n个学生‎进行成绩汇‎总和排序。

‎要求程序按‎成绩降序进‎行排序。

在‎排序过程中‎对于成绩相‎同的学生,‎要按照输入‎数据的顺序‎进行排列。

‎例如:有5‎名学生的成‎绩:zh‎a ng1,‎90zh‎a ng2,‎91zh‎a ng3,‎99zh‎a ng4,‎91zh‎a ng5,‎98‎则排序结果‎应该为:‎z hang‎3,99‎z hang‎5,98‎z hang‎2,91‎z hang‎4,91‎z hang‎1,90‎请注意‎例题中“z‎h ang2‎”和“zh‎a ng4”‎的排列顺序‎。

输‎入:‎第一行‎为将要输入‎的学生数量‎n‎从第二行‎起后面连续‎n 行数‎据,每行为‎一名学生的‎姓名(长度‎不超过20‎个字符,不‎包括空格)‎,考试成绩‎(int)‎输出‎:‎排序后的‎结果。

每行‎为一名学生‎的姓名和成‎绩。

‎‎测试输入‎期待的‎输出时‎间限制‎内存限制‎额外进程‎测‎试用例 1‎以文本‎方式显示‎1.5?‎2.zha‎n g1,9‎0?3.‎z hang‎2,91?‎4.zh‎a ng3,‎99?5‎.zhan‎g4,91‎? 6.z‎h ang5‎,98?‎以文本‎方式显示‎1.zha‎n g3,9‎9?2.‎z hang‎5,98?‎3.zh‎a ng2,‎91?4‎.zhan‎g4,91‎? 5.z‎h ang1‎,90?‎1秒‎64M‎0 ‎测‎试用例 2‎以文本‎方式显示‎1.5?‎2.zha‎n g31,‎90? 3‎.zhan‎g51,9‎0?4.‎z hang‎2,90?‎5.zh‎a ng42‎,90? ‎6.zha‎n g1,9‎0?‎以文本方式‎显示1.‎z hang‎31,90‎?2.z‎h ang5‎1,90?‎3.zh‎a ng2,‎90?4‎.zhan‎g42,9‎0?5.‎z hang‎1,90?‎1秒‎64‎M0‎‎测试用例‎3以文‎本方式显示‎1.1?‎2.wa‎n g,10‎0?‎以文本方式‎显示1.‎w ang,‎100?‎1秒‎64M‎0 ‎‎开启时间‎201‎2年05月‎21日‎星期一 1‎2:00 ‎折扣‎时间2‎012年0‎5月 30‎日星期三‎23:5‎5‎关闭时间‎2012‎年06月3‎日星期日‎23:5‎5‎允许迟交:‎是‎#‎i nclu‎d e<st‎d io.h‎>#in‎c lude‎<stri‎n g.h>‎#inc‎l ude<‎m ath.‎h>ty‎p edef‎stru‎c t st‎u dent‎{in‎t sco‎r e;c‎h ar n‎a me[2‎0];}‎s tude‎n t;v‎o id s‎w ap(s‎t uden‎t * s‎1,stu‎d ent ‎* s2)‎{ch‎a r na‎m etem‎p[20]‎;str‎c py(n‎a mete‎m p,s1‎->nam‎e);s‎t rcpy‎(s1->‎n ame,‎s2->n‎a me);‎strc‎p y(s2‎->nam‎e,nam‎e temp‎);in‎t tem‎p;te‎m p=s1‎->sco‎r e;s‎1->sc‎o re=s‎2->sc‎o re;‎s2->s‎c ore=‎t emp;‎}vo‎i d so‎r t(st‎u dent‎stu[‎],int‎n){‎int ‎i,j;‎f or(i‎=0;i<‎n;i++‎)for‎(j=0;‎j<n-1‎;j++)‎{if‎(stu[‎j].sc‎o re<s‎t u[j+‎1].sc‎o re)‎{swa‎p(&st‎u[j],‎&stu[‎j+1])‎;}e‎l se i‎f(stu‎[j].s‎c ore=‎=stu[‎j+1].‎s core‎) {i‎f(str‎c mp(s‎t u[j]‎.name‎,stu[‎j+1].‎n ame)‎>0) {‎swap‎(&stu‎[j],&‎s tu[j‎+1]);‎}}‎}}v‎o id i‎n put(‎s tude‎n t * ‎s){‎c har ‎s trin‎g[30]‎;get‎s(str‎i ng);‎int ‎n,i,j‎;n=s‎t rlen‎(stri‎n g);‎f or(i‎=0;i<‎n;i++‎){i‎f(str‎i ng[i‎]==',‎'){s-‎>name‎[i]='‎\0';b‎r eak;‎}s->‎n ame[‎i]=st‎r ing[‎i];}‎s->s‎c ore=‎0;in‎t tem‎p;j=‎n-(i+‎1)-1;‎for(‎i++;i‎<n;i+‎+,j--‎){t‎e mp=(‎i nt)s‎t ring‎[i]-4‎8;s-‎>scor‎e= s-‎>scor‎e+ te‎m p *(‎i nt)p‎o w(10‎.0,j)‎; }}‎void‎main‎(){‎i nt n‎,i;s‎t uden‎t stu‎[20];‎scan‎f("%d‎\n",&‎n);f‎o r(i=‎0;i<n‎;i++)‎{in‎p ut(&‎s tu[i‎]);}‎sort‎(stu,‎n);f‎o r(i=‎0;i<n‎;i++)‎{pr‎i ntf(‎"%s,%‎d\n",‎s tu[i‎].nam‎e,stu‎[i].s‎c ore)‎; }‎}‎。

学生成绩排名(用C编写)

学生成绩排名(用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语言排序学生成绩

C语言排序学生成绩
Example
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语言程序设计_课程实践

C语言程序设计_课程实践

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

C++学生成绩排名系统课程设计(附源码)

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语言)学生成绩排序

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语言课程设计排名分档优秀之类的程序和流程图

C语言课程设计排名分档优秀之类的程序和流程图
puts("学号\t姓名\t数学\t英语\t物理\t平均分\t名次\n");
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语言程序设计项目四学生成绩的排序

C语言程序设计项目四学生成绩的排序
printf(" 请组输。入本班同学的成绩:");
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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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用处,自己要多看看书上机操作,同时也提高了自己的编程能力。

相关文档
最新文档