C语言上机试验报告_第1页
C语言上机试验报告_第2页
C语言上机试验报告_第3页
C语言上机试验报告_第4页
C语言上机试验报告_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

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

文档简介

1、课程实验报告课程名称计算机程序设计(C)班级软件111实验日期姓名赵业乐学号实验成绩实验名称实验一 C 程序的运行环境和运行 C 程序的方法实验目的及要求1,熟悉VisualC+6.0环境。2 .了解建立控制台应用程序的基本步骤。3,初步了解VisualC+6.0的环境设置。4 .初步学会简单的程序调试方法。5 .学会编写简单的C程序。6 .初步熟悉C谛言操输入scanf函数、输出printf函数的使用。7.掌握C语言基本数据类型,熟悉变量的定义及变量的初始化和赋值操作。8 .掌握不同的类型数据之间赋值的规律。9.掌握C谛言的算术运算符的使用以及算术表达式的使用;掌握自加自减运算符的特点及使用

2、。实验环境Visual6.0+Windows7实验内容1 .按照上述步骤,创建一个基于控制台的应用程序,该程序项目中只包含一个源程序文件。功能为求两个整数的和,数据从键盘输入。2 .创建一个基于控制台的应用程序,求一元二次方程的根。使得当输入三个实数a,b,c(满足b*b-4*a*c0),能够求出方程a*x*x+b*x+c=0的两个实根,并显示在屏幕上。分析提示:通过键盘输入方程系数a,b,c的值,而后根据求根公式计算并输出它的两个根。算法描述及实实验一1、先定义两个变量a,b。2、键入a和b。3、输出两个数的和。实验二1、定义并输入abc02、判断d=bA2-4ac的大小。3、如果小于零则无

3、解,等于零有一个解,x1=(-b)/(2*a)。4、大于零有两个解。x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);5、输出结果。验步骤调试过1,8156,815648+156=20448+156=204Pressan9JteytocontintiePressan9Jteytocontintie- -程及2a ap ppbcbc:15G15G对个解:xi.=-2,x2xi.=-2,x2=-3=-3ressdnyKeytocontinue.ressdnyKeytocontinue.h.h hc c2121一个解:xTxTIressanykeytoIressan

4、ykeytocontinuecontinue(验结果总结掌握了掌握C语言基本数据类型,变量的定义及变量的初始化和赋值操作,不同的类型数据之间赋值的规律。了解了C谛言的算术运算符的使用以及算术表达式的使用,自加自减运算符的特点及使用。附实验-一1录#includevoidmain()(inta,b,s;scanf(%d%d”,&a,&b);printf(s=%dn,a+b);实验一2#include#includevoidmain()(doublea,b,c,d,x1,x2;printf(abc:);scanf(%lf%lf%lf,&a,&b,&c);d=

5、b*b-4*a*c;if(d0)printf(无解n);elseif(d=0)(x1=(-b)/(2*a);printf(个解:x=%gn,x1);else(x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(两个解:x1=%g,x2=%gn,x1,x2);)青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期姓名赵业乐学号实验成绩实验名称实验二选择结构程序设计实验目的及要求1 .掌握赋值语句的使用方法。2 .掌握各种类型数据的输入输出方法,能正确使用各种格式转换符。3 .能正确使用关系运算符及表达式、逻辑运算符及表达式。4.

6、熟练掌握if语句, 学会使用if-else语句设计双分支和多分支结构程序。5.熟练掌握switch语句的特点, 学会使用switch语句设计多分支结构程序。实验环境Visual6.0+Windows7实验内容3.编写程序,根据输入的学生成绩,给出相应的等级。90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。要求分别用if语句和switch语句实现。4,使用switch语句编写简单的四则运算程序。算法描述及实验步骤实验3用if语句时:先输入学生成绩,判断等级,然后直接输出等级代号A,B,C,D,E。用switch语句时:先输入学生成绩,除以十,取整。根据数值6到9判断等级。然后

7、输出等级代号A,B,C,D,E。实验4先定义子符义量c和数值及量a,b。然后判断子符义量为何种运算符号。最后输出相应结果。调试过程及实验314结果总结掌握了赋值语句的使川方法,各种类型数据的输入输出方法,能正确使用各种格式转换符、关系运算符及表达式、逻辑运算符及表达式。掌握了if语句,学会使用if-else语句设计双分支和多分支结构程序;掌握了switch语句的特点,学会使用switch语句设计多分支结构程序附录实验二3用if语句:#includevoidmain()(inta;printf(请输入学生成绩:n);scanf(%d,&a);if(a90)printf(该学生成绩等级是A

8、n);elseif(a80)printf(该学生成绩等级是Bn);elseif(a70)printf(该学生成绩等级是Cn);elseif(a60)printf(该学生成绩等级是Dn);elseprintf(该学生成绩等级是En);用switch语句:#includevoidmain()(inta,m;printf(请输入学生成绩:n);scanf(%d,&a);m=a/10;switch(m)(case9:printf(该学生的成绩等级是:An);case8:printf(该学生的成绩等级是:Bn);case7:printf(该学生的成绩等级是:Cn);case6:printf(该学

9、生的成绩等级是:Dn);default:printf(该学生的成绩等级是:En);实验二4#includevoidmain()(floata,b;charc;scanf(%f%c%f,&a,&c,&b);switch(c)(case+:printf(%fn,a+b);break;case-:printf(%fn,a-b);break;case*:printf(%fn,a*b);break;case/:printf(%fn,a/b);break;)青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-2姓名赵业乐学号实验成绩实验三循环结构

