您好,欢迎访问三七文档
评语:C语言课程设计报告班级:电气1004学号:201009334姓名:雷海燕指导教师:王果2011年07月18日自动化与电气工程学院C语言课程设计-1-1基本题目1.1题目1.1题目有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是多少号。1.2题目分析创建一个指针变量,指针变量中的初值为0至16。然后通过for循环将指针变量中所指的值是三的倍数的变量赋值为0,最后找出所要找的值。1.3程序#includestdio.h#defineN17intmain(){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;}1.4流程图自动化与电气工程学院C语言课程设计-2-图1.1基本题目的流程图YYNYNYYYN开始输出最后留下的值i=0p=a+N*p=i,i++,p++p=a+Ni=0,p=aN=17k!=1pa+NNk!=1*p!=0i++i%3!=0*p=0,i=0,k--p++,j++p=a+1,i=0,j=0p++,j++Ni=NNi++结束自动化与电气工程学院C语言课程设计-3-1.5程序的运行结果基本体运行结果如图1.2所示:图1.2基本题目运行结果2改错题目2.1改正后程序#includestdio.hintmain(){intx=1;inty;y=x++;printf(y=%d,y);intz;z=++x;printf(z=%d\n,z)return0;}2.2程序运行结果程序完成的功能:用x的初始值算出y与z的值。改正后的运行结果如图2.1所示:自动化与电气工程学院C语言课程设计-4-图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程序流程图自动化与电气工程学院C语言课程设计-5-图3.1综合题目的流程图'G'或'g''F'或'f''E'或'e''D'或'd''C'或'c'NNNi=MYN'B'或'b''A'或'a'开始输入xNYi=0输入科目名输入学生姓名输入学号i=0i++iMiNi++输入成绩Yi=0输出科目名i++i=0输出姓名、学号j=0输出成绩j++jMi++iNYY将数据存入指定文件利用for循环,对每一位学生算出成绩总分利用for循环,将学生按成绩从高到低输出While(1)结束Return0,即退出系统利用tran函数,进行加密码,修改学生成绩。详见图5利用coun函数,进行对学生成绩的统计详见图6自动化与电气工程学院C语言课程设计-6-3.4源程序#includestdio.h#includestring.h#includewindows.h#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);自动化与电气工程学院C语言课程设计-7-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;iM;i++)/*输入科目名称*/{printf(科目%d:,i+1);scanf(%s,subject_name[i]);}for(i=0;iN;i++)/*输入学生信息、各科成绩*/{printf(学生%d:\n,i+1);printf(姓名:);scanf(%s,&stud[i].name);printf(学号:);scanf(%d,&stud[i].num);for(j=0;jM;j++)自动化与电气工程学院C语言课程设计-8-{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;iN;i++){printf(%1s\t%1d\t,stud[i].name,stud[i].num);for(j=0;jM;j++)printf(%5.1f\t,stud[i].score[j]);printf(\n);}printf(!输入任意键返回!\n);getchar();}voidsave()/*成绩保存*/{FILE*fp;inti,j;if((fp=fopen(data.txt,w))==NULL)/*文件打开*/{printf(Fileopenerror!\n);return;}for(i=0;iM;i++)/*写入各科目名称*/fprintf(fp,%s,subject_name[i]);fprintf(fp,\n);for(i=0;iN;i++)/*写入学生数据、成绩信息*/{fprintf(fp,%5s%5d,stud[i].name,stud[i].num);for(j=0;jM;j++){fprintf(fp,%6.1f,stud[i].score[j]);自动化与电气工程学院C语言课程设计-9-}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;iN;i++)/*循环计算总分*/{a[i]=i;for(j=0,tot=0;jM;j++)tot=tot+stud[i].score[j];stud[i].sum=tot;}for(i=0;iN;i++){for(j=0;jN-i-1;j++)if(stud[a[j]].sumstud[a[j+1]].sum)swap(&a[j],&a[j+1]);}printf(学号姓名总分\n);for(i=0;iN;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;自动化与电气工程学院C语言课程设计-10-*py=t;}voidtran()/*成绩修改*/{charch[10],flag='Y';intnum;inti,j;printf(请输入密码:);//检查密码scanf(%s,ch);if(strcmp(ch,123)!=0){printf(密码错误!(按任意键返回)\n);getchar();return;}while(flag=='Y'||flag=='y')//修改成绩{printf(输入要修改成绩的学生学号:);//按学号搜索scanf(%d,&num);for(i=0;iN;i++)//i保存搜索到的学生序号if(num==stud[i].num)break;if(i==N){if(num==0)return;else{printf(没有找到学生,请重新输入!(输入0退出)\n);continue;}}printf(请输入新的各科成绩:\n);//修改成绩for(j=0;jM;j++){printf(%s:,subject_name[j]);scanf(%f,&stud[i].score[j]);}printf(是否继续修改(Y/N)?);scanf(%s,&flag);}}voidcoun()/*成绩统计*/{自动化与电气工程学院C语言课程设计-11-voidstate_high();voidstate_ave();voidstate_num();charchoice;system(cls);printf(&&&================================================&&&\n
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:大一C语言课程设计
链接地址:https://www.777doc.com/doc-5820380 .html