C课程设计.docx

上传人:b****0 文档编号:12781457 上传时间:2023-04-22 格式:DOCX 页数:20 大小:174.55KB
下载 相关 举报
C课程设计.docx_第1页
第1页 / 共20页
C课程设计.docx_第2页
第2页 / 共20页
C课程设计.docx_第3页
第3页 / 共20页
C课程设计.docx_第4页
第4页 / 共20页
C课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C课程设计.docx

《C课程设计.docx》由会员分享,可在线阅读,更多相关《C课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

C课程设计.docx

C课程设计

C语言程序设计课程设计

评语:

 

考勤(10)

纪律(10)

过程(40)

设计报告(30)

答辩(10)

总成绩(100)

 

专业:

电气工程及其自动化

班级:

电气1203

姓名:

朱开聪

学号:

201209847

指导教师:

王果

兰州交通大学自动化与电气工程学院

2013年7月16日

1、基础题

1.1题目

用指向指针的方法对n个整数排序并输出。

要求将排序单独写成一个函数。

N个整数在主函数中输入。

最后在主函数中输出。

1.2解题分析

在主函数上输入输出整数,在调用函数里冒泡法排序。

实参数组,形参指针。

1.3流程图

主函数流程图如图1.1所示。

图1.1主函数流程图

调用函数流程图如图1.2所示。

图1.2调用函数流程图

1.4源程序

#include

voidmain()