10、程序设计1 .熟练掌握while、do-while、for语句的特点,学会设计循环结构程序2 .掌握break语句以及continue语句的特点及使用范围。3 .学会编写循环嵌套程序。4 .结合程序掌握一些简单的算法。5 .进一步学习调试程序。Visual6.0+Windows74 .编程练习。求丫x2xn的部分和。直到最后一项的值小于1.0e-4e1xn+1提不:第n项un=x/n!,第n.项.Un+11nx/(n+1)!及Un+1=Un(x/(n+1)5 .编程练习。有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?分别是多少?实验名称验目的及算法描实验四1、调用math

11、,h凶数。2、定义xsij。输入x。3、直到n大于10000。4、i=i*(x/(j+1);s=s+i;5、输出s实验五1、定义ijkfre=0。2、利用二重for语句。for(i=1;i=4;i+)述 及实验步骤for(j=1;j=4;j+);for(k=1;k=4;k+)。3、if(i!=k&i!=j&k!=j),输出i*100+j*10+k。4、最后输出(总数为:dn,fre)调 试过 程及 实验结果3、412312413213414214321321423112312413213414214321321423123-123-12412433123143213242412

12、43312314321324341342412413421423431432341342412413421423431432区数为:24:24Pi*essatniykeytocentinivePi*essatniykeytocentinive总结(对实验结果进行分析,问题回答,实验心得体会及改进意见)附录实验三3#include#includevoidmain()intx;doubles,i,j;scanf(%d,&x);s=1,j=0;for(i=1;i=pow(10,-4);j+)i=i*(x/(j+1);s=s+i;printf(s=%fn,s);实验三4#includevoid

13、main()inti,j,k,fre=0;for(i=1;i=4;i+)for(j=1;j=4;j+)for(k=1;k=4;k+)if(i!=k&i!=j&k!=j)printf(%5d,i*100+j*10+k);fre=fre+1;)printf(n);printf(总数为:%dn,fre);)青岛理工大学课程实验报告课程名称姓名计算机程序设计(C)赵业乐班级学号软件111实验日期实验成绩2012-5-2实验名称实验四数组程序设计实验目的及要求1.掌心维数组、二维数组的定义、引用及其存储方式。2.掌握字符数组、字符串以及字符串数组的含义及区别。3.掌握常用字符函数及字符串

14、函数的使用。4.掌握常用数组的排序、查找等算法。实验环境VisualC+6.0WindowsXP实 验内容2 .编写程序,定义一个含有30个元素的int类型数组.依次给数组元素赋奇数1、3、5、7;然后按每行十个数顺序输出,最后再按每行十个数逆序输出。3 .已知数组中的值在0-9的范围内,统计每个整数的个数。算法描述及实验步骤实验21、定义一个一维数组a30,i,j=1。2、利用for循环输出,ai+1=ai+2;printf(%6d,ai)。3、输出数组,定义初始值1或者59。确定顺、逆序。实验31、定义一个一维随机数组含20个数。2、输出该一维数组。3、禾I用for循环intm,n,k;f

