C语言实验报告.docx_第1页
C语言实验报告.docx_第2页
C语言实验报告.docx_第3页
C语言实验报告.docx_第4页
C语言实验报告.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

c语言实验报告学院:电信学院班级:计算机44班学号:2140505082姓名:李俊英一 学习心得:1. c语言的学习:由于以前并没有接触过c语言,起初在这门课程的学习方面还是有一定的困难。后来在我们宿舍同学的帮助下,对c语言有的更深一步的认识,克服了许多c语言学习方面的困难,逐渐对c语言有了一定的兴趣。对于c语言的学习也逐步变得轻松。在课堂上,徐老师讲课十分的仔细,在课堂上让我们自由提问,让我们积极发言,花时间让我们一起讨论,创造自由快乐的学习氛围,让我们在课堂上尽可能多的掌握要学的知识。当然c语言的学习不可能一蹴而就,在学习中也会有许多问题,遇到难题一般是自己先查资料,看能不能独立解决,如果不能找出答案,就会在宿舍提出,让大家讨论,一起解决这个问题。2. 上机:第一次上机时,由于是初次接触,基本是一片茫然,不知道应该如何人去做,后来在懂这个的同学的下基本弄懂了基本的操作。可是在实际操作是有很多问题仍然不知道该怎么去做,仍有许多问题,在编程序是经常会出现很多错误,后来随着编程的增加,也愈来愈熟练,只在一些如何分析问题方面任由缺陷。3. 案例分析案例一:输出3位数中的所有水仙花数(水仙花数指一个3位数,其各位数字的立方和等于该数本身。从小到大输出所有水仙花数。每个数之间需要加上逗号。 示例: 输出:111,222,333)问题分析:因为要计算百位,十位,个位的平方和,所以准备分离一个数百位,十位,各位。然后计算平方和,然后判断是否符合要求。解题思路:通过求余数的方式来逐个计算出百位,十位,各位。或者通过3个循环,通过3个变量i,j,k代表百位,十位,各位来做判断。此外对于(111,222,333)这种格式还要通过一个变量w,当w=1,输出(数字),当w=0输出(,+数字)。源代码:#include #include int main()int i,j,k,w,m;w=1; /定义整形变量w来通过w判断是否输出逗号 for(i=1;i=9;i+) /用i代表百位从1开始执行循环 for(j=0;j=9;j+) /用j代表十位从0开始执行循环 for(k=0;k=9;k+) /用k代表个位从0开始执行循环 m=i*100+j*10+k; /用i,j,k表示出3位数 if(pow(i,3)+pow(j,3)+pow(k,3)=m) /判断是否符合水仙花数的要求 if(w=1)printf(%d,m); /w=1第一个数字不输出逗号 else printf(,%d,m); /输出水仙花数 w=0; /让w=0在数字的前面输出逗号 return 0;案例二:用指针方法对10个整数按由大到小顺序排序问题分析:因为要求用指针,所以必须知道如何应用指针。通过在主函数中定义数组a存放10个整数,用选择排序法对10个数进行排序。 解题思路:在主函数中定义数组a存放10个整数,定义int*型指针变量p指向a0。定义函数sort使数组a中的元素按由大到小的顺序排列。在主函数中调用sort函数,用指针变量p作实参。sort函数的形参用数组名。用选择排序法进行排序。源代码:#includeint main()void sort(intx,int n);/sort函数声明int i,*p,a10;p=a;/指针变量p指向a0printf(please enter 10 integer number:);for(i=0;i10;i+) scanf(%d,p+);/输入10个整数p=a;/整形变量p重新指向a0;sort(p,10);/调用sort函数for(p=a,i=0;i10;i+)printf(%d,*p);输出排序后的10个数组元素p+;printf(n);return 0;void sort(int x,int n)/定义sort函数,x是形参数组名int i,j,k;for(i=0;in-1;i+)k=i;for(j=i+1;jxk)k=j;if(k!=j)t=xi;xi=xk; xk=t; 2.大作业报告实验要求:一 要具有一下功能:首先选择登陆账号类型,为管理员或者学生(权限不同),分别输入账号密码,验证正确则登陆系统若登陆的是管理员,则显示对应的功能选项1) 提供基本的菜单选项,能根据不同的选项执行不同操作; 2) 对学生信息进行录入,删除、修改、查询等操作,; 3) 对学生信息进行统计(如求各门课程平均分等)、排序等操作。若登陆的是学生账户,则显示对应的功能选项1) 提供基本的菜单选项,能根据不同的选项执行不同操作; 2) 查询学生自己的个人信,包括自己的学号,姓名,各门课程成绩等; 3) 修改自己的密码,统计自己成绩平均分,总分等。二要求1)管理员的账号密码均在程序中初始化; 2) 每个学生的信息统一用结构体来存储,结构体中包含学生的学号,姓名,密码,两个数组,一个用来存储课程名称,另一个用来存储各门课程成绩; 3) 修改自己的密码,统计自己成绩平均分,总分等。实验目的:用所学的知识和前面积累的编程经验实现一个较为完整的系统,尽量全部使用到函数、数组、指针和结构体。体现你的成果。题目分析:为了编一个较为完整的学生管理系统。首先需要用数组来储存学生信息。同时为了完成排序,求平均分,修改,删除等功能需要调用很多函数,通过调用函数来实现这些功能。涉及的知识点:数组,函数,冒泡排序法,循环,用分支结构等知识。实验结果:进入系统界面输入1 然后输入账号,密码进入管理员页面,因为是管理员,所以未存储学生信息,要先录入信息,再进行其他操作输入1开始录入学生信息,录入如下的两个学生信息返回主界面,输入4查询学生信息,输入学生姓名,可输出这位学生的信息返回主界面,输入5可求出各科的平均分返回主界面输入6可求出各科排序返回主界面输入3进入修改界面,输入要修改的学生姓名,然后输入修改信息,即可得出要修改的结果。进入主界面输入2进入删除界面,删除想要删除学生的信息,在显示的学生信息列表中,输入想要删除学生所处的行数,即可达到删除目的。管理员功能基本已经实现,下面是学生运行的结果:在初始界面按0输入学生账号,密码即可进入学生操作界面,进行查询信息,查看总分,平均分,修改密码等操作。返回主界面,输入1查看个人信息返回主界面,输入2查看个人总分返回主界面,输入4查看个人平均分返回主界面,输入3进入修改密码界面,输入想要修改的新密码,然后重新登录进入学生端3.实验总结起初得到大作业的题目,感觉很难,有着迷茫,不知道从何下手,如何去完成这个作业。曾一度认为这个大作业自己根本没法完成。可是慢慢的,看着同学们都在做大作业心中亦有着许多的不服气,认为同样学习别人可以做出来,自己为什么不可以。于是我开始尝试着去看教材,进一步消化所学的知识,同时也在网上查找资料,通过查阅逐渐有了一定基础,感觉可以开始做。可真正开始后才发现还是有很多地方还是不太明白,比如系统主体框架如何去搭建,在函数的调用方面如何去做,在调用的函数中如何编才可以达到完成目标的目的。后来慢慢的通过自己查阅书籍,寻求同学的帮助,大作业终于逐步完成。在这次大作业的完成过程中,虽然花了很多时间去查阅资料,很累。同时也感到自己很充实,在做的过程中花时间查阅资料进一步加深了对教材知识的巩固也进一步提高了自己分析问题的能力,编程的能力。对自身有很大的帮助。源代码:#include #include #include struct studentchar id20;char name20;char sex20;int math;int program;int pe;stu4450;int num=0;int main()void stu_check(void);void admin_check();void stu(void);system(cls);printf(管理员登陆请输入1,学生登陆请输入0:);int a;scanf(%d,&a);if(a=1)admin_check();else if(a=0)stu_check();return 0; void admin_check()void admin(void);printf(n请输入管理员账号:);char account20;int t;scanf(%s,account);printf(n请输入密码:);char password20;scanf(%s,password);if(strcmp(account,a)=0&strcmp(password,b)=0)admin();elseprintf(n账号或密码错误,继续请按1,返回请按0:);scanf(%d,&t);if(t=1)admin_check();else if(t=0)return;void admin(void)void menu_admin(void);menu_admin();void add(void);void del(void);void edt(void);void cha(void);void paixu(void);void ave(void);int t;m1:scanf(%d,&t);switch(t)case 1:add();break;case 2:del();break;case 3:edt();break;case 4:cha();break;case 5:ave();break;case 6:paixu();break;case 7: break;default:printf(输入错误!请重新输入:);goto m1; void menu_admin(void)system(cls);printf(请输入要使用的功能的序号:n);printf(* 1.录入学生成绩 *n);printf(* 2.删除学生成绩 *n);printf(* 3.修改学生成绩 *n);printf(* 4.查询学生成绩 *n);printf(* 5.求各课程平均分 *n);printf(* 6.各科排序 *n);printf(* 7.退出 *n);void add(void) void admin(void);int i=0;system(cls);printf(n请按照以下格式录入学生信息:n);printf(学号 姓名 性别 数学 程序 体育n);printf(example:n2140505082 li m 98 100 95nn);while(1)scanf(%s,stu44i.id);if(strcmp(stu44i.id,0)=0)break;elsescanf(%s %s %d %d %d,,stu44i.sex,&stu44i.math,&gram,&stu44i.pe);printf(id:%stname:%stsex:%stmath:%dtprogram:%dtpe:%dn,stu44i.id,,stu44i.sex,stu44i.math,gram,stu44i.pe);i+;printf(n请继续输入,返回请输入0。nn);num+;admin();void del(void)int n,i;printf(n所有学生信息:n);for(i=0;inum;i+)printf(id:%stname:%stsex:%stmath:%dtprogram:%dtpe:%dn,stu44i.id,stu44i.sex,,stu44i.math,gram,stu44i.pe);printf(n请输入你要删除学生的位置:n); scanf(%d,&n);printf(n删除后的学生信息:n);for(i=n-1;inum;i+)strcpy(stu44i.id,stu44i+1.id);strcpy(,stu44i+1.name);strcpy(stu44i.sex,stu44i+1.sex);stu44i.math=stu44i+1.math;gram=stu44i+1.program;stu44i.pe=stu44i+1.pe; for(i=0;inum-1;i+)printf(id:%stname:%stsex:%stmath:%dtprogram:%dtpe:%dn,stu44i.id,stu44i.sex,,stu44i.math,gram,stu44i.pe);printf(n输入任意数字继续查询,返回请输入0。nn);int k;scanf(%d,&k);if(k=0)admin(); void edt(void)int i; char str220;printf(n请输入姓名:n);scanf(%s,str2);for(i=0;inum;i+) if(strcmp(str2,)=0) printf(请输入修改信息:n); scanf(%s %s %s %d %d %d,stu44i.id,stu44i.sex,,&stu44i.math,&gram,&stu44i.pe); break; printf(修改后的信息为:n);for(i=0;inum;i+)printf(id:%stname:%stsex:%stmath:%dtprogram:%dtpe:%dn,stu44i.id,stu44i.sex,,stu44i.math,gram,stu44i.pe); printf(n返回请输入0。nn);int k;scanf(%d,&k);if(k=0)admin();void cha(void)int i; char str120;printf(n请输入姓名:n);scanf(%s,str1);for(i=0;inum;i+)if(strcmp(str1,)=0)printf(id:%stname:%stsex:%stmath:%dtprogram:%dtpe:%dn,stu44i.id,stu44i.sex,,stu44i.math,gram,stu44i.pe);printf(n输入任意数字继续查询,返回请输入0。nn);int k; scanf(%d,&k); if(k=0)admin(); else cha();void ave(void)int a,b,c,d,e,f,i;a=0;b=0;c=0;for(i=0;inum;i+) a=a+stu44i.math; for(i=0;inum;i+)b=b+gram;for(i=0;inum;i+)c=c+stu44i.pe;d=a/num;e=b/num;f=c/num;printf(数学平均分=%dn,d);printf(程序平均分=%dn,e);printf(体育平均分=%dn,f);printf(n返回请输入0。nn);int k; scanf(%d,&k); if(k=0)admin();void paixu(void) int i,j,t;for(j=0;jnum-i;j+)for(i=0;inum-1-j;i+)t=stu44i.math;stu44i.math=stu44i+1.math;stu44i+1.math=t;printf(数学成绩排序为:n);for(i=0;inum;i+)printf(%d ,stu44i.math);for(j=0;jnum-1;j+)for(i=0;inum-1-j;i+)t=stu44i.pe;stu44i.pe=stu44i+1.pe;stu44i+1.pe=t;printf(n体育成绩排序为:n);for(i=0;inum;i+)printf(%d ,stu44i.pe);for(j=0;jnum-1;j+)for(i=0;inum-1-j;i+)t=gram;gram=stu44i+1.program;stu44i+1.program=t;printf(n程序成绩排序为:n);for(i=0;inum;i+)printf(%d ,gram); printf(n返回请输入0。nn); int k; scanf(%d,&k); if(k=0)admin();char str420=abc;void stu_check(void)void stu(void);char str320=abc;printf(n请输学生账号:);char account20;int t;scanf(%s,account);printf(n请输入密码:);char password20;scanf(%s,password);if(strcmp(account,str3)=0&strcmp(password,str4)=0) stu();elseprintf(n账号或密码错误,继续请按1,返回请按0:);scanf(%d,&t);if(t=1)stu_check();else if(t=0)return; /*struct student stu4450=11,li,m,80,80,80,12,wang,m,85,85,85,13,zhou,w,90,90,90;*/void stu(void)char str120=2140505082;char str220=li;char str320=n;strcpy(stu441.id,str1);strcpy(,str2);strcpy(stu441.sex,str3); stu441.math=90; gram=95; stu441.pe=98;void stumenu_admin(void); void ck(void);void zf(void);void xg(void);void pj(void);int t;stumenu_admin();m1:scanf(%d,&t);switch(t)case 1:ck();break;case 2:zf();break;case 3:xg();break;case 4:pj();break;case 5: break;default:pr

温馨提示

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

评论

0/150

提交评论