c语言课程设计目的计

文档贡献者
该文档贡献者很忙,什么也没留下。
下载此文档
正在努力加载中...
c语言课程设计案例精编40例
文档星级:
内容提示:C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。本文档收录了四十例c语言课程设计程序,内容丰富。
文档格式:PDF|
浏览次数:4057|
上传日期: 11:18:54|
下载积分:
该用户还上传了这些文档
官方公共微信
下载文档:c语言课程设计案例精编40例.PDFC语言课程设计2012_中华文本库
第21页/共22页
文本预览:
院、系: 专业名称: 课程设计科目 所在班级: 学生学号: 学生姓名: 指导教师: 完成时间:
吉林大学珠海学院计算机科学与技术系
C 语言程序课程设计
2012 年 3 月-5 月
(课程设计报告正文部分)
题目(三号,黑体,居中,根据你所做的问题自己选定)
(空一行)
一、设计任务与目标(标题均为小三号,宋体)
(正文均为小四号,宋体,行距 1.5 倍) (对所选择题目进行分析论证, 简要说明此类问题的已有类似工作, 我要完成时准备做那些 改进,既说明完成此设计的目的意义。列出我进行本设计时要达到的具体的目标。 )
二、方案设计与论证
(对设计目标进行总体分析,说明要采用的基本思路,说明遇到的问题和解决方法。说明完 成本次课程设计的完整过程。 要描述程序的设计思想, 重点描述你自己提出的与已有工作不 同的程序设计思想。 )
三、程序框图或流程图,程序清单与调用关系
(画出本次课程设计完整的程序框图或流程图,程序基本框架结构图可以采用 WORD 中的 自选图形绘制,列出所有编写的函数清单,说明每个函数的功能,各形式参数的意义,画出 各函数的调用关系图。)
四、全部源程序清单
(给出本次课程设计中我本人所编写源程序已经调试好的可运行代码清单, 注意只需给出 本人编写部分的代码清单, 系统自动生成部分不必列出。 从书中或从参考文献中找到的代码 也不必列出,只需要标明作者、书名或参考文献名及页码。字体可以用宋体,五号,每个程 序开头用注释文字说明此程序的用途和大体工作过程, 程序中必要部分也要加入足够多的注 释行。)
五、程序运行结果测试与分析
(要针对程序处理的不同情况列出有代表性的输入和输出,用对应前面的设计任务和目标, 给出足够多的实例,说明程序完成了所提出的设计任务和目标。 )
六、结论与心得
(主要说明程序调试中发现的问题和解决办法,包括你学到了什么,哪里遇到了困难,解决 的办法,可能但因时间关系没有来得及完成的想法,今后的目标等。)
七、参考资料
(用五号,宋体,按照规范格式列出。要列出在完成设计中查看过并有所利用的所有参考资 料,包括各类技术书籍、期刊论文和相关网页的网址。注意你看过但没有利用的资料不要列
入,要能够回答你列出资料中的相关问题。规范格式举例如下: [1] 谭浩强等编著,C 语言程序设计,北京:清华大学出版社,123-126 页、234-237 页。 )
(如果你参考了同学的程序,要真诚地表示感谢。如果你参考了一些书籍上或网页上 的程序,也要真诚地向作者表示
第21页/共22页
寻找更多 ""C语言程序设计_中国大学MOOC(慕课)
C语言程序设计
程序设计是一门基础课程。对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯;对于非计算机专业而言,程序设计的学习有助于理解计算机的能力所在,理解哪些是计算机擅长解决的问题,怎样的方式方法是计算机擅长的手段,从而能更好地利用计算机来解决本专业领域内的问题。C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。对于非计算机专业的学生,学习本课程的主要目的是掌握程序设计的基本方法,C语言是教学媒介。但是对于计算机专业的学生,本课程是向后续的计算机组成、操作系统、编译原理、体系结构等课程前进的基石,对于C语言本身甚至程序设计语言基础原理的深入理解都是应该掌握的。程序设计是实践性很强的课程,该课程的学习有其自身的特点,听不会,也看不会,只能练会。你必须通过大量的编程训练,在实践中掌握编程知识,培养编程能力,并逐步理解和掌握程序设计的思想和方法。在这里所提供的,只是基础的知识讲解,要想学会编程,还需要更多时间的投入和努力。为了学习编程,你需要有一台计算机,安装必要的编程软件。无论是MS Windows、Mac OS X还是Linux,都有适合C语言编程的软件。
证书要求 课程的总分(平时测验和期末考试各占50%)达到60分以上,在线期末试卷也达到60分以上,可以获得本课程的合格证书。课程的在线期末试卷达到60分以上,并且在课程结束后的24个月内,参加PAT(编程能力测试,&),只以C语言答题,甲级获得20分及以上,乙级获得40分及以上者,在获得PAT证书之后,可以获得本课程的优秀证书。PAT每年会有三次考试,分别在3月、8月和11月左右举行,目前在全国有12个城市有PAT的考场。PAT的成绩和证书在考试的当天就会公布。你只要在报名了PAT考试之后,通知我们你的报名考场,那么在考试通过的当天,我们就会给你发出证书。
预备知识 作为第一门编程课,本课程可以零基础学习。大学计算机(大学计算机基础、计算思维导论)等课程对于理解本课程的部分内容有帮助,但这些课程的学习不是必须的。
授课大纲 这是目前暂时公布的课程大纲。每周均为90分钟的课时内容。根据大家在讨论区的反应,我们会随时对大纲做出调整。第一周:介绍:计算机、程序和C语言第二周:计算:变量和表达式第三周:判断:分支结构第四周:循环第五周:循环控制第六周:数据类型和处理第七周:函数第八周:数组第九周:指针第十周:字符串第十一周:结构类型第十二周:程序结构第十三周:链表第十四周:文件
参考资料 何钦铭、颜晖,《C语言程序设计(第2版)》,高等教育出版社,2013年,ISBN 978-7-04-,购买网址:
常见问题 Q:我需要特殊版本的计算机吗?A:任何计算机都可以用于C语言编程,包括但不限于各个版本的MS Windows、各个版本的Mac OS X、各种发行版本的Linux。有的手机有app也能实现C语言编程,不过我们不推荐那么小的屏幕。Q:我需要安装特定的软件才能做这门课的作业吗?A:任何C语言的开发工具都可以。课程演示会使用Dev C++及命令行环境,但是你使用任何其他开发工具都不会影响做作业的正确性。可以使用的其他工具包括但不限于MS Visual Studio、C-Free等。Q:每周会发布多少时间的视频?我需要花多少时间来学习?A:我们按照90分钟的授课时间来设计课程。但是发布的视频肯定小于90分钟,一般在50到70分钟左右。因为在线下上课时,老师可能会回顾一下上周的内容、某些内容会看学生的反应重复几遍、会当堂问做一些提问,以及在各种软件等教学工具之间切换,这些都要花点时间,而这些在线上课程中都不存在了,所以视频的时间不会正好是90分钟。但是一般我们设计课程需要1:1.5到1:2的课后学习时间,这包括预习、作业、练习和复习的时间,所以每周大约需要花费三到五小时的时间。Q:有的课件内容前面有个*号是什么意思?A:这是参考课件,不是你必须看必须学的。比如,用来说明某个操作系统下需要如何编写程序的,或者针对计算机专业学生对某些问题的深入解释的。对这些问题的理解不会影响你的课程学习。
3-5小时/周
内容类型: 视频 文档 随堂测验 富文本 讨论
课程分类:
(C)2014 icourse163.org
京ICP备号-2 京公网安备-2c语言课程设计_百度知道
c语言课程设计
一、设计内容一个班级有4个学生,共学习5门课程(大学英语、高等数学、C语言程序设计、VB程序设计、大学语文)。要求编写程序完成相应功能。二、软件设计要求(1)[输入并保存]5门课程名称;(2)[输入并保存]4个学生的学号及其[个人相关信息];(3)[输入并保存]每个学生对应的每门课程成绩;(4)求出每门功课的平均分;(5)找出有两门以上功课不及格的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;(6)找出平均成绩在90分以上或者全部课程成绩在85分以上的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;(7)计算每位学生的总分,并按总分进行排名,按由高到低输出他们的学号及总成绩;(8)对前面问题进行优化,即在一维数驵的基础上,考虑采用二维数组、函数及其参数传递的方式来解决相关问题;(9)依照教材上华氏温度和摄氏温度的转换例子,编程实现菜单功能选择及退出功能。*(10)对前面问题进行优化,在学号的基础上,增加学生的其它个人信息,包括:学号、姓名、年龄、性别,并采用结构体形式加以表示;
字数受限,只能打这多了或看看这个 &stdio.h&
#include &stdlib.h&
#include &string.h&
#include &conio.h&
#include &mem.h&
#include &ctype.h&
/#include &alloc.h&
#define N 3
typedef struct z1
char no[11];
char name[15];
int score[N];
struct z1 * }STUDENT;STUDENT
STUDENT *create();
STUDENT *delete(STUDENT *h);
void print(STUDENT *h);
/* 显示所有记录*/void search(STUDENT *h);
/*查找*/void save(STUDENT *h);
/*保存*/STUDENT *load();
/*读入记录*/void computer(STUDENT *h);
/*计算总分和均分*/STUDENT *insert(STUDENT *h);
/*插入记录*/void append();
/*追加记录*/void copy();
/*复制文件*/STUDENT *sort(STUDENT *h);
/*排序*/STUDENT *index(STUDENT *h);
/*索引*/void total(STUDENT *h);
/*分类合计*/int menu_select();
/*菜单函数*//******主函数开始*******/main(){
/*链表定义头指针*/
head=init();
/*初始化链表*/
/*无限循环*/
switch(menu_select())
/*调用主菜单函数,返回值整数作开关语句的条件*/
/*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();
case 1:head=create();
case 2:head=delete(head);
case 3:print(head);
/*显示全部记录*/
case 4:search(head);
/*查找记录*/
case 5:save(head);
/*保存文件*/
case 6:head=load();
/*读文件*/
case 7:computer(head);
/*计算总分和均分*/
case 8:head=insert(head); /*插入记录*/
case 9:copy();
/*复制文件*/
case 10:head=sort(head);
case 11:append();
/*追加记录*/
case 12:head=index(head);
case 13:total(head);
/*分类合计*/
case 14:exit(0);
/*如菜单返回值为14程序结束*/
}}/*菜单函数,返回值为整数*/menu_select(){
char *menu[]={&***************MENU***************&,
/*定义菜单字符串数组*/
& 0. init list&,
/*初始化*/
& 1. Enter list&,
/*输入记录*/
& 2. Delete a record from list&,
/*从表中删除记录*/
& 3. print list &,
/*显示单链表中所有记录*/
& 4. Search record on name&,
/*按照姓名查找记录*/
& 5. Save the file&,
/*将单链表中记录保存到文件中*/
& 6. Load the file&,
/*从文件中读入记录*/
& 7. compute the score&,
/*计算所有学生的总分和均分*/
& 8. insert record to list &,
/*插入记录到表中*/
& 9. copy the file to new file&,
/*复制文件*/
& 10. sort to make new file&,
& 11. append
record to file&,
/*追加记录到文件中*/
& 12. index on nomber&,
& 13. total on nomber&,
/*分类合计*/
& 14. Quit&};
char s[3];
/*以字符形式保存选择号*/
/*定义整形变量*/
gotoxy(1,25);
/*移动光标*/
printf(&press any key enter menu......\n&);
/*压任一键进入主菜单*/
/*输入任一键*/
/*清屏幕*/
gotoxy(1,1);
/*移动光标*/
textcolor(YELLOW);
/*设置文本显示颜色为黄色*/
textbackground(BLUE);
/*设置背景颜色为蓝色*/
gotoxy(10,2);
/*移动光标*/
putch(0xc9);
/*输出左上角边框┏*/
for(i=1;i&44;i++)
putch(0xcd);
/*输出上边框水平线*/
putch(0xbb);
/*输出右上角边框
for(i=3;i&20;i++)
gotoxy(10,i);putch(0xba);
/*输出左垂直线*/
gotoxy(54,i);putch(0xba);
/*输出右垂直线*/
gotoxy(10,20);putch(0xc8);
/*输出左上角边框┗*/
for(i=1;i&44;i++)
putch(0xcd);
/*输出下边框水平线*/
putch(0xbc);
/*输出右下角边框┛*/
window(11,3,53,19);
/* 制作显示菜单的窗口,大小根据菜单条数设计*/
for(i=0;i&16;i++)
/*输出主菜单数组*/
gotoxy(10,i+1);
cprintf(&%s&,menu[i]);
textbackground(BLACK);
/*设置背景颜色为黑色*/
window(1,1,80,25);
/*恢复原窗口大小*/
gotoxy(10,21);
/*移动光标*/
printf(&\n
Enter you choice(0~14):&);
/*在菜单窗口外显示提示信息*/
scanf(&%s&,s);
/*输入选择项*/
c=atoi(s);
/*将输入的字符串转化为整形数*/
}while(c&0||c&14);
/*选择项不在0~14之间重输*/
/*返回选择项,主程序根据该数调用相应的函数*/}STUDENT *init(){
return NULL;}/*创建链表*/STUDENT *create(){
STUDENT *h=NULL,*
/* STUDENT指向结构体的指针*/
info=(STUDENT *)malloc(sizeof(STUDENT));
/*申请空间*/
/*如果指针info为空*/
printf(&\nout of memory&);
/*输出内存溢出*/
return NULL;
/*返回空指针*/
inputs(&enter no:&,info-&no,11);
/*输入学号并校验*/
if(info-&no[0]=='@')
/*如果学号首字符为@则结束输入*/
inputs(&enter name:&,info-&name,15); /*输入姓名,并进行校验*/
printf(&please input %d score \n&,N);
/*提示开始输入成绩*/
/*计算每个学生的总分,初值为0*/
for(i=0;i&N;i++)
/*N门课程循环N次*/
printf(&score%d:&,i+1);
/*提示输入第几门课程*/
scanf(&%d&,&info-&score[i]);
if(info-&score[i]&100||info-&score[i]&0)
printf(&bad data,repeat input\n&);
}while(info-&score[i]&100||info-&score[i]&0);
s=s+info-&score[i];
info-&sum=s;
info-&average=(float)s/N;
info-&order=0;
info-&next=h;
return(h);
/*返回头指针*/}/*输入字符串,并进行长度验证*/inputs(char *prompt, char *s, int count){
char p[255];
printf(prompt);
/*显示提示信息*/
scanf(&%s&,p);
if(strlen(p)&count)printf(&\n too long! \n&);
}while(strlen(p)&count);
strcpy(s,p); }void print(STUDENT *h){
/* 统计记录条数*/
STUDENT *p;
/*移动指针*/
/*初值为头指针*/
printf(&\n\n\n****************************STUDENT********************************\n&);
printf(&|rec|nO
| sc1| sc2| sc3|
|order|\n&);
printf(&|---|----------|---------------|----|----|----|--------|-------|-----|\n&);
while(p!=NULL)
printf(&|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n&, i, p-&no,p-&name,p-&score[0],p-&score[1],p-&score[2],p-&sum,p-&average,p-&order);
printf(&**********************************end*********************************\n&);}/*删除记录*/STUDENT *delete(STUDENT *h){
STUDENT *p,*q;
/*p为查找到要删除的结点指针,q为其前驱指针*/
char s[11];
/*存放学号*/
printf(&please deleted no\n&);
/*显示提示信息*/
scanf(&%s&,s);
/*输入要删除记录的学号*/
/*给q和p赋初值头指针*/
while(strcmp(p-&no,s)&&p!=NULL)
/*当记录的学号不是要找的,或指针不为空时*/
/*将p指针值赋给q作为p的前驱指针*/
/*将p指针指向下一条记录*/
if(p==NULL)
/*如果p为空,说明链表中没有该结点*/
printf(&\nlist no %s student\n&,s);
/*p不为空,显示找到的记录信息*/
printf(&*****************************have found***************************\n&);
printf(&|no
| sc1| sc2| sc3|
|order|\n&);
printf(&|----------|---------------|----|----|----|--------|-------|-----|\n&);
printf(&|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n&, p-&no,
p-&name,p-&score[0],p-&score[1],p-&score[2],p-&sum,
p-&average,p-&order);
printf(&********************************end*******************************\n&);
/*压任一键后,开始删除*/
/*如果p==h,说明被删结点是头结点*/
/*修改头指针指向下一条记录*/
q-&next=p-& /*不是头指针,将p的后继结点作为q的后继结点*/
/*释放p所指结点空间*/
printf(&\n have deleted No %s student\n&,s);
printf(&Don't forget save\n&);/*提示删除后不要忘记保存文件*/
return(h);
/*返回头指针*/}/*查找记录*/void search(STUDENT *h){
STUDENT *p;
char s[15];
printf(&please enter name for search\n&);
scanf(&%s&,s);
/*输入姓名*/
/*将头指针赋给p*/
while(strcmp(p-&name,s)&&p!=NULL)
/*当记录的姓名不是要找的,或指针不为空时*/
/*移动指针,指向下一结点*/
if(p==NULL)
/*如果指针为空*/
printf(&\nlist no %s student\n&,s);
/*显示没有该学生*/
/*显示找到的记录信息*/
printf(&\n\n*****************************havefound***************************\n&);
printf(&|nO
| sc1| sc2| sc3|
|order|\n&);
printf(&|----------|---------------|----|----|----|--------|-------|-----|\n&);
printf(&|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n&, p-&no,p-&name,p-&score[0],p-&score[1],p-&score[2],p-&sum,p-&average,p-&order);
printf(&********************************end*******************************\n&);
}}/*插入记录*/STUDENT
*insert(STUDENT *h){
STUDENT *p,*q,* /*p指向插入位置,q是其前驱,info指新插入记录*/
char s[11];
/*保存插入点位置的学号*/
printf(&please enter location
before the no\n&);
scanf(&%s&,s);
/*输入插入点学号*/
printf(&\nplease new record\n&);
/*提示输入记录信息*/
info=(STUDENT *)malloc(sizeof(STUDENT));
/*申请空间*/
printf(&\nout of memory&);
/*如没有申请到,内存溢出*/
return NULL;
/*返回空指针*/
inputs(&enter no:&,info-&no,11); /*输入学号*/
inputs(&enter name:&,info-&name,15); /*输入姓名*/
printf(&please input %d score \n&,N);
/*提示输入分数*/
/*保存新记录的总分,初值为0*/
for(i=0;i&N;i++)
/*N门课程循环N次输入成绩*/
/*对数据进行验证,保证在0~100之间*/
printf(&score%d:&,i+1);
scanf(&%d&,&info-&score[i]);
if(info-&score[i]&100||info-&score[i]&0)
printf(&bad data,repeat input\n&);
}while(info-&score[i]&100||info-&score[i]&0);
s1=s1+info-&score[i];
/*计算总分*/
info-&sum=s1;
/*将总分存入新记录中*/
info-&average=(float)s1/N;
/*计算均分*/
info-&order=0;
/*名次赋值0*/
info-&next=NULL;
/*设后继指针为空*/
/*将指针赋值给p*/
/*将指针赋值给q*/
while(strcmp(p-&no,s)&&p!=NULL)
/*查找插入位置*/
/*保存指针p,作为下一个p的前驱*/
/*将指针p后移*/
if(p==NULL)
/*如果p指针为空,说明没有指定结点*/
/*同时p等于h,说明链表为空*/
/*新记录则为头结点*/
info-&next=p;
info-&next=p;
printf(&\n ----have inserted %s student----\n&,info-&name);
printf(&---Don't forget save---\n&);
/*提示存盘*/
return(h);
/*返回头指针*/}/*保存数据到文件*/void save(STUDENT *h){
/*定义指向文件的指针*/
STUDENT *p;
/* 定义移动指针*/
char outfile[10];
/*保存输出文件名*/
printf(&Enter outfile name,for example c:\\f1\\te.txt:\n&); /*提示文件名格式信息*/
scanf(&%s&,outfile);
if((fp=fopen(outfile,&wb&))==NULL) /*为输出打开一个二进制文件,如没有则建立*/
printf(&can not open file\n&);
printf(&\nSaving file......\n&);
/*打开文件,提示正在保存*/
/*移动指针从头指针开始*/
while(p!=NULL)
/*如p不为空*/
fwrite(p,sizeof(STUDENT),1,fp);/*写入一条记录*/
/*指针后移*/
fclose(fp);
/*关闭文件*/
printf(&-----save success!!-----\n&);
/*显示保存成功*/}/* 从文件读数据*/STUDENT *load(){
STUDENT *p,*q,*h=NULL;
/*定义记录指针变量*/
/* 定义指向文件的指针*/
char infile[10];
/*保存文件名*/
printf(&Enter infile name,for example c:\\f1\\te.txt:\n&);
scanf(&%s&,infile);
/*输入文件名*/
if((fp=fopen(infile,&rb&))==NULL)
/*打开一个二进制文件,为读方式*/
printf(&can not open file\n&);
/*如不能打开,则结束程序*/
printf(&\n -----Loading file!-----\n&);
p=(STUDENT *)malloc(sizeof(STUDENT));
/*申请空间*/
printf(&out of memory!\n&);
/*如没有申请到,则内存溢出*/
/*返回空头指针*/
/*申请到空间,将其作为头指针*/
while(!feof(fp))
/*循环读数据直到文件尾结束*/
if(1!=fread(p,sizeof(STUDENT),1,fp))
/*如果没读到数据,跳出循环*/
p-&next=(STUDENT *)malloc(sizeof(STUDENT));
/*为下一个结点申请空间*/
if(!p-&next)
printf(&out of memory!\n&);
q-&next=NULL;
/*最后一个结点的后继指针为空*/
fclose(fp);
/*关闭文件*/
printf(&---You have success read data from file!!!---\n&);
/*返回头指针*/}/*追加记录到文件*/void append(){
/*定义指向文件的指针*/
/*新记录指针*/
char infile[10];
/*保存文件名*/
printf(&\nplease new record\n&);
info=(STUDENT *)malloc(sizeof(STUDENT));
/*申请空间*/
printf(&\nout of memory&);
/*没有申请到,内存溢出本函数结束*/
inputs(&enter no:&,info-&no,11);
/*调用inputs输入学号*/
inputs(&enter name:&,info-&name,15); /*调用inputs输入姓名*/
printf(&please input %d score \n&,N);
/*提示输入成绩*/
for(i=0;i&N;i++)
printf(&score%d:&,i+1);
scanf(&%d&,&info-&score[i]);
/*输入成绩*/
if(info-&score[i]&100||info-&score[i]&0)printf(&bad data,repeat input\n&);
}while(info-&score[i]&100||info-&score[i]&0); /*成绩数据验证*/
s1=s1+info-&score[i];
/*求总分*/
info-&sum=s1;
/*保存总分*/
info-&average=(float)s1/N;
/*求均分*/
info-&order=0;
/*名次初始值为0*/
info-&next=NULL;
/*将新记录后继指针赋值为空*/
printf(&Enter infile name,for example c:\\f1\\te.txt:\n&);
scanf(&%s&,infile);
/*输入文件名*/
if((fp=fopen(infile,&ab&))==NULL)
/*向二进制文件尾增加数据方式打开文件*/
printf(&can not open file\n&);
/*显示不能打开*/
/*退出程序*/
printf(&\n -----Appending record!-----\n&);
if(1!=fwrite(info,sizeof(STUDENT),1,fp))
/*写文件操作*/
printf(&-----file write error!-----\n&);
printf(&-----append
sucess!!----\n&);
fclose(fp);
/*关闭文件*/}/*文件拷贝*/void copy(){
char outfile[10],infile[10];
FILE *sfp,*
/*源和目标文件指针*/
STUDENT *p=NULL;
/*移动指针*/
printf(&Enter infile name,for example c:\\f1\\te.txt:\n&);
scanf(&%s&,infile);
/*输入源文件名*/
if((sfp=fopen(infile,&rb&))==NULL)
/*二进制读方式打开源文件*/
printf(&can not open input file\n&);
printf(&Enter outfile name,for example c:\\f1\\te.txt:\n&);
/*提示输入目标文件名*/
scanf(&%s&,outfile);
/*输入目标文件名*/
if((tfp=fopen(outfile,&wb&))==NULL)
/*二进制写方式打开目标文件*/
printf(&can not open output file \n&);
while(!feof(sfp))
/*读文件直到文件尾*/
if(1!=fread(p,sizeof(STUDENT),1,sfp)) /*块读*/
fwrite(p,sizeof(STUDENT),1,tfp);
fclose(sfp);
/*关闭源文件*/
fclose(tfp);
/*关闭目标文件*/
printf(&you have success copy
file!!!\n&);
/*显示成功拷贝*/}/*排序*/STUDENT *sort(STUDENT *h){
/*保存名次*/
STUDENT *p,*q,*t,*h1;
/*定义临时指针*/
/*将原表的头指针所指的下一个结点作头指针*/
h-&next=NULL;
/*第一个结点为新表的头结点*/
while(h1!=NULL)
/*当原表不为空时,进行排序*/
/*取原表的头结点*/
/*原表头结点指针后移*/
/*设定移动指针p,从头指针开始*/
/*设定移动指针q做为p的前驱,初值为头指针*/
while(t-&sum&p-&sum&&p!=NULL)
/*作总分比较*/
/*待排序点值小,则新表指针后移*/
/*p==q,说明待排序点值大,应排在首位*/
t-&next=p;
/*待排序点的后继为p*/
/*新头结点为待排序点*/
/*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/
t-&next=p;
/*t的后继是p*/
q-&next=t;
/*q的后继是t*/
/*已排好序的头指针赋给p,准备填写名次*/
while(p!=NULL)
/*当p不为空时,进行下列操作*/
/*结点序号*/
p-&order=i;
/*将名次赋值*/
/*指针后移*/
printf(&sort sucess!!!\n&);
/*排序成功*/
/*返回头指针*/}/*计算总分和均值*/void computer(STUDENT *h){
STUDENT *p;
/*定义移动指针*/
/*保存记录条数初值为0*/
/*总分初值为0*/
float average=0;
/*均分初值为0*/
/*从头指针开始*/
while(p!=NULL)
/*当p不为空时处理*/
/*累加总分*/
/*统计记录条数*/
/*指针后移*/
average=(float)s/i;/* 求均分,均分为浮点数,总分为整数,所以做类型转换*/
printf(&\n--All students sum score is:%ld
average is %5.2f\n&,s,average);}/*索引*/STUDENT *index(STUDENT *h){
STUDENT *p,*q,*t,*h1;
/*定义临时指针*/
/*将原表的头指针所指的下一个结点作头指针*/
h-&next=NULL;
/*第一个结点为新表的头结点*/
while(h1!=NULL)
/*当原表不为空时,进行排序*/
/*取原表的头结点*/
/*原表头结点指针后移*/
/*设定移动指针p,从头指针开始*/
/*设定移动指针q做为p的前驱,初值为头指针*/
while(strcmp(t-&no,p-&no)&0&&p!=NULL)
/*作学号比较*/
t-&next=p;
t-&next=p;
/*t的后继是p*/
q-&next=t;
/*q的后继是t*/
printf(&index sucess!!!\n&);
/*索引排序成功*/
/*返回头指针*/}/*分类合计*/void total(STUDENT *h){
STUDENT *p,*q;
/*定义临时指针变量*/
char sno[9],qno[9],*
/*保存班级号的*/
/*保存总分和均分*/
printf(&\n\n
*******************Total*****************\n&);
printf(&---class---------sum--------------average----\n&);
while(p!=NULL)
memcpy(sno,p-&no,8);
/*从学号中取出班级号*/
sno[8]='\0';
/*做字符串结束标记*/
/*将指针指向待比较的记录*/
/*当前班级的总分初值为该班级的第一条记录总分*/
/*当前班级的均分初值为该班级的第一条记录均分*/
/*统计当前班级人数*/
while(q!=NULL)
/*内循环开始*/
memcpy(qno,q-&no,8);
/*读取班级号*/
qno[8]='\0';
/*做字符串结束标记*/
if(strcmp(qno,sno)==0)
/*比较班级号*/
/*累加总分*/
ave+=q-& /*累加均分*/
/*累加班级人数*/
/*指针指向下一条记录*/
printf(&%s
%5.2f\n&,sno,s1,ave/i);
if(q==NULL)
printf(&---------------------------------------------\n&);}
其他类似问题
按默认排序
其他2条回答
这种基本问题的程序教材/网络上都大把.懒得写(或者不懂写),还懒得(或者不懂)去查资料,就太不应该了.读书还是打好点基础吧.总会用得着的.
发消息给你了
c语言课程设计的相关知识
等待您来回答
您可能关注的推广回答者:
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言课程设计目的 的文章

 

随机推荐