15、or(m=0;m=9;m+)for(n=0;n20;n+)if(m=an)。4、输出每个数*有几个。调 试过程2、3、及实验结果7 7个个个 个个 个1420331321i1420331321i有有 有有 有育 有有 有有1711517115n ntytyKEKEy ycontinuecontinue总结附录掌握常用字符函数及字符串函数的使用,掌握常用数组的排序、查找等算法。实验2#includevoidmain()(inta30,i,j=1;for(i=1;i31;i+)(a1=1;ai+1=ai+2;printf(%6d,ai);if(i%10=0)printf(n);)printf(n)

16、;for(i=1;i31;i+)(a1=59;ai+1=ai-2;printf(%6d,ai);if(i%10=0)printf(n);)实验4#include#includevoidmain()(inti,a20;(ai=rand()%10;printf(%3d,ai);)printf(n);intm,n,k;for(m=0;m=9;m+)(k=0;for(n=0;n20;n+)if(m=an)k+;printf(%d有djn,m,k);)青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件 111实验日期2012-5-7姓名赵业乐学号实验成绩实验名称实验五函数实验目的及要求1.掌握

17、函数定义的各个要素。如函数返回值的类型、形式参数与实际参数等。2.掌握变量的作用域和生存期的概念。3.掌握局部变量与全局变量的区别、静态局部变量和局部变量的区别、静态全局变量和全局变量的区别;理解外部变量和外部函数的概念。4.理解数组作为函数的参数的含义。5.理解函数的嵌套调用。6.掌握函数的递归调用。实验环境VisualC+6.0window7实验内容3 .求100200之间的素数。要求:每行10个数输出;定义子函数isprime,函数原型为intisprime(intn);4 .设f(x)=(2x3+3x2-4x+1)/(10 x2+3),q(x)=3f(x)3+2f(x)2+f(x),编

18、程实现输入x的值, 计算输出q(x)的值,要求有q(x)和f(x)的定义。5 .求菲波那契数列1,1,2,3,5,8,13,21,34的前20项。要求:使用递归;每行输出5个数。算法实验 31、定义函数 isprime(intn)。2、当(n%i=0)时,返回 0.否则返回 1。3、定义 main 函数。确定范围 100200.4k 当 isprime 函数成描立,每五个一行输出。述实验41、定义函数及实验f=(2*pow(x,3)+3*pow(x,2)-4*x+1)/(10*pow(x,2)+3);q=3*pow(f(x),3)+2*pow(f(x),2)+f(x);。2、定义main函数。

19、3、输出q函数。实验51、定义fib函数。前两项为1.2、利用递归函1,掌握了函数定义的各个要素。2,如函数返回值的类型、形式参数与实际参数等3,需要进一步掌握函数。实验3#includeintisprime(intn)(inti;for(i=2;in;i+)(if(n%i=0)return0;步骤W试过程及实验结果43.165B503.165B50改nykeytocontinuenykeytocontinueH H-m-r-a-rv-r-ik98715972584418167659871597258441816765PressanykeytocontinuePressanykeytocont

