大一C语言课程设计.docx

上传人:b****1 文档编号:13225318 上传时间:2023-06-12 格式:DOCX 页数:23 大小:434.48KB
下载 相关 举报
大一C语言课程设计.docx_第1页
第1页 / 共23页
大一C语言课程设计.docx_第2页
第2页 / 共23页
大一C语言课程设计.docx_第3页
第3页 / 共23页
大一C语言课程设计.docx_第4页
第4页 / 共23页
大一C语言课程设计.docx_第5页
第5页 / 共23页
大一C语言课程设计.docx_第6页
第6页 / 共23页
大一C语言课程设计.docx_第7页
第7页 / 共23页
大一C语言课程设计.docx_第8页
第8页 / 共23页
大一C语言课程设计.docx_第9页
第9页 / 共23页
大一C语言课程设计.docx_第10页
第10页 / 共23页
大一C语言课程设计.docx_第11页
第11页 / 共23页
大一C语言课程设计.docx_第12页
第12页 / 共23页
大一C语言课程设计.docx_第13页
第13页 / 共23页
大一C语言课程设计.docx_第14页
第14页 / 共23页
大一C语言课程设计.docx_第15页
第15页 / 共23页
大一C语言课程设计.docx_第16页
第16页 / 共23页
大一C语言课程设计.docx_第17页
第17页 / 共23页
大一C语言课程设计.docx_第18页
第18页 / 共23页
大一C语言课程设计.docx_第19页
第19页 / 共23页
大一C语言课程设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大一C语言课程设计.docx

《大一C语言课程设计.docx》由会员分享,可在线阅读,更多相关《大一C语言课程设计.docx(23页珍藏版)》请在冰点文库上搜索。

大一C语言课程设计.docx

大一C语言课程设计

C语言课程设计报告

 

班级:

电气1004

学号:

4

姓名:

雷海燕

指导教师:

王果

评语:

2011年07月18日

 

1基本题目

题目

题目

有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。

直到最后只剩下一个人为止。

问此人原来的位置是多少号。

题目分析

创建一个指针变量,指针变量中的初值为0至16。

然后通过for循环将指针变量中所指的值是三的倍数的变量赋值为0,最后找出所要找的值。

程序

#include<>

#defineN17

intmain()

{

inti,j,k,a[N+1],*p;

for(i=0,p=a;p<=a+N;i++,p++)

*p=i;

p=a+1;

k=N;

for(i=0,j=1;k!

=1;j++)

{

if(p>(a+N))

p=a+1;

if(*p!

=0)

i++;

if(i%3==0&&i!

=0)

{

*p=0;i=0;k--;

}

p++;

}

for(i=1;i<=N;i++)

if(a[i]!

=0)

printf("最后留下的是%d\n",a[i]);

return0;

}

 

流程图

 

 

 

 

 

图基本题目的流程图

程序的运行结果

基本体运行结果如图所示:

图基本题目运行结果

2改错题目

改正后程序

#include<>

intmain()

{

intx=1;inty;

y=x++;

printf("y=%d",y);

intz;

z=++x;

printf("z=%d\n",z)

return0;

}

程序运行结果

程序完成的功能:

用x的初始值算出y与z的值。

改正后的运行结果如图所示:

图改正后的运行结果

3.综合题目

题目

班级成绩管理系统,对一个有N个学生的班级,每个学生有M门课程。

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

程序的主要功能

本程序实现对一个班学生某几门课程的录入,成绩的显示、成绩的保存、对成绩进行排、对成绩进行修改、对成绩进行统计(包括每门课程的最高分、平均分、超过每门平均分的人数等),运行程序后退出程序。

各函数的功能

(1)input函数

利用嵌套循环语句,实现对N位学生,M门课程的输入。

(2)output函数

实现对先前输入学生成绩的输出。

(3)save函数

将输入数据存入指定文件中。

(4)rank函数

计算出所有学生的成绩总分,并按照分数从高到低,进行输出。

(5)change函数

判断密码是否正确,并对选中学生成绩进行修改。

程序流程图

 

 

 

图综合题目的流程图

源程序

#include<>

#include<>

#include<>

#defineN10/*学生人数*/

#defineM4/*课程数*/

#definePASS890508/*修改密码*/

voidinput();/*成绩输入*/

voidoutput();/*成绩显示*/

voidsave();/*成绩保存*/

voidrank();/*成绩排序*/

voidtran();/*成绩修改*/

