大一C语言课程设计_第1页
大一C语言课程设计_第2页
大一C语言课程设计_第3页
大一C语言课程设计_第4页
大一C语言课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计报告班 级: 电气1004 学 号: 201009334 姓 名: 雷海燕 指导教师: 王果 评语: 2011 年 07 月 18 日1 基本题目1.1题目1.1 题目有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是多少号。1.2 题目分析创建一个指针变量,指针变量中的初值为0至16。然后通过for循环将指针变量中所指的值是三的倍数的变量赋值为0,最后找出所要找的值。1.3 程序#include <stdio.h>#define N 17int main()int i,j,k,aN+1,*p

2、;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(ai!=0)printf("最后留下的是%dn",ai);return 0;1.4流程图 开始i=0,p=a N=17 i=0 p<=a+NYN*p=i, i+, p+p=a+1, i=0, j=0k!=1k!=1Yp>a+NNNp=a+NY*p!=0Ni+

3、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 <stdio.h>int main()int x=1; int y;y=x+;printf("y=%d ",y);int z;z=+x;printf("z=%dn",z)return 0;2.2 程序运行结果程序完成的功能:用x的初始值算出y与z的值。改正后的运行结果如图2.1所示: 图2

4、.1 改正后的运行结果3.综合题目3.1 题目班级成绩管理系统,对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。3.2 程序的主要功能本程序实现对一个班学生某几门课程的录入,成绩的显示、成绩的保存、对成绩进行排、对成绩进行修改、对成绩进行统计(包括每门课程的最高分、平均分、超过每门平均分的人数等),运行程序后退出程序。3.3 各函数的功能(1)input函数利用嵌套循环语句,实现对N位学生,M门课程的输入。(2)output函数实现对先前输入学生成绩的输出。(3)save函数将输入数据存入指定文件中。(4)rank函数计算出所有学生的

5、成绩总分,并按照分数从高到低,进行输出。(5)change函数判断密码是否正确,并对选中学生成绩进行修改。3.4程序流程图 开始输入 x'A'或'a''B'或'b''F'或'f'i=0i=0'C'或'c''D'或'd''E'或'e''G'或'g'输出科目名利用for循环,对每一位学生算出成绩总分输入科目名将数据存入指定文件Y利用coun函数,进行对学生成绩的统计详见图6 i

6、+i+YReturn 0,即退出系统i<=M利用tran函数,进行加密码,修改学生成绩。详见图5 i<MNNi=0i=0输出姓名、学号利用for循环,将学生按成绩从高到低输出输入学生姓名j=0输出成绩输入学号Yj+YY输入成绩j<MNi+i+i<Ni<NNNWhile (1) 结束 图3.1 综合题目的流程图3.4 源程序 #include<stdio.h>#include<string.h>#include<windows.h>#define N 10/*学生人数*/#define M 4/*课程数*/#define PASS

7、 890508/*修改密码*/void input();/*成绩输入*/void output();/*成绩显示*/void save();/*成绩保存*/void rank();/*成绩排序*/void tran();/*成绩修改*/void coun();/*成绩统计*/void errorinput();/*出错输出*/struct student/*成绩数据结构体*/char name10;int num;float scoreM;double sum;studN;char subject_nameN10;int main()char x;while(1) system("c

8、ls");printf(" _n");printf(" * 班级成绩管理系统 *n");printf(" * *n");printf(" * A 成绩录入 *n");printf(" * *n");printf(" * B 成绩显示 *n");printf(" * *n");printf(" * C 成绩保存 *n");printf(" * *n");printf(" * D 成绩排序 *n&qu

9、ot;);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)c

10、ase '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 '

11、g':case 'G':return 0; default:errorinput();break;getchar();return 0;void input()/*成绩输入*/int i,j;printf("请输入科目名称:n");for(i=0;i<M;i+)/*输入科目名称*/printf("科目%d:",i+1);scanf("%s",subject_namei);for(i=0;i<N;i+)/*输入学生信息、各科成绩*/printf("学生%d:n",i+1);prin

12、tf("姓名:");scanf("%s",&);printf("学号:");scanf("%d",&studi.num);for(j=0;j<M;j+)printf("%s成绩:",subject_namej);scanf("%f",&studi.scorej);printf("n");void output()/*成绩显示*/int i,j;system("cls");printf(&

13、quot;姓名 学号 ");for(i=0;i<=M;i+)printf(" %s",subject_namei); /*在一行里面输出科目名称,相互之间有间隔。作为其下列表的目录。*/printf("n");for(i=0;i<N;i+)printf("%1st%1dt",,studi.num);for(j=0;j<M;j+)printf("%5.1ft",studi.scorej);printf("n");printf(" !输入任意

14、键返回!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;i<M;i+) /*写入各科目名称*/fprintf(fp," %s ",subject_namei);fprintf(fp,"n");for(i=0;i<N;i+) /*写入学生数据、成绩信息*/

15、fprintf(fp,"%5s%5d ",,studi.num);for(j=0;j<M;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

16、(int *px,int *py);int *a;a=new intN;int i,j;double tot;system("cls");for(i=0;i<N;i+) /*循环计算总分*/ai=i;for(j=0,tot=0;j<M;j+)tot=tot+studi.scorej; studi.sum=tot;for(i=0;i<N;i+)for(j=0;j<N-i-1;j+)if(studaj.sum<studaj+1.sum)swap(&aj,&aj+1);printf("学号 姓名 总分n");for

17、(i=0;i<N;i+)printf("%dt%st%.1fn",studai.num,,studai.sum);delete a;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

18、);if(strcmp(ch,"123")!=0)printf("密码错误!(按任意键返回)n");getchar();return;while(flag='Y'|flag='y') /修改成绩printf("输入要修改成绩的学生学号:"); /按学号搜索scanf("%d",&num);for(i=0;i<N;i+) /i保存搜索到的学生序号if(num=studi.num)break; if(i=N)if(num=0)return;elseprintf("

19、没有找到学生,请重新输入!(输入0退出)n");continue;printf("请输入新的各科成绩:n"); /修改成绩for(j=0;j<M;j+)printf("%s:",subject_namej);scanf("%f",&studi.scorej);printf("是否继续修改(Y/N)?");scanf("%s",&flag);void coun()/*成绩统计*/void state_high();void state_ave();void stat

20、e_num();char choice;system("cls");printf("&&&=&&&n");printf("&&& 选择菜单 &&&n");printf("&&& A.显示每门课程成绩最高的学生的基本信息 &&&n");printf("&&& B.显示每门课程的平均成绩 &&&n");prin

21、tf("&&& C.显示超过某门课程平均成绩的学生人数 &&&n");printf("&&& D.返回 &&&n");printf("&&&=&&&n");scanf("%s",&choice);switch(choice)case 'A':case 'a':state_high();break;case 'B':ca

22、se 'b':state_ave();break;case 'C':case '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;j<M;j+)for(i=0,hig

23、h=0;i<N;i+) /*high:最高分的stuhigh*/if(studi.scorej>studhigh.scorej)high=i;printf("%s最高分:",subject_namej);printf(" %st 学号%dtn",,studhigh.num);printf("n");void state_ave() /*每门课程平均成绩*/int i,j;float sum,ave;system("cls");for(j=0;j<M;j+)for(i=0,

24、sum=0;i<N;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;j<M;j+)for(i=0,sum=0;i<N;i+)sum=sum+studi.scorej;ave=sum/N;for(i=0,n=0;i<N;i+)if(studi.scorej>ave)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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论