20、inue)return1;)main()(intn,m=0;for(n=100;n=200;n+)(if(isprime(n)(printf(%5d,n);m+;)printf(n);)实验4#include#includedoublef(floatx)doublec;c=(2*pow(x,3)+3*pow(x,2)-4*x+1)/(10*pow(x,2)+3);returnc;)doubleq(floatx)doublec;c=3*pow(f(x),3)+2*pow(f(x),2)+f(x);returnc;)main()floatx;doubley;scanf(%f,&x);y=q

21、(x);printf(%lfn,y);)实验5#includeintfib(intx)if(x=1|x=2)return1;elsereturnfib(x-1)+fib(x-2);)main()intn,s;for(n=1;n=20;n+)s=fib(n);printf(%-5d,s);if(n%5=0)printf(n);)printf(%n);)青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-16姓名赵业乐学号实验成绩实验名称实验六指针实验目的及要求1.理解指针的定义,学会指针变量的初始化以及指针可以参与的运算。2.掌握指针和一维数组的关系。3.理解

22、指针和二维数组的关系、理解行指针(或数组指针)的概念。4.理解指针数组和数组指针的区别。5.理解指针和函数的关系以及指针函数和函数指针的含义。6.了解指针的指针(即二级指针)o实验环境VisualC+6.0window7实验内容6 .编写程序。读入三个浮点数,将整数部分和小数部分分别输出。要求使用指针作形参。7 .编写一个函数,返回数组元素中最大值的地址,并在主函数中输出该几系。算法描述及实验步骤实验61、定义函数,指针做形参。2、定义a为整数部分,*p-a既是小数部分。然后输出。3、主函数中,键入三个浮点型数。并使用fu函数。实验71、定义dizhi函数,指针做形参。返回地址。2、定义主函数

23、,以及一个数组。3、调用dizhi函数,输出数组和最大值。调试过程及实验结果6、7、2.36 6;亚数季分是1 1小数部分是0.0.5 5阿皿日整数甑分是2 2小数部分是0 0,300000,300000整数部分是6 6小数部分是目-700000700000P1*essanykeytocontinue.P1*essanykeytocontinue.最大数是;9 9地址是12449121244912Pressanvkeytocontinue.Pressanvkeytocontinue.1总结1.运用指针时应时刻注意指针指向的改变,避免逻辑上的错误,加大编程时的难度。2.通过指针

24、变量可以提高程序质量,编写程序方便灵活,可以实现多个值的返回附实验6 6录#includevoidfu(float*p)(inta;a=(int)*p;printf(整数部分是%d小数部分是%fn,a,*p-a);)main()(floata3;inti;for(i=0;i3;i+)(scanf(%f,&ai);fu(&ai);)实验7 7#includeintdizhi(int*p)(ints;p=&s;printf(地址是:dn,p);returnp;main()(inti,s,a10,*p;for(i=0;i10;i+)ai=rand()%10;printf(%d

25、,ai);printf(n);s=a0;for(i=0;i10;i+)if(sai+1)s=ai;printf(最人数是;%dn,s);dizhi(&s);青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-5-16姓名赵业乐学号实验成绩实验名称指针实验目的及要求1.理解指针的定义,学会指针变量的初始化以及指针可以参与的运算。2.掌握指针和一维数组的关系。3.理解指针和二维数组的关系、理解行指针(或数组指针)的概念。4.理解指针数组和数组指针的区别。5.理解指针和函数的关系以及指针函数和函数指针的含义。6.了解指针的指针(即二级指针)o实验环境Visua

26、lC+6.0window7实验内容6 .编写程序。读入三个浮点数,将整数部分和小数部分分别输出。要求使用指针作形参。7.编写一个函数,返回数组元素中最大值的地址,并在主函数中输出该儿素。算法描述及实验步骤实验61、定义函数,指针做形参。2、定义a为整数部分,*p-a既是小数部分。然后输出。3、主函数中,键入三个浮点型数。并使用fu函数。实验71、定义dizhi函数,指针做形参。返回地址。2、定义主函数,以及一个数组。3、调用dizhi函数,输出数组和最大值。调试过程及实验结果6、1H7、1.52.36-71.52.36-7隹数轮分是1 1小数部分是0 0. .500000500000整数甑分是

27、2 2小数部分是0 0,300000,300000整数甑分是6 6小数部分是0 0- -700000700000Presssanykeytocontinue.Presssanykeytocontinue.最大数是;9 9地址是1124491211244912Pressanvtocontinue.Pressanvtocontinue.1总结1.运用指针时应时刻注意指针指向的改变,避免逻辑上的错误,加大编程时的难度。2.通过指针变量可以提高程序质量,编写程序方便灵活,可以实现多个值的返回附录实验6 6#includevoidfu(float*p)inta;a=(int)*p;printf(整数部分