voidcoun();/*成绩统计*/

voiderrorinput();/*出错输出*/

structstudent/*成绩数据结构体*/

{

charname[10];

intnum;

floatscore[M];

doublesum;

}

stud[N];

charsubject_name[N][10];

intmain()

{

charx;

while

(1)

{

system("cls");

printf("________________________________________________________\n");

printf("***班级成绩管理系统***\n");

printf("******\n");

printf("***A[成绩录入]***\n");

printf("******\n");

printf("***B[成绩显示]***\n");

printf("******\n");

printf("***C[成绩保存]***\n");

printf("******\n");

printf("***D[成绩排序]***\n");

printf("******\n");

printf("***E[成绩修改]***\n");

printf("******\n");

printf("***F[成绩统计]***\n");

printf("******\n");

printf("***G[退出系统]***\n");

printf("******\n");

printf("________________________________________________________\n");

printf("输入你的选择:

");

scanf("%c",&x);

switch(x)

{

case'a':

case'A':

input();

break;

case'b':

case'B':

output();

break;

case'c':

case'C':

save();

break;

case'd':

case'D':

rank();

break;

case'e':

case'E':

tran();

break;

case'f':

case'F':

coun();

break;

case'g':

case'G':

return0;

default:

errorinput();

break;

}

getchar();

}

return0;

}

voidinput()/*成绩输入*/

{

inti,j;

printf("请输入科目名称:

\n");

for(i=0;i

{

printf("科目%d:

",i+1);

scanf("%s",subject_name[i]);

}

for(i=0;i

{

printf("学生%d:

\n",i+1);

printf("姓名:

");

scanf("%s",&stud[i].name);

printf("学号:

");

scanf("%d",&stud[i].num);

for(j=0;j

{

printf("%s成绩:

",subject_name[j]);

scanf("%f",&stud[i].score[j]);

}

printf("\n");

}

}

voidoutput()/*成绩显示*/

{

inti,j;

system("cls");

printf("姓名学号");

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

printf("%s",subject_name[i]);/*在一行里面输出科目名称,相互之间有间隔。

作为其下列表的目录。

*/

printf("\n");

for(i=0;i

{

printf("%1s\t%1d\t",stud[i].name,stud[i].num);

for(j=0;j

printf("%5.1f\t",stud[i].score[j]);

printf("\n");

}

printf("!

输入任意键返回!

\n");

getchar();

}

voidsave()/*成绩保存*/

{

FILE*fp;

inti,j;

if((fp=fopen("","w"))==NULL)/*文件打开*/

{

printf("Fileopenerror!

\n");

return;

}

for(i=0;i

fprintf(fp,"%s",subject_name[i]);

fprintf(fp,"\n");

for(i=0;i

{

fprintf(fp,"%5s%5d",stud[i].name,stud[i].num);

for(j=0;j

{

fprintf(fp,"%6.1f",stud[i].score[j]);

}

fprintf(fp,"\n");

}

if(fclose(fp))/*文件关闭*/

{

printf("Cannotclosethefile!

\n");

return;

}

printf("Filesavesucceed!

\n");

getchar();

return;

}

voidrank()/*成绩排序*/

{

voidswap(int*px,int*py);

int*a;

a=newint[N];

inti,j;

doubletot;

system("cls");

for(i=0;i

{

a[i]=i;

for(j=0,tot=0;j

tot=tot+stud[i].score[j];

stud[i].sum=tot;

}

for(i=0;i

for(j=0;j

if(stud[a[j]].sum

swap(&a[j],&a[j+1]);

}

printf("学号姓名总分\n");

for(i=0;i

printf("%d\t%s\t%.1f\n",stud[a[i]].num,stud[a[i]].name,stud[a[i]].sum);

delete[]a;

printf("!

输入任意键退出!

\n");

getchar();

}

voidswap(int*px,int*py)

{

intt;

t=*px;

*px=*py;

*py=t;

}

voidtran()/*成绩修改*/

{

charch[10],flag='Y';

intnum;

inti,j;

printf("请输入密码:

");um)

break;

if(i==N)

{

if(num==0)

return;

else

{

printf("没有找到学生,请重新输入!

(输入0退出)\n");

continue;

}

}

printf("请输入新的各科成绩:

\n");core[j]);

}

printf("是否继续修改(Y/N)");

scanf("%s",&flag);

}

}

voidcoun()/*成绩统计*/

{

voidstate_high();

voidstate_ave();

voidstate_num();

charchoice;

system("cls");

printf("&&&================================================&&&\n");

printf("&&&选择菜单&&&\n");

printf("&&&A.显示每门课程成绩最高的学生的基本信息&&&\n");

printf("&&&B.显示每门课程的平均成绩&&&\n");

printf("&&&C.显示超过某门课程平均成绩的学生人数&&&\n");

printf("&&&D.返回&&&\n");

printf("&&&================================================&&&\n");

scanf("%s",&choice);

switch(choice)

{

case'A':

case'a':

state_high();

break;

case'B':

case'b':

state_ave();

break;

case'C':

case'c':

state_num();

break;

case'D':

case'd':

break;

default:

errorinput();coun();

break;

}

printf("按任意键返回主菜单\n");

getchar();

}

voidstate_high()/*输出各科最高分的基本信息*/

{

inti,j,high;

system("cls");

for(j=0;j

{

for(i=0,high=0;i

最高分的stu[high]*/

{

if(stud[i].score[j]>stud[high].score[j])

high=i;

}

printf("%s最高分:

",subject_name[j]);

printf("%s\t学号%d\t\n",stud[high].name,stud[high].num);

}

printf("\n");

}

voidstate_ave()/*每门课程平均成绩*/

{

inti,j;

floatsum,ave;

system("cls");

for(j=0;j

{

for(i=0,sum=0;i

{

sum+=stud[i].score[j];

}

ave=sum/N;

printf("%s平均成绩:

%.1f\n",subject_name[j],ave);

}

printf("\n");

}

voidstate_num()/*每门课程超过平均成绩的学生人数*/

{

inti,j,n;

floatsum,ave;

system("cls");

for(j=0;j

{

for(i=0,sum=0;i

{

sum=sum+stud[i].score[j];

}

ave=sum/N;

for(i=0,n=0;i

{

if(stud[i].score[j]>ave)

n++;

}

printf("%s超过平均分的人数为:

%d\t\n",subject_name[j],n);

}

printf("\n");

}

voiderrorinput()/*出错输出*/

{

system("cls");

printf("无效的输入,请重新输入!

\n");

}

 

程序运行结果

程序运行初显示如图所示:

图程序运行初显示

 

输入“A”进行成绩录入后,输入“B”,对成绩进行显示如图所示:

图成绩显示

 

输入C,成绩保存如图所示:

图成绩保存

 

输入D,进行成绩排序如图所示:

图成绩排序

 

成绩修改如图所示:

图成绩修改

输入“F”,成绩统计如图所示:

图成绩统计

4结论与体会

这学期让我们做C语言课程设计,是因为这学期我们开了C语言这门课程,为了进一步培养我们结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,所以让我们针对C语言中的重点和难点内容进行训。

考完C语言后便去老师那里拿题。

我们是班里的最后一个组,所以之前也听说了课程设计相当难做,班里C语言学的好的同学都在埋怨难做,这就让我觉得犯难了。

当我把题目看完之后,认真想了想,基本题和改错题,靠自己一个人,应该完成不是难事。

但是综合题,我就蒙了。

基础题通过查资料基本完成了,但画流程图却是基本没有接触过,我又把我们课本中的这一部分复习了一下,明白以后,滤清思路,利用visio办公软件,很快便做了出来。

改错题也不是很难,理解了题意,读了一下程序,在中走了几遍,便找出了错误,没多长时间,便也完成了。

接下来是综合题,读完题后,我就觉得不知如何下手了。

我们组的这道综合题应该说不算是综合题里最难的,但我觉得还是能力有限,想破头皮,都不能够很完整的做出来,所以综合题就只能和同组的同学讨论、查资料、询问学长来获取一些宝贵的信息来完成了,在此期间学到了不少新知识,掌握了更多C语言的技巧。

最终,经过我们小组成员的合作,还有和其他做同一道题小组成员的讨论,终于完成了这道题。

但程序似乎还是不太完善,比如程序太长,不能够简洁明了。

这次课程设计是在我们就军训期间抽空完成的,占用了我们大量的休息时间,但我觉得,从中学到的东西,让我得到更多,受益匪浅。

由于水平和时间原因,并且又是第一次做,这次的课程设计报告,肯定有许多不足之处,望老师指出并加以指导,让学生的学习能更进一步。

参考书目

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

[2]杨萌华.线性代数[M].北京大学出版社,2003

[3]严蔚敏.数据结构[M].清华大学出版社,2004

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2