1、. .C语言课程设计报告班 级: 电气1004学 号: 202109334姓 名:雷海燕指导教师:王果 评语:2011 年 07 月 18日1 基此题目1.1题目1.1 题目有17个人围成一圈,从0号的人开场报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是多少号。1.2 题目分析创立一个指针变量,指针变量中的初值为0至16。然后通过for循环将指针变量中所指的值是三的倍数的变量赋值为0,最后找出所要找的值。1.3 程序#include #define N 17int main()int i,j,k,aN+1,*p;for(i=0,p=a;p(a+N)
2、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(ai!=0)printf(最后留下的是%dn,ai);return 0;1.4流程图 开场i=0,p=a N=17i=0pa+NNNp=a+NY*p!=0Ni+Yi%3!=0NY*p=0,i=0,k-p+,j+p+,j+i=NY输出最后留下的值Ni+ 完毕图1.1 基此题目的流程图1.5程序的运行结果根本体运行结果如图1.2所示:图1.2 基此题目运行结果2 改错题目2.1 改正后程序#include int main()int x=1; int y;y=x+;pr
3、intf(y=%d ,y);int z;z=+x;printf(z=%dn,z)return 0;2.2 程序运行结果程序完成的功能:用x的初始值算出y与z的值。改正后的运行结果如图2.1所示:图2.1 改正后的运行结果3.综合题目3.1 题目班级成绩管理系统,对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。3.2 程序的主要功能本程序实现对一个班学生某几门课程的录入,成绩的显示、成绩的保存、对成绩进展排、对成绩进展修改、对成绩进展统计包括每门课程的最高分、平均分、超过每门平均分的人数等,运行程序后退出程序。3.3 各函数的功能1in
4、put函数利用嵌套循环语句,实现对N位学生,M门课程的输入。2output函数实现对先前输入学生成绩的输出。3save函数将输入数据存入指定文件中。4rank函数计算出所有学生的成绩总分,并按照分数从高到低,进展输出。5change函数判断密码是否正确,并对选中学生成绩进展修改。3.4程序流程图 开场输入 xA或aB或bF或fi=0i=0C或cD或dE或eG或g输出科目名利用for循环,对每一位学生算出成绩总分输入科目名将数据存入指定文件Y利用coun函数,进展对学生成绩的统计详见图6 i+i+YReturn 0,即退出系统i=M利用tran函数,进展加密码,修改学生成绩。详见图5 iMNNi
5、=0i=0输出XX、学号利用for循环,将学生按成绩从高到低输出输入学生XXj=0输出成绩输入学号Yj+YY输入成绩jMNi+i+iNiNNNWhile (1) 完毕图3.1 综合题目的流程图3.4 源程序#include#include#include#define N 10/*学生人数*/#define M 4/*课程数*/#define PASS 890508/*修改密码*/void input();/*成绩输入*/void output();/*成绩显示*/void save();/*成绩保存*/void rank();/*成绩排序*/void tran();/*成绩修改*/void
6、coun();/*成绩统计*/void errorinput();/*出错输出*/struct student/*成绩数据构造体*/char name10;int num;float scoreM;double sum;studN;char subject_nameN10;int main()char x;while(1) system(cls);printf( _n);printf( * 班级成绩管理系统 *n);printf( * *n);printf( * A 成绩录入 *n);printf( * *n);printf( * B 成绩显示 *n);printf( * *n);printf
7、( * 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();
8、break; case d:case D:rank();break; case e:case E:tran();break; case f:case F:coun();break; case g:case G:return 0; default:errorinput();break;getchar();return 0;void input()/*成绩输入*/int i,j;printf(请输入科目名称:n);for(i=0;iM;i+)/*输入科目名称*/printf(科目%d:,i+1);scanf(%s,subject_namei);for(i=0;iN;i+)/*输入学生信息、各科成绩
9、*/printf(学生%d:n,i+1);printf(:);scanf(%s,&studi.name);printf(学号:);scanf(%d,&studi.num);for(j=0;jM;j+)printf(%s成绩:,subject_namej);scanf(%f,&studi.scorej);printf(n);void output()/*成绩显示*/int i,j;system(cls);printf( 学号 );for(i=0;i=M;i+)printf( %s,subject_namei); /*在一行里面输出科目名称,相互之间有间隔。作为其以下表的目录。*/printf(n
10、);for(i=0;iN;i+)printf(%1st%1dt,studi.name,studi.num);for(j=0;jM;j+)printf(%5.1ft,studi.scorej);printf(n);printf( !输入任意键返回!n);getchar();void save() /*成绩保存*/FILE *fp;int i,j;if(fp=fopen(data.txt,w)=NULL) /*文件翻开*/printf(File open error!n);return;for(i=0;iM;i+) /*写入各科目名称*/fprintf(fp, %s ,subject_namei)
11、;fprintf(fp,n);for(i=0;iN;i+) /*写入学生数据、成绩信息*/fprintf(fp,%5s%5d ,studi.name,studi.num);for(j=0;jM;j+)fprintf(fp,%6.1f,studi.scorej);fprintf(fp,n);if(fclose(fp) /*文件关闭*/printf(Can not close the file!n);return;printf(File save succeed!n);getchar();return;void rank() /*成绩排序*/void swap(int *px,int *py);i
12、nt *a;a=new intN;int i,j;double tot;system(cls);for(i=0;iN;i+) /*循环计算总分*/ai=i;for(j=0,tot=0;jM;j+)tot=tot+studi.scorej; studi.sum=tot;for(i=0;iN;i+)for(j=0;jN-i-1;j+)if(studaj.sumstudaj+1.sum)swap(&aj,&aj+1);printf(学号 总分n);for(i=0;iN;i+)printf(%dt%st%.1fn,studai.num,studai.name,studai.sum);delete a;
13、printf(!输入任意键退出!n);getchar();void swap(int *px,int *py)int t;t=*px;*px=*py;*py=t;void tran()/*成绩修改*/char ch10,flag=Y;int num;int i,j;printf(请输入密码:); /检查密码scanf(%s,ch);if(strcmp(ch,123)!=0)printf(密码错误!按任意键返回n);getchar();return;while(flag=Y|flag=y) /修改成绩printf(输入要修改成绩的学生学号:); /按学号搜索scanf(%d,&num);for(
14、i=0;iN;i+) /i保存搜索到的学生序号if(num=studi.num)break; if(i=N)if(num=0)return;elseprintf(没有找到学生,请重新输入!(输入0退出)n);continue;printf(请输入新的各科成绩:n); /修改成绩for(j=0;jM;j+)printf(%s:,subject_namej);scanf(%f,&studi.scorej);printf(是否继续修改(Y/N)?);scanf(%s,&flag);void coun()/*成绩统计*/void state_high();void state_ave();void s
15、tate_num();char choice;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
16、c:state_num();break;case D:case d:break;default:errorinput();coun();break;printf(按任意键返回主菜单n);getchar();void state_high() /*输出各科最高分的根本信息*/int i,j,high;system(cls);for(j=0;jM;j+)for(i=0,high=0;istudhigh.scorej)high=i;printf(%s最高分:,subject_namej);printf( %st 学号%dtn,studhigh.name,studhigh.num);printf(n)
17、;void state_ave() /*每门课程平均成绩*/int i,j;float sum,ave;system(cls);for(j=0;jM;j+)for(i=0,sum=0;iN;i+)sum+=studi.scorej;ave=sum/N;printf(%s平均成绩:%.1fn,subject_namej,ave);printf(n);void state_num() /*每门课程超过平均成绩的学生人数*/int i,j,n;float sum,ave;system(cls);for(j=0;jM;j+)for(i=0,sum=0;iN;i+)sum=sum+studi.score
18、j;ave=sum/N;for(i=0,n=0;iave)n+;printf(%s超过平均分的人数为:%dtn,subject_namej,n);printf(n);void errorinput()/*出错输出*/system(cls);printf(无效的输入,请重新输入!n);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,
19、成绩统计如图3.7所示:图3.7 成绩统计4 结论与体会这学期让我们做C语言课程设计,是因为这学期我们开了C语言这门课程,为了进一步培养我们构造化程序设计的思想,加深对高级语言根本语言要素和控制构造的理解,所以让我们针对C语言中的重点和难点内容进展训。考完C语言后便去教师那里拿题。我们是班里的最后一个组,所以之前也听说了课程设计相当难做,班里C语言学的好的同学都在埋怨难做,这就让我觉得犯难了。当我把题目看完之后,认真想了想,基此题和改错题,靠自己一个人,应该完成不是难事。但是综合题,我就蒙了。根底题通过查资料根本完成了,但画流程图却是根本没有接触过,我又把我们课本中的这一局部复习了一下,明白以
20、后,滤清思路,利用visio办公软件,很快便做了出来。改错题也不是很难,理解了题意,读了一下程序,在VC6.0中走了几遍,便找出了错误,没多长时间,便也完成了。接下来是综合题,读完题后,我就觉得不知如何下手了。我们组的这道综合题应该说不算是综合题里最难的,但我觉得还是能力有限,想破头皮,都不能够很完整的做出来,所以综合题就只能和同组的同学讨论、查资料、询问学长来获取一些珍贵的信息来完成了,在此期间学到了不少新知识,掌握了更多C语言的技巧。最终,经过我们小组成员的合作,还有和其他做同一道题小组成员的讨论,终于完成了这道题。但程序似乎还是不太完善,比方程序太长,不能够简洁明了。这次课程设计是在我们就军训期间抽空完成的,占用了我们大量的休息时间,但我觉得,从中学到的东西,让我得到更多,受益匪浅。由于水平和时间原因,并且又是第一次做,这次的课程设计报告,肯定有许多缺乏之处,望教师指出并加以指导,让学生的学习能更进一步。参考书目1谭浩强.C程序设计M.清华大学,20212杨萌华.线性代数M.大学,20033严蔚敏.数据构造M. 清华大学,2004. .word.