28、是%d小数部分是%fn,a,*p-a);)main()(floata3;inti;for(i=0;i3;i+)(scanf(%f,&ai);fu(&ai);)实验7 7#includeintdizhi(int*p)(ints;p=&s;printf(地址是:%dn,p);returnp;main()(inti,s,a10,*p;for(i=0;i10;i+)ai=rand()%10;printf(%d,ai);printf(n);s=a0;for(i=0;i10;i+)if(sai+1)s=ai;printf(最大数是;%dn,s);dizhi(&s);青岛理工

29、大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2011-5-30姓名赵业乐学号实验成绩实验名称实验七链去实验目的及要求1.掌握结构体类型变量的定义和使用。2.掌握结构体类型数组的概念和应用。3.掌握链表的概念,初步学会对链表进行操作。实验环境VC+6.0实验内容1.编写程序。有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。2.建立一个学生链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。算

30、法描述及实验步骤第一题定义一个结构体变量,包含学号、姓名、3门课的成绩定义一个可以输入学生信息的函数。定义一个函数可以求平均分并返回。输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。第二题定义一个结构体变量,包括学号、姓名、性别、年龄和指向下一个节点的指针。创建链表,输入学生信息。定义一个可以输出学生信息函数。定义一个可以删除节点的函数,当输入一个年龄时,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。卷入学生信息城专学号、姓名、性别、年龄输入第1 1个学生指直801801yddongyddongn2 2时输入第2 2个学生信息002002xia

31、ahinvxiaahinv2121输入第3 3个学生信息003003dapengfmdapengfm1919创建链表L L2 2- -显示链表3-3-删除相同年龄浦-退出操作3输入要删除的年龄20我噩醒史塔示链表,3-,3-删除相同年龄,0,0-退出操作牌同2 2xiaobinwxiaobinw2121第2 2个学生信息:3 3dapengmdapengm1919创建链表.2 2-显示链表.3-.3-删除相同年龄.El-El-退出操作熟练地掌握共用体;在写程序时可以熟练地使用链表进行数据操作。/第一题代码如下:#include#defineN5voidinput(structstudentst

32、ud);doubleav1(structstudentstud);doubleav2(structstudentstud);doubleav3(structstudentstud);intmax(structstudentstud);structstudent(intno;charname10;doubledegreel;doubledegree2;doubledegree3;调试过程及实验结果分开输入三门分数1 1mapymapy跖bJbJ时入第2 2个学生信息蜘入第3 3个学生信息M03aliceM03alice999899989输入第4 4个 学 生 信 息004004FrinkFrin

33、k85856S6S4 4隔入第5 5个学生信息005005ellorellor8658686586分数最高的学生信息如下:Balice99-00Balice99-009898PressanykeytocontinuePressanykeytocontinue总结附录;voidmain()(structstudentstudN;doubleaver3,avg;inta,i;input(stud);aver0=av1(stud);aver1=av2(stud);aver2=av3(stud);a=max(stud);avg=(studa.degree1+studa.degree2+studa.de

34、gree3)/3.0;for(i=0;i3;i+)(printf(第门平均分:t,i+1);printf(%.2lfn,averi);printf(分数最高的学生信息如下:n);printf(%dt%st%.21f%.2lf%.2lf%.2lfn,studa.no,,studa.degree1,studa.degree2,studa.degree3,avg);voidinput(structstudentstud)/ft入N个学生的信息(inti;printf(学生信息输入格式:学号、姓名、分开输入三门分数n);for(i=0;iN;i+)(printf(输入第%d个学生信

35、息:n,i+1);scanf(%d%s%lf%lf%lf,&studi.no,,&studi.degree1,&studi.degree2,&studi.degree3);doubleav1(structstudentstud)/计算第一门课的平均分(inti;doublea=0.0,b;for(i=0;iN;i+)a+=studi.degree1;b=a/N;returnb;)doubleav2(structstudentstud)/计算第二门课的平土匀分(inti;doublea=0.0,b;for(i=0;iN;i+)a+=studi.

36、degree2;b=a/N;returnb;)doubleav3(structstudentstud)/计算第三门课的平土匀分(inti;doublea=0.0,b;for(i=0;iN;i+)a+=studi.degree3;b=a/N;returnb;)intmax(structstudentstud)/脩找分数最大的学生下标(doublem=0,aN;inti,k=0;for(i=0;iN;i+)(ai=studi.degree1+studi.degree2+studi.degree3;if(mai)(m=ai;k=i;)returnk;)/第二题代码如下:#include#includ

37、e#defineN3typedefstructstud(intno;charname10;charsex10;intage;structstud*next;Stud;Stud*create();voidshow(Stud*head);voiddelet(Stud*head);Stud*getnode(Stud*head,intn);voidshan(Stud*head);voidmain()主函数(Stud*head;intn;do(printf(1-创建链表,2-显示链表,3-删除相同年龄,0-退出操作n);scanf(%d,&n);switch(n)(case1:head=crea

38、te();break;case2:show(head);break;case3:delet(head);break;default:break;while(n!=0);Stud*create()/创建链表储存学生信息(Stud*p,*head,*r;inti;head=(Stud*)malloc(sizeof(Stud);r=head;printf(输入学生信息格式:学号、姓名、性别、年龄n);for(i=1;ino,p-name,p-sex,&p-age);r-next=p;r=p;r-next=NULL;returnhead;voidshow(Stud*head)/显示学生信息(i

39、nti=0;Stud*p=head-next;printf(学生信息如下:n);while(p!=NULL)(printf(第个学生信息:nn,i+1);printf(%dt%st%st%dn,p-no,p-name,p-sex,p-age);p=p-next;i+;Stud*getnode(Stud*head,intn)(inti=1;Stud*p=head;if(n1)returnNULL;while(p!=NULL&inext;i+;if(p!=NULL)returnp;elsereturnNULL;voiddelet(Stud*head)/删除与输入年龄相同的学生信息(inty

40、ear,i=1,k=1;Stud*p=head-next,*q;printf(输入要删除的年龄n);scanf(%d,&year);while(p!=NULL)(if(year=p-age)(if(k=1)(head-next=p-next;free(p);p=head;else(q=getnode(head,k);free(p);p=q;)elsek+;p=p-next;)printf(相同年龄已删除n);)青岛理工大学课程实验报告课程名称计算机程序设计(C)班级软件111实验日期2012-6-8姓名赵业乐学号实验成绩实验名称实验八,综合程序设计实验目的及要求1.掌握文件以及缓冲文件

41、系统、文件指针的概念。2.学会使用文件打开、关闭、读、写等文件操作函数。3.通过一个综合程序,使学生对综合运用C语言程序设计语言有初步的认识。实验环境VC+6.0实验内容一、学生管理系统1、学生基本信息的管理,包括添加、修改、删除、查找、全删等操作;2、课程数据的管理,包括添加、修改、删除、查找、全删等操作;3、学习成绩数据的管理,包括添加、修改、删除、查找、全删等操作;4、学生成绩查询系统,包括按学号、按课程号、按班号统计学生的成绩。算法描述及实首先自定义学生信息、课程数据、学生成绩的结构体,定义这些变量的链表,一边对这些数据进行操作。一、在写主函数时,先把数据从文件中提取到链表中,操作后再

42、写入文件中进行保存。二、在学生信息管理系统中,添加,即是判断是否存在相同学号,没验步骤有通过链表进行添加操作,有的话进行提示,修改时只改对应学号的信息,学号/、需要修改,但需要同时修改成绩管理系统中的对应学号的学生姓名, 在进行删除操作时,先查找是否后和需要修改的学号相对应的学生信息, 有的话则按照链表删除操作进行删除,查找时判断是否有需要查找的学号,若有,输出对应的学生信息,进行全删操作时,和链表的释放操作差不多,但是要注意的是不能释放头结点的地址,它是一个全局变量,释放后不能进行其他操作。在课程数据、学习成绩数据的处理时,采取同样的处理方式;三、学生成绩查询系统分按学号、按课程号、按班号三

43、种方式来统计学生的成绩。调试过程及实验结果总结可以熟练地进行文件操作,打开文件,写文件,向文件中添加内容,以及文件的读取等操作进行编写小型程序。附录Student文件#include#include#include#include#includeschool.hvoidaddstudent();voiddisplaystudent();voidalterstudent();voidchangename(intno,charname);voidfindstudent();voiddeletstudent();voiddeleallstu();externStudNode*studenthead;

44、externScoreNode*scorehead;voidstudent()intx;doprintf(1-添加,2-修改,3-显示,4-查找,5-删除,6-全删。返回n);scanf(%d,&x);switch(x)case1:addstudent();break;case2:alterstudent();break;case3:displaystudent();break;case4:findstudent();break;case5:deletstudent();break;case6:deleallstu();break;case0:break;default:printf(

45、选择错误n);break;while(x!=0);voidaddstudent()/添加一个学生信息StudNode*p=studenthead-next,*s,*q=studenthead;intno;StudTypest;printf(输入添加的学生学号n);scanf(%d,&no);while(p!=NULL&p-data.no!=no)q=p;p=p-next;if(p=NULL)/学号不重复s=(StudNode*)malloc(sizeof(StudNode);printf(输入学生信息格式:姓名、年龄、班号n);scanf(%s%d%s,,&

46、;st.age,st.classno);st.no=no;s-data=st;s-next=q-next;q-next=s;elseprintf(学号重复n);voiddisplaystudent()StudNode*p=studenthead-next;if(p!=NULL)printf(学生信息如下:n);printf(学号姓名年龄班号n);while(p!=NULL)printf(%3d%8s%5d%8sn,p-data.no,,p-data.age,p-data.classno);p=p-next;printf(学生信息输出完毕n);elseprintf(无学生信

47、息n);voidalterstudent()/修改一个学生的信息,但是学号不改变,同时改变成绩管理文件的姓名StudNode*p=studenthead-next;intno;StudTypest;if(p!=NULL)printf(输入要修改白学生学号n);scanf(%d,&no);while(p!=NULL&p-data.no!=no)p=p-next;if(p!=NULL)printf(输入修改学生信息,格式:姓名、年龄、班号n);scanf(%s%d%s,,&st.age,st.classno);st.no=no;p-data=st;change

48、name(st.no,);elseprintf(未查到要修改信息的学生n);voidchangename(intno,charname)/l改学生成绩管理系统中的名字ScoreNode*p2=scorehead-next;while(p2!=NULL&p2-data.no!=no)p2=p2-next;if(p2!=NULL)strcpy(,name);elseprintf(在成绩管理系统中未发现要修改的学生资料n);voidfindstudent()/根据学号查找学生信息并输出(StudNode*p=studenthead;intno;print

49、f(输入要查找白学生学号n);scanf(%d,&no);while(p!=NULL&p-data.no!=no)p=p-next;if(p!=NULL)(printf(要查找的学生信息如下:n);printf(%3d%8s%5d%8sn,p-data.no,,p-data.age,p-data.classno);elseprintf(未找到该学号的学生信息n);voiddeletstudent()侨艮据学号删除学生信息(StudNode*p=studenthead,*q;intno;printf(输入要删除白学生学号n);scanf(%d,&no

50、);while(p!=NULL&p-data.no!=no)(q=p;p=p-next;if(p!=NULL)(q-next=p-next;free(p);printf(学号对应学生信息已删除n);elseprintf(要删除的学生信息不存在n);voiddeleallstu()删除全部学生信息(StudNode*p=studenthead-next,*q;if(studenthead-next!=NULL)(q=p-next;while(q!=NULL)free(p);p=q;q=q-next;)free(p);studenthead-next=NULL;printf(文件已全删n)

51、;)elseprintf(不存在学生信息n);)Score文件#include#include#includeschool.h#defineN100voidaddscore();voidshowscore();voidalterscore();voidfindscore();voiddelescore();voiddeleallsc();externCourseNode*coursehead;externScoreNode*scorehead;voidscore()intx;doprintf(1-添 加,2- 修 改,3- 显 示,4- 查 找,5- 删 除,6- 全 删,0- 返 回n);s

52、canf(%d,&x);switch(x)case1:addscore();break;case2:alterscore();break;case3:showscore();break;case4:findscore();break;case5:delescore();break;case6:deleallsc();break;case0:break;default:printf(选择错误n);break;)while(x!=0);)voidaddscore()/膝力个分数t己录(ScoreNode*p2=scorehead-next,*r2=scorehead,*s2,*tN;ScoreTypesc;intn=0,i;printf(输入添加学生学号n);scanf(%d”,&sc.no);while(p2!=NULL)(if(p2-data.no=sc.no)(tn=p2;n+;r2=p2;p2=p2-next;if(n=0)学号不重复,可以添加(s2=(ScoreNode*)malloc(sizeof(ScoreNode);printf(输入要添加的学生信息格式:名字、课程号、课程名、分数n);scanf(%s%d%s%lf,

温馨提示

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

评论

0/150

提交评论