{

voidsort(int*x,intn);

intarray[10],*p=array;

printf("输入一组整数:

\n");

for(;p

scanf("%d",p);

printf("\n");

p=array;

sort(array,10);

printf("排序后的一组整数:

\n");

for(;p

printf("%d,",*p);

printf("\n");

return0;

}

voidsort(int*x,intn)

{

int*i,*j,temp;

for(i=x;i

{

for(j=i+1;j

{

if(*i<*j)

{

temp=*i;

*i=*j;

*j=temp;

}}

}}

1.5运行结果

2、改错题

2.1题目(源程序)

程序6:

#include

#include

;main()

{

inti,j;

clrscr();

for(i=0;i<10;i++)

for(j=0;j<10;j++)

{

if(i=j)break;

printf("*");

}

printf("\n");}

2.2错误分析

主函数类型未定义;Clrscr无法识别;

最后未编辑return0;程序不完整。

2.3流程图

主函数流程图如图2.1所示。

图2.1流程图

2.4改正后

#include

#include

intmain()

{inti,j;

getch();

for(i=0;i<10;i++)

{printf("\n");

for(j=0;j<10;j++)

{printf("*");

}}

printf("\n");

return0;

}

2.5运行结果

3、综合题

3.1题目

3.1.1问题描述:

对一个有N个学生的班级,每个学生有M门课程。

该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。

3.1.2功能要求:

本系统采用一个结构体数组,每个数据的结构应当包括:

学号、姓名、M门课程名称。

本系统显示这样的菜单:

请选择系统功能项:

a、成绩录入

b、成绩显示

c、成绩保存

d、成绩排序

e、成绩修改(要求先输入密码)

f、成绩统计

显示每门课程成绩最高的学生的基本信息,显示每门课程的平均成绩,显示超过某门课程平均成绩的学生人数。

g、退出系统

执行一个具体的功能之后,程序将重新显示菜单,将学生成绩保存到文件中。

3.1.3算法提示:

数据结构:

结构体类型数组。

数据库结构:

下表构成该系统的基本数据库。

表3.1

姓名

学号

课程名称1

课程名称2

●●●●●●

char

Char

float

float

3.1.4测试数据:

学生人数N=10,课程门数M=4,课程名:

数学、语文、英语、政治。

3.1.5其它

对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。

3.2解题分析

通过调用menuDisplay,insert,gradeDisplay,save。

Modify。

sort。

count。

countMeauDisplay,highScore,average,highScoreCount函数分别求成绩录入,成绩显示,成绩保存,成绩排序,成绩修改,成绩统计。

其中成绩排序按照总成绩大小用冒泡法来求得排序。

其中用switch语句控制函数运行,数学,语文,英语,政治成绩分别用stu[i].grade[j]来表示。

其中冒泡法用交换元素来处理,求最高分时用选择法来处理。

在调用menuDisplay,insert,gradeDisplay,save,modify,sort,count,highScore,average,highScoreCount函数时分别用到for循环,学生个数从0到9,科目从0到3.从而完成了成绩显示,成绩保存,成绩保存,成绩修改,成绩统计的函数。

整个程序用调运函数,清晰明了,模块化。

3.3流程图

调用menuDisplay函数流程图如图3.1所示。

 

图3.1成绩显示函数流程图

主函数流程图如图3.2所示。

图3.2主函数流程图

 

调用sort函数流程图如图3.3所示。

图3.3成绩排序函数流程图

调用insert函数流程图如图3.4所示,调用average函数流程图如图3.5所示。

图3.4成绩输入函数流程图

图3.5平均成绩函数流程图

3.4源程序

#include

#include

#include

#defineM4//课程数量

#defineN10//学生人数

typedefstructgradeInfo{

charsno[20];//学号

charsname[20];//学生姓名

floatgrade[M];//成绩

floatave;//平均分

}GRADE;

GRADEstu[N-1],*p;

voidmenuDisplay();//显示菜单

voidinsert();//成绩录入

voidgradeDisplay();//成绩显示

voidsort();//成绩排序

voidaverage();//显示每门课程的平均成绩

intnumb=0;//已录入学生人数

floataverageGrade[M-1];//科目平均成绩

intmain(void)

{

charcmd;

cmd='\0';

printf("\n欢迎来到班级成绩管理系统!

\n");

while(cmd!

='e')

{

menuDisplay();

scanf("%c",&cmd);

switch(cmd){

case'a':

insert();

break;

case'b':

gradeDisplay();

break;

case'c':

sort();

break;

case'd':

average();

break;

}}

printf("再见!

\n");

return0;}

voidmenuDisplay()

{

printf("\n");

printf("请输入相应小写字母选择系统功能(a~e):

\n");

printf("a:

成绩录入\n");

printf("b:

成绩显示\n");

printf("c:

成绩排序\n");

printf("d:

求学科平均数\n");

printf("e:

退出系统\n");

printf("请输入:

");

}

voidinsert()

{

inti=0;

charch;

do

{

printf("\t\t\t\t1.录入学生信息\n输入第%d个学生的信息\n",i+1);

printf("\n学号:

");

scanf("%s",stu[i].sno);

fflush(stdin);

printf("\n姓名:

");

fflush(stdin);

scanf("%s",stu[i].sname);

printf("\n数学成绩:

");

fflush(stdin);

scanf("%f",&stu[i].grade[0]);

printf("\n语文成绩:

");

fflush(stdin);

scanf("%f",&stu[i].grade[1]);

printf("\n英语成绩:

");

fflush(stdin);

scanf("%f",&stu[i].grade[2]);

printf("\n政治成绩:

");

fflush(stdin);

scanf("%f",&stu[i].grade[3]);

printf("\n\n");

i++;

numb=i;

printf("是否继续输入?

(Y/N)");

fflush(stdin);

scanf("%s",&ch);

}while((ch!

='n'&&ch!

='N')||i>N-1);

printf("录入完毕!

\n");

}

voidgradeDisplay(){

inti;

for(i=0;i

printf("学号:

%s姓名:

%s\n数学:

%f语文:

%f英语:

%f政治:

%f\n",stu[i].sno,stu[i].sname,stu[i].grade[0],stu[i].grade[1],stu[i].grade[2],stu[i].grade[3]);

}

}

voidsort(){

GRADEtemp;

inti,j,k,m;

for(j=1;j

{

for(k=1;k<=numb-j;k++)

{

if(stu[j-1].ave

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

printf("按平均成绩由高到低排名为:

\n");

for(m=0;m

{

printf("学号:

%s姓名:

%s\n",stu[m].sno,stu[m].sname);

}

}

voidaverage(){

floatsum[M];

inti,j;

for(j=0;j

sum[j]=0.0;

for(i=0;i

sum[j]+=stu[i].grade[j];

}

}

printf("数学平均成绩是:

%.2f\n",sum[0]/numb);

printf("语文平均成绩是:

%.2f\n",sum[1]/numb);

printf("英语平均成绩是:

%.2f\n",sum[2]/numb);

printf("政治平均成绩是:

%.2f\n",sum[3]/numb);

}

3.5运行结果

图3.6第一次成绩录入运行结果

图3.7第二次成绩录入运行结果

图3.8成绩显示和成绩排序运行结果

图3.9求学科平均数和退出系统运行结果

4、总结

首先,C语言课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识,再次,我在课程设计中碰到了很多的问题,我通过查阅相关书籍,资料,通过自己钻研,当然,通过这次课程设计,我也发现了自身的很多不足之处。

在整整一星期的日子里,面对一件新事物,从理论到实践,可以说是苦多于甜。

这一周的课程设计,不仅使我巩固了以前所学过的知识,更使我获得了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正掌握好所学知识,才能够实现理论到使用的升华!

好的学习方法在学习中很多时候都起着至关重要的作用!

尤其是在这次课程设计过程中,深深地体会到,善于总结是学习过程中不可缺少的重要的一个环节。

每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的调试和运行状况,随时总结,找到自己的错误与不足之处,这样所编写的程序才能逐步提高。

就如生活那样,汗水预示着结果也见证着收获。

直到实际动手做,我才真正领略到“一份耕耘,一份收获。

”这一句话的真正含义。

这次的C语言设计,对我们而言,知识上的收获重要,但是在一个团队间的团结合作的幕幕更让我们记忆终生。

挫折是一份财富,经历是一份拥有。

虽然这些日子很短暂但我相信这次实际操作必会成为我人生路上的一段美好的回忆!

参考资料

[1]谭浩强.C程序设计(第四版)[M].清华大学出版社,2010年

[2]陈舜青,饶琛.C语言程序设计[M].南京大学出版社,2011年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1