大一C语言课程设计报告Word文件下载.docx
- 文档编号:20232876
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:22
- 大小:406.67KB
大一C语言课程设计报告Word文件下载.docx
《大一C语言课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《大一C语言课程设计报告Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
j++)
if(p>
(a+N))
if(*p!
=0)
i++;
if(i%3==0&
&
i!
*p=0;
i=0;
k--;
}
p++;
for(i=1;
i<
=N;
i++)
if(a[i]!
printf("
最后留下的是%d\n"
a[i]);
return0;
1.4流程图
图1.1基本题目的流程图
1.5程序的运行结果
基本体运行结果如图1.2所示:
图1.2基本题目运行结果
2改错题目
2.1改正后程序
intx=1;
inty;
y=x++;
y=%d"
y);
intz;
z=++x;
z=%d\n"
z)
2.2程序运行结果
程序完成的功能:
用x的初始值算出y与z的值。
改正后的运行结果如图2.1所示:
图2.1改正后的运行结果
3.综合题目
3.1题目
班级成绩管理系统,对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
3.2程序的主要功能
本程序实现对一个班学生某几门课程的录入,成绩的显示、成绩的保存、对成绩进行排、对成绩进行修改、对成绩进行统计(包括每门课程的最高分、平均分、超过每门平均分的人数等),运行程序后退出程序。
3.3各函数的功能
(1)input函数
利用嵌套循环语句,实现对N位学生,M门课程的输入。
(2)output函数
实现对先前输入学生成绩的输出。
(3)save函数
将输入数据存入指定文件中。
(4)rank函数
计算出所有学生的成绩总分,并按照分数从高到低,进行输出。
(5)change函数
判断密码是否正确,并对选中学生成绩进行修改。
3.4程序流程图
图3.1综合题目的流程图
3.4源程序
#include<
string.h>
windows.h>
#defineN10/*学生人数*/
#defineM4/*课程数*/
#definePASS890508/*修改密码*/
voidinput();
/*成绩输入*/
voidoutput();
/*成绩显示*/
voidsave();
/*成绩保存*/
voidrank();
/*成绩排序*/
voidtran();
/*成绩修改*/
voidcoun();
/*成绩统计*/
voiderrorinput();
/*出错输出*/
structstudent/*成绩数据结构体*/
charname[10];
intnum;
floatscore[M];
doublesum;
stud[N];
charsubject_name[N][10];
charx;
while
(1)
{
system("
cls"
);
printf("
________________________________________________________\n"
***班级成绩管理系统***\n"
******\n"
***A[成绩录入]***\n"
***B[成绩显示]***\n"
***C[成绩保存]***\n"
***D[成绩排序]***\n"
***E[成绩修改]***\n"
***F[成绩统计]***\n"
***G[退出系统]***\n"
输入你的选择:
"
scanf("
%c"
&
x);
switch(x)
{
case'
a'
:
case'
A'
input();
break;
case'
b'
B'
output();
c'
C'
save();
d'
D'
rank();
e'
E'
tran();
f'
F'
coun();
g'
G'
default:
errorinput();
}
getchar();
}
return0;
voidinput()/*成绩输入*/
inti,j;
printf("
请输入科目名称:
\n"
for(i=0;
M;
i++)/*输入科目名称*/
科目%d:
i+1);
%s"
subject_name[i]);
N;
i++)/*输入学生信息、各科成绩*/
学生%d:
:
stud[i].name);
学号:
%d"
stud[i].num);
for(j=0;
j<
printf("
%s成绩:
subject_name[j]);
scanf("
%f"
stud[i].score[j]);
voidoutput()/*成绩显示*/
学号"
=M;
%s"
/*在一行里面输出科目名称,相互之间有间隔。
作为其下列表的目录。
*/
%1s\t%1d\t"
stud[i].name,stud[i].num);
%5.1f\t"
stud[i].score[j]);
!
输入任意键返回!
getchar();
voidsave()/*成绩保存*/
FILE*fp;
if((fp=fopen("
data.txt"
"
w"
))==NULL)/*文件打开*/
Fileopenerror!
return;
i++)/*写入各科目名称*/
fprintf(fp,"
%s"
fprintf(fp,"
i++)/*写入学生数据、成绩信息*/
%5s%5d"
fprintf(fp,"
%6.1f"
if(fclose(fp))/*文件关闭*/
Cannotclosethefile!
Filesavesucceed!
return;
voidrank()/*成绩排序*/
voidswap(int*px,int*py);
int*a;
a=newint[N];
doubletot;
i++)/*循环计算总分*/
a[i]=i;
for(j=0,tot=0;
tot=tot+stud[i].score[j];
stud[i].sum=tot;
i++){
N-i-1;
if(stud[a[j]].sum<
stud[a[j+1]].sum)
swap(&
a[j],&
a[j+1]);
学号总分\n"
%d\t%s\t%.1f\n"
stud[a[i]].num,stud[a[i]].name,stud[a[i]].sum);
delete[]a;
!
输入任意键退出!
voidswap(int*px,int*py)
intt;
t=*px;
*px=*py;
*py=t;
voidtran()/*成绩修改*/
charch[10],flag='
Y'
;
请输入密码:
//检查密码
scanf("
ch);
if(strcmp(ch,"
123"
)!
密码错误!
(按任意键返回)\n"
while(flag=='
||flag=='
y'
)//修改成绩
输入要修改成绩的学生学号:
//按学号搜索
num);
for(i=0;
i++)//i保存搜索到的学生序号
if(num==stud[i].num)
break;
if(i==N)
if(num==0)
return;
else
{
printf("
没有找到学生,请重新输入!
(输入0退出)\n"
continue;
}
请输入新的各科成绩:
//修改成绩
%s:
是否继续修改(Y/N)?
flag);
voidcoun()/*成绩统计*/
voidstate_high();
voidstate_ave();
voidstate_num();
charchoice;
================================================&
选择菜单&
A.显示每门课程成绩最高的学生的基本信息&
B.显示每门课程的平均成绩&
C.显示超过某门课程平均成绩的学生人数&
D.返回&
choice);
switch(choice)
case'
state_high();
break;
state_ave();
state_num();
break;
default:
按任意键返回主菜单\n"
voidstate_high()/*输出各科最高分的基本信息*/
inti,j,high;
for(j=0;
for(i=0,high=0;
i++)/*high:
最高分的stu[high]*/
if(stud[i].score[j]>
stud[high].score[j])
high=i;
%s最高分:
%s\t学号%d\t\n"
stud[high].name,stud[high].num);
voidstate_ave()/*每门课程平均成绩*/
floatsum,ave;
for(i=0,sum=0;
sum+=stud[i].score[j];
ave=sum/N;
%s平均成绩:
%.1f\n"
subject_name[j],ave);
voidstate_num()/*每门课程超过平均成绩的学生人数*/
inti,j,n;
sum=sum+stud[i].score[j];
for(i=0,n=0;
ave)
n++;
%s超过平均分的人数为:
%d\t\n"
subject_name[j],n);
voiderrorinput()/*出错输出*/
无效的输入,请重新输入!
3.5程序运行结果
程序运行初显示如图3.2所示:
图3.2程序运行初显示
输入“A”进行成绩录入后,输入“B”,对成绩进行显示如图3.3所示:
图3.3成绩显示
输入C,成绩保存如图3.4所示:
图3.4成绩保存
输入D,进行成绩排序如图3.5所示:
图3.5成绩排序
成绩修改如图3.6所示:
图3.6成绩修改
输入“F”,成绩统计如图3.7所示:
图3.7成绩统计
4结论与体会
这学期让我们做C语言课程设计,是因为这学期我们开了C语言这门课程,为了进一步培养我们结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,所以让我们针对C语言中的重点和难点内容进行训。
考完C语言后便去老师那里拿题。
我们是班里的最后一个组,所以之前也听说了课程设计相当难做,班里C语言学的好的同学都在埋怨难做,这就让我觉得犯难了。
当我把题目看完之后,认真想了想,基本题和改错题,靠自己一个人,应该完成不是难事。
但是综合题,我就蒙了。
基础题通过查资料基本完成了,但画流程图却是基本没有接触过,我又把我们课本中的这一部分复习了一下,明白以后,滤清思路,利用visio办公软件,很快便做了出来。
改错题也不是很难,理解了题意,读了一下程序,在VC6.0中走了几遍,便找出了错误,没多长时间,便也完成了。
接下来是综合题,读完题后,我就觉得不知如何下手了。
我们组的这道综合题应该说不算是综合题里最难的,但我觉得还是能力有限,想破头皮,都不能够很完整的做出来,所以综合题就只能和同组的同学讨论、查资料、询问学长来获取一些宝贵的信息来完成了,在此期间学到了不少新知识,掌握了更多C语言的技巧。
最终,经过我们小组成员的合作,还有和其他做同一道题小组成员的讨论,终于完成了这道题。
但程序似乎还是不太完善,比如程序太长,不能够简洁明了。
这次课程设计是在我们就军训期间抽空完成的,占用了我们大量的休息时间,但我觉得,从中学到的东西,让我得到更多,受益匪浅。
由于水平和时间原因,并且又是第一次做,这次的课程设计报告,肯定有许多不足之处,望老师指出并加以指导,让学生的学习能更进一步。
参考书目
[1]谭浩强.C程序设计[M].清华大学,2010
[2]杨萌华.线性代数[M].大学,2003
[3]严蔚敏.数据结构[M].清华大学,2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大一 语言 课程设计 报告