2024年C语言 上机实验报告_第1页
2024年C语言 上机实验报告_第2页
2024年C语言 上机实验报告_第3页
2024年C语言 上机实验报告_第4页
2024年C语言 上机实验报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期.04.21姓名赵亚東學号试验成绩试验名称试验一C程序的运行环境和运行C程序的措施实验目的及要求1.熟悉VisualC++6.0环境。2.理解建立控制台应用程序的基本环节。3.初步理解VisualC++6.0的环境设置。4.初步學會简朴的程序调试措施。5.學會编写简朴的C程序。6.初步熟悉C語言操输入scanf函数、输出printf函数的使用。7.掌握C語言基本数据类型,熟悉变量的定义及变量的初始化和赋值操作。8.掌握不一样的类型数据之间赋值的规律。9.掌握C語言的算术运算符的使用以及算术体現式的使用;掌握自加自減运算符的特點及使用。实验环境Visual6.0++Windows7实验内容1.按照上述环节,创立一种基于控制台的应用程序,该程序项目中只包括一种源程序文献。功能為求两個整数的和,数据從键盘输入。2.创立一种基于控制台的应用程序,求一元二次方程的根。使得當输入三個实数a,b,c(满足b*b-4*a*c>0),可以求出方程a*x*x+b*x+c=0的两個实根,并显示在屏幕上。分析提醒:通過键盘输入方程系数a,b,c的值,而後根据求根公式计算并输出它的两個根。算法描述及实验步骤试验一先定义两個变量a,b。2、键入a和b。3、输出两個数的和。试验二1、定义并输入abc。2、判断d=b^2-4ac的大小。3、假如不不小于零则無解,等于零有一种解,x1=(-b)/(2*a)。4、不小于零有两個解。x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);5、输出成果。调试過程及实验結果12總結掌握了掌握C語言基本数据类型,变量的定义及变量的初始化和赋值操作,不一样的类型数据之间赋值的规律。理解了C語言的算术运算符的使用以及算术体現式的使用,自加自減运算符的特點及使用。附录试验一1#include<stdio.h>voidmain(){ inta,b,s; scanf("%d%d",&a,&b); printf("s=%d\n",a+b);}试验一2#include<stdio.h>#include<math.h>voidmain(){ doublea,b,c,d,x1,x2; printf("abc:"); scanf("%lf%lf%lf",&a,&b,&c); d=b*b-4*a*c; if(d<0) printf("無解\n"); elseif(d==0) { x1=(-b)/(2*a); printf("一种解:x=%g\n",x1); } else { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("两個解:x1=%g,x2=%g\n",x1,x2); }}青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期.4.28姓名赵亚東學号试验成绩试验名称试验二选择构造程序设计实验目的及要求1.掌握赋值語句的使用措施。2.掌握多种类型数据的输入输出措施,能對的使用多种格式转换符。3.能對的使用关系运算符及体現式、逻辑运算符及体現式。4.纯熟掌握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判断等级。然後输出等级代号A,B,C,D,E。试验4先定义字符变量c和数值变量a,b。然後判断字符变量為何种运算符号。最终输出對应成果。调试過程及实验結果34總結掌握了赋值語句的使用措施,多种类型数据的输入输出措施,能對的使用多种格式转换符、关系运算符及体現式、逻辑运算符及体現式。掌握了if語句,學會使用if-else語句设计双分支和多分支构造程序;掌握了switch語句的特點,學會使用switch語句设计多分支构造程序附录试验二3用if語句:#include<stdio.h>voidmain(){ inta; printf("請输入學生成绩:\n"); scanf("%d",&a); if(a>90) printf("该學生成绩等级是A\n"); elseif(a>80) printf("该學生成绩等级是B\n"); elseif(a>70) printf("该學生成绩等级是C\n"); elseif(a>60) printf("该學生成绩等级是D\n"); else printf("该學生成绩等级是E\n");}用switch語句:#include<stdio.h>voidmain(){ inta,m; printf("請输入學生成绩:\n"); scanf("%d",&a); m=a/10; switch(m) { case9:printf("该學生的成绩等级是:A\n"); case8:printf("该學生的成绩等级是:B\n"); case7:printf("该學生的成绩等级是:C\n"); case6:printf("该學生的成绩等级是:D\n"); default:printf("该學生的成绩等级是:E\n"); }}试验二4#include<stdio.h>voidmain(){floata,b; charc; scanf("%f%c%f",&a,&c,&b); switch(c) { case'+':printf("%f\n",a+b);break; case'-':printf("%f\n",a-b);break; case'*':printf("%f\n",a*b);break; case'/':printf("%f\n",a/b);break; }}青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期-5-2姓名赵亚東學号试验成绩试验名称试验三循环构造程序设计实验目的及要求1.纯熟掌握while、do-while、for語句的特點,學會设计循环构造程序。2.掌握break語句以及continue語句的特點及使用范围。3.學會编写循环嵌套程序。3.結合程序掌握某些简朴的算法。4.深入學习调试程序。实验环境Visual6.0++Windows7实验内容4.编程练习。求的部分和。直到最终一项的值不不小于1.0e-4。提醒:第n项un=xn/n!,第n+1项un+1=xn+1/(n+1)!及un+1=un(x/(n+1))5.编程练习。有1、2、3、4四個数字,能构成多少個互不相似且無反复数字的三位数?分别是多少?算法描述及实验步骤试验四1、调用<math,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、最终输出("總数為:%d\n",fre)调试過程及实验結果3、4、總結(對试验成果進行分析,問題回答,试验心得体會及改善意見)附录试验三3#include<stdio.h>#include<math.h>voidmain(){ 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=%f\n",s);}试验三4#include<stdio.h>voidmain(){ 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("總数為:%d\n",fre);}青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期-5-2姓名赵亚東學号试验成绩试验名称试验四数组程序设计实验目的及要求1.掌握一维数组、二维数组的定义、引用及其存储方式。2.掌握字符数组、字符串以及字符串数组的含义及区别。3.掌握常用字符函数及字符串函数的使用。4.掌握常用数组的排序、查找等算法。实验环境VisualC++6.0WindowsXP实验内容2.编写程序,定义一种具有30個元素的int类型数组.依次給数组元素赋奇数1、3、5、7……;然後按每行拾個数次序输出,最终再按每行拾個数逆序输出。3.已知数组中的值在0-9的范围内,记录每個整数的個数。算法描述及实验步骤试验21、定义一种一维数组a[30],i,j=1。2、运用for循环输出, a[i+1]=a[i]+2;printf("%6d",a[i])。3、输出数组,定义初始值1或者59。确定顺、逆序。试验31、定义一种一维随机数组含20個数。2、输出该一维数组。3、运用for循环intm,n,k;for(m=0;m<=9;m++)for(n=0;n<20;n++) if(m==a[n])。4、输出每個数各有几种。调试過程及实验結果2、 3、總結掌握常用字符函数及字符串函数的使用,掌握常用数组的排序、查找等算法。附录试验2#include<stdio.h>voidmain(){ inta[30],i,j=1; for(i=1;i<31;i++) { a[1]=1; a[i+1]=a[i]+2; printf("%6d",a[i]); if(i%10==0) printf("\n"); } printf("\n"); for(i=1;i<31;i++) { a[1]=59; a[i+1]=a[i]-2; printf("%6d",a[i]); if(i%10==0) printf("\n"); }}试验4#include<stdio.h>#include<stdlib.h>voidmain(){ inti,a[20]; for(i=0;i<20;i++) { a[i]=rand()%10; printf("%3d",a[i]); } printf("\n"); intm,n,k; for(m=0;m<=9;m++) { k=0; for(n=0;n<20;n++) if(m==a[n]) k++; printf("%d有%d個\n",m,k); }}青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期-5-7姓名赵亚東學号试验成绩试验名称试验五函数实验目的及要求1.掌握函数定义的各個要素。如函数返回值的类型、形式参数与实际参数等。2.掌握变量的作用域和生存期的概念。3.掌握局部变量与全局变量的区别、静态局部变量和局部变量的区别、静态全局变量和全局变量的区别;理解外部变量和外部函数的概念。4.理解数组作為函数的参数的含义。5.理解函数的嵌套调用。6.掌握函数的递归调用。实验环境VisualC++6.0window7实验内容3.求100~200之间的素数。规定:每行10個数输出;定义子函数isprime,函数原型為intisprime(intn);4.设f(x)=(2x3+3x2-4x+1)/(10x2+3),q(x)=3f(x)3+2f(x)2+f(x),编程实現输入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函数。确定范围100~200.4、當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函数。3、输出q函数。试验51、定义fib函数。前两项為1.2、运用递归函。Fib(x)=fib(x-1)+fib(x-2);。3、每五项一行输出。调试過程及实验結果3、4、5、總結1,掌握了函数定义的各個要素。2,如函数返回值的类型、形式参数与实际参数等.3,需要深入掌握函数。附录试验3#include<stdio.h>intisprime(intn){ inti; for(i=2;i<n;i++) { if(n%i==0) return0; } return1;}main(){ intn,m=0; for(n=100;n<=200;n++) { if(isprime(n)) { printf("%5d",n); m++; } if(m%10==0) printf("\n"); } printf("\n");}试验4#include<stdio.h>#include<math.h>doublef(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(x); printf("%lf\n",y);}试验5#include<stdio.h>intfib(intx){ if(x==1||x==2) return1; else returnfib(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试验曰期-5-16姓名赵亚東學号试验成绩试验名称试验六指针实验目的及要求1.理解指针的定义,學會指针变量的初始化以及指针可以参与的运算。2.掌握指针和一维数组的关系。3.理解指针和二维数组的关系、理解行指针(或数组指针)的概念。4.理解指针数组和数组指针的区别。5.理解指针和函数的关系以及指针函数和函数指针的含义。6.理解指针的指针(即二级指针)。实验环境VisualC++6.0window7实验内容6.编写程序。讀入三個浮點数,将整数部分和小数部分分别输出。规定使用指针作形参。7.编写一种函数,返回数组元素中最大值的地址,并在主函数中输出该元素。算法描述及实验步骤试验61、定义函数,指针做形参。2、定义a為整数部分,*p-a既是小数部分。然後输出。3、主函数中,键入三個浮點型数。并使用fu函数。试验71、定义dizhi函数,指针做形参。返回地址。2、定义主函数,以及一种数组。3、调用dizhi函数,输出数组和最大值。调试過程及实验結果6、7、總結1.运用指针時应時刻注意指针指向的变化,防止逻辑上的錯误,加大编程時的难度。2.通過指针变量可以提高程序质量,编写程序以便灵活,可以实現多种值的返回附录试验6#include<stdio.h>voidfu(float*p){ inta; a=(int)*p; printf("整数部分是%d小数部分是%f\n",a,*p-a);}main(){ floata[3]; inti; for(i=0;i<3;i++) { scanf("%f",&a[i]); fu(&a[i]); }}试验7#include<stdio.h>intdizhi(int*p){ ints; p=&s; printf("地址是:%d\n",p); returnp;}main(){ inti,s,a[10],*p; for(i=0;i<10;i++) {a[i]=rand()%10; printf("%d",a[i]); } printf("\n"); s=a[0]; for(i=0;i<10;i++) { if(s<a[i+1]) s=a[i]; }printf("最大数是;%d\n",s); dizhi(&s);}青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期-5-16姓名赵亚東學号试验成绩试验名称指针实验目的及要求1.理解指针的定义,學會指针变量的初始化以及指针可以参与的运算。2.掌握指针和一维数组的关系。3.理解指针和二维数组的关系、理解行指针(或数组指针)的概念。4.理解指针数组和数组指针的区别。5.理解指针和函数的关系以及指针函数和函数指针的含义。6.理解指针的指针(即二级指针)。实验环境VisualC++6.0window7实验内容6.编写程序。讀入三個浮點数,将整数部分和小数部分分别输出。规定使用指针作形参。7.编写一种函数,返回数组元素中最大值的地址,并在主函数中输出该元素。算法描述及实验步骤试验61、定义函数,指针做形参。2、定义a為整数部分,*p-a既是小数部分。然後输出。3、主函数中,键入三個浮點型数。并使用fu函数。试验71、定义dizhi函数,指针做形参。返回地址。2、定义主函数,以及一种数组。3、调用dizhi函数,输出数组和最大值。调试過程及实验結果6、7、總結1.运用指针時应時刻注意指针指向的变化,防止逻辑上的錯误,加大编程時的难度。2.通過指针变量可以提高程序质量,编写程序以便灵活,可以实現多种值的返回附录试验6#include<stdio.h>voidfu(float*p){ inta; a=(int)*p; printf("整数部分是%d小数部分是%f\n",a,*p-a);}main(){ floata[3]; inti; for(i=0;i<3;i++) { scanf("%f",&a[i]); fu(&a[i]); }}试验7#include<stdio.h>intdizhi(int*p){ ints; p=&s; printf("地址是:%d\n",p); returnp;}main(){ inti,s,a[10],*p; for(i=0;i<10;i++) {a[i]=rand()%10; printf("%d",a[i]); } printf("\n"); s=a[0]; for(i=0;i<10;i++) { if(s<a[i+1]) s=a[i]; }printf("最大数是;%d\n",s); dizhi(&s);}青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期-5-30姓名赵亚東學号试验成绩试验名称试验七链表实验目的及要求1.掌握构造体类型变量的定义和使用。2.掌握构造体类型数组的概念和应用。3.掌握链表的概念,初步學會對链表進行操作。实验环境VC++6.0实验内容1.编写程序。有5個學生,每個學生的数据包括學号、姓名、3门課的成绩,從键盘输入5個學生数据,规定输出3门課總平均成绩,以及最高分的學生的数据(包括學号、姓名、3门課的成绩、平均分数)。2.建立一种學生链表,每個結點包括:學号、姓名、性别、年龄。输入一种年龄,假如链表中的結點所包括的年龄等于此年龄,则将此結點删去。算法描述及实验步骤第一題定义一种构造体变量,包括學号、姓名、3门課的成绩定义一种可以输入學生信息的函数。定义一种函数可以求平均分并返回。输出3门課總平均成绩,以及最高分的學生的数据(包括學号、姓名、3门課的成绩、平均分数)。第二題定义一种构造体变量,包括學号、姓名、性别、年龄和指向下一种节點的指针。创立链表,输入學生信息。定义一种可以输出學生信息函数。定义一种可以删除节點的函数,當输入一种年龄時,假如链表中的結點所包括的年龄等于此年龄,则将此結點删去。调试過程及实验結果12總結纯熟地掌握共用体;在写程序時可以纯熟地使用链表進行数据操作。附录/////第一題代码如下:#include<stdio.h>#defineN5voidinput(structstudentstud[]);doubleav1(structstudentstud[]);doubleav2(structstudentstud[]);doubleav3(structstudentstud[]);intmax(structstudentstud[]);structstudent{intno;charname[10];doubledegree1;doubledegree2;doubledegree3;};voidmain(){structstudentstud[N];doubleaver[3],avg;inta,i;input(stud);aver[0]=av1(stud);aver[1]=av2(stud);aver[2]=av3(stud);a=max(stud);avg=(stud[a].degree1+stud[a].degree2+stud[a].degree3)/3.0;for(i=0;i<3;i++){printf("第%d门平均分:\t",i+1); printf("%.2lf\n",aver[i]);}printf("分数最高的學生信息如下:\n");printf("%d\t%s\t%.2lf%.2lf%.2lf%.2lf\n",stud[a].no,stud[a].name,stud[a].degree1,stud[a].degree2,stud[a].degree3,avg);}voidinput(structstudentstud[])//输入N個學生的信息{inti;printf("學生信息输入格式:學号、姓名、分開输入三门分数\n");for(i=0;i<N;i++){printf("输入第%d個學生信息:\n",i+1);scanf("%d%s%lf%lf%lf",&stud[i].no,stud[i].name,&stud[i].degree1,&stud[i].degree2,&stud[i].degree3);}}doubleav1(structstudentstud[])//计算第一门課的平均分{inti;doublea=0.0,b;for(i=0;i<N;i++)a+=stud[i].degree1;b=a/N;returnb;}doubleav2(structstudentstud[])//计算第二门課的平均分{inti;doublea=0.0,b;for(i=0;i<N;i++)a+=stud[i].degree2;b=a/N;returnb;}doubleav3(structstudentstud[])//计算第三门課的平均分{inti;doublea=0.0,b;for(i=0;i<N;i++)a+=stud[i].degree3;b=a/N;returnb;}intmax(structstudentstud[])//查找分数最大的學生下標{doublem=0,a[N];inti,k=0;for(i=0;i<N;i++){a[i]=stud[i].degree1+stud[i].degree2+stud[i].degree3;if(m<a[i]){m=a[i];k=i;}}returnk;}///第二題代码如下:#include<stdio.h>#include<malloc.h>#defineN3typedefstructstud{intno;charname[10];charsex[10];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=create();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;i<=N;i++){p=(Stud*)malloc(sizeof(Stud));printf("输入第%d個學生信息\n",i);scanf("%d%s%s%d",&p->no,p->name,p->sex,&p->age);r->next=p;r=p;}r->next=NULL;returnhead;}voidshow(Stud*head)//显示學生信息{inti=0;Stud*p=head->next;printf("學生信息如下:\n");while(p!=NULL){printf("第%d個學生信息:\n\n",i+1);printf("%d\t%s\t%s\t%d\n",p->no,p->name,p->sex,p->age);p=p->next;i++;}}Stud*getnode(Stud*head,intn){inti=1;Stud*p=head;if(n<1)returnNULL;while(p!=NULL&&i<n){p=p->next;i++;}if(p!=NULL)returnp;elsereturnNULL;}voiddelet(Stud*head)//删除与输入年龄相似的學生信息{intyear,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); q->next=p->next; free(p); p=q; }}elsek++;p=p->next;}printf("相似年龄已删除\n");}青岛理工大學課程试验汇报課程名称计算机程序设计(C)班级软件111试验曰期-6-8姓名赵亚東學号试验成绩试验名称试验八综合程序设计实验目的及要求1.掌握文献以及缓冲文献系统、文献指针的概念。2.學會使用文献打開、关闭、讀、写等文献操作函数。3.通過一种综合程序,使學生對综合运用C語言程序设计語言有初步的认识。实验环境VC++6.0实验内容學生管理系统學生基本信息的管理,包括添加、修改、删除、查找、全删等操作;課程数据的管理,包括添加、修改、删除、查找、全删等操作;學习成绩数据的管理,包括添加、修改、删除、查找、全删等操作;學生成绩查询系统,包括按學号、按課程号、按班号记录學生的成绩。算法描述及实验步骤首先自定义學生信息、課程数据、學生成绩的构造体,定义這些变量的链表,一边對這些数据進行操作。一、在写主函数時,先把数据從文献中提取到链表中,操作後再写入文献中進行保留。二、在學生信息管理系统中,添加,即是判断与否存在相似學号,没有通過链表進行添加操作,有的话進行提醒,修改時只改對应學号的信息,學号不需要修改,但需要同步修改成绩管理系统中的對应學号的學生姓名,在進行删除操作時,先查找与否有和需要修改的學号相對应的學生信息,有的话则按照链表删除操作進行删除,查找時判断与否有需要查找的學号,若有,输出對应的學生信息,進行全删操作時,和链表的释放操作差不多,不過要注意的是不能释放頭結點的地址,它是一种全局变量,释放後不能進行其他操作。在課程数据、學习成绩数据的处理時,采用同样的处理方式;三、學生成绩查询系统分按學号、按課程号、按班号三种方式来记录學生的成绩。调试過程及实验結果總結可以纯熟地進行文献操作,打開文献,写文献,向文献中添加内容,以及文献的讀取等操作進行编写小型程序。附录Student文献#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#include"school.h"voidaddstudent();voiddisplaystudent();voidalterstudent();voidchangename(intno,charname[]);voidfindstudent();voiddeletstudent();voiddeleallstu();externStudNode*studenthead;externScoreNode*scorehead;voidstudent(){intx;do{printf("1-添加,2-修改,3-显示,4-查找,5-删除,6-全删,0-返回\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("选择錯误\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",,&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%8s\n",p->data.no,p->,p->data.age,p->data.classno);p=p->next;}printf("學生信息输出完毕\n");}elseprintf("無學生信息\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;changename(st.no,);}elseprintf("未查到要修改信息的學生\n");}}voidchangename(intno,charname[])//修改學生成绩管理系统中的名字{ScoreNode*p2=scorehead->next;while(p2!=NULL&&p2->data.no!=no)p2=p2->next;if(p2!=NULL)strcpy(p2->,name);elseprintf("在成绩管理系统中未发現要修改的學生资料\n");}voidfindstudent()//根据學号查找學生信息并输出{StudNode*p=studenthead;intno;printf("输入要查找的學生學号\n");scanf("%d",&no);while(p!=NULL&&p->data.no!=no)p=p->next;if(p!=NULL){printf("要查找的學生信息如下:\n");printf("%3d%8s%5d%8s\n",p->data.no,p->,p->data.age,p->data.classno);}elseprintf("未找到该學号的學生信息\n");}voiddeletstudent()//根据學号删除學生信息{StudNode*p=studenthead,*q;intno;printf("输入要删除的學生學号\n");scanf("%d",&no);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");}elseprintf("不存在學生信息\n");}Score文献#include<stdio.h>#include<malloc.h>#include"school.h"#defineN100voidaddscore();voidshowscore();voidalterscore();voidfindscore();voiddelescore();voiddeleallsc();externCourseNode*coursehead;externScoreNode*scorehead;voidscore(){intx;do{printf("1-添加,2-修改,3-显示,4-查找,5-删除,6-全删,0-返回\n");scanf("%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()//添加一种分数记录{ScoreNode*p2=scorehead->next,*r2=scorehead,*s2,*t[N];ScoreTypesc;intn=0,i;printf("输入添加學生學号\n");scanf("%d",&sc.no);while(p2!=NULL){if(p2->data.no==sc.no) {t[n]=p2;n++; }r2=p2;p2=p2->next;}if(n==0)//學号不反复,可以添加{s2=(ScoreNode*)malloc(sizeof(ScoreNode));printf("输入要添加的學生信息格式:名字、課程号、課程名、分数\n");scanf("%s%d%s%lf",,&o,ame,&sc.degree);s2->data=sc;s2->next=r2->next;r2->next=s2;}elseif(n>0)//學号反复要考虑課程号与否反复,不反复就添加{printf("输入想要添加的課程号\n");scanf("%d",&o);for(i=0;i<n;i++)if(t[i]->o==o) {printf("该學生的此課程分数信息已存在\n");return; }if(i==n) {s2=(ScoreNode*)malloc(sizeof(ScoreNode));

温馨提示

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

评论

0/150

提交评论