第一篇:《程序设计实践》课程实验内容
《程序设计实践》实验内容
实验一函数与程序结构(1)
实验一函数与程序结构(2)
1.实验指导书P123:
一、调试示例,掌握采用“文件包含”和“工程文件”实现多文件模块程序的两种方法
2.实验指导书P132:编程题5,7,8
实验二 指针进阶(1)
实验二 指针进阶(2)
指针进阶根据数据结构中的内容做以下要求
要求会使用指针数组,链表等内容
实验题目
1、实验指导书P138:编程题2,32、实验指导书P140:
一、调试示例
3、实验指导书P145:编程题1,2,3实验三 文件(1)
实验三 文件(2)
文件实验指导书中主要涉及普通数据的写入和结构体类型数据的写入,我们重点强调一下结构体类型数据的写入,因此布置集中在结构体类型数据的题目 题目中没有如何将链表写入文件中,建议补充上去,作为题目4实现吧!
1、实验指导书P148:改错题
2、实验指导书P150:编程题3,7
实验四综合设计
以课程报告任务书要求为准:开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):①按书名查询 ②按作者名查询③ 按照价钱排序 ④按出版时间排序等等
(4)图书信息的删除与修改
按照功能模块大致划分,也可以细化:输入、输出、查询、统计、排序、插入、删除等功能,学生根据自己的情况可以提出更好的功能,要求学生给出调试过程抓图、知识点总结、源代码,到时候回答问题相结合给成绩。
第二篇:《程序设计实践》课程实验内容
《程序设计实践》实验内容
实验一函数与程序结构(1-2)
1.实验指导书P123:
一、调试示例,掌握采用“文件包含”和“工程文件”实现多文件模块程序的两种方法
2.实验指导书P132:编程题2,5,7,8
实验二 指针进阶(1-2)
指针进阶根据数据结构中的内容做以下要求
要求会使用指针数组,链表等内容
实验题目
1、实验指导书P138:编程题2,32、实验指导书P140:
一、调试示例
3、实验指导书P145:编程题1,2,3实验三 文件(1-2)
文件实验指导书中主要涉及普通数据的写入和结构体类型数据的写入,我们重点强调一下结构体类型数据的写入,因此布置集中在结构体类型数据的题目 题目中没有如何将链表写入文件中,建议补充上去,作为题目4实现吧!
1、实验指导书P148:改错题
2、实验指导书P150:编程题3,7
实验四综合设计
标准化考试系统的设计与实现
开发出一个标准化考试系统,所谓标准化考试系统即仅支持选择题,也是为方便自动批改的功能的实现。要求实现以下基本功能:
(1)提供给教师添加试题的功能(试题信息用文件保存)--输入与存储
(2)试题的整体浏览功能(按照知识点、章节、分页显示等)--输出
(3)能够抽取试题组合成一套试卷(组卷的策略:可以是随机的,当然若教师添加的试题时有知识点、章节等信息,亦可以实现按照一定的组卷策略实现出题:如每个知识点抽取若干题目,最终组合一套试卷)
(4)教师实现题目信息的管理,比如删除、修改等
(5)查询功能(至少一种查询方式)、排序功能(至少一种排序方式)
扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理(2)成绩报表打印功能(3)甚至根据自己情况,可以加上学生信息和考试成绩信息的管理,并扩充为广义的考试系统。即学生输入账号密码登陆,进行考试,交卷后显示成绩;(4)模糊查询(5)综合查询(6)数据加密、统计、分析等功能。
特别说明:尽可能地运用自己已经学习过的数据结构的知识去展现。
第三篇:程序设计课程教学方法的探讨和实践
程序设计课程教学方法的探讨和实践
高等学校的根本任务是培养人才,人才培养是办学的核心问题。在高等教育大众化、国际化的趋势中,高等学校办学的竞争日益加剧。教学质量将决定着一所学校的生存和发展。因此,教学质量是教育者、管理者不可不思、不可不谋、不可不为的重要任务。
随着经济的发展和科技的进步,对人才素质提出了更高的要求,在人才培养上,各高校都在夯实基础的同时重视能力的培养,开始实施理论教学和实践的配套改革,进一步加强实践教学,加强学生实践能力、创新能力的培养。但是,对不同层次的高校而言,教育培养的对象虽然都是大学生,但各校均有自己的特性,在教学方法上,有其共性,也具有特殊性,互相之间,只能借鉴,不能照搬,而需要根据自己的情况来制定切合实际的教学方法。本文是以某高校计算机专业的“程序设计”课程为对象,探讨教学方法的改进和实践。
科学的教学方法是通向成功的桥梁。古人曰:“授之以鱼,供一饭之需;教之以渔,终身受用不尽。”授之以方法,培养学生的自学能力,是实现“教是为了不教”的正确途径。教学方法的改进,首先要改传统的单纯灌输式教学法为启发式和探究式的教学法,教师提出问题,激发学生积极思维,主动思考,发现未知,发展智力,达到由此及彼、由表及里、闻一知
十、举一反三的目的。教师不仅要注意培养学生的“智商”,更要发展学生的“情商”,即非智力因素,充分调动学生学习的需要、兴趣、动机,引导学生进行科学的思维,包括形式逻辑思维、形象思维、灵感思维等,以培养学生独立思考问题、提出问题和解决问题的能力,即所谓“既要授之以鱼,更要授之以渔”。教师可以假设一种以案例和问题为核心的情景和背景,激发学生探究问题的兴趣,通过选择与确定问题,讨论与提出设想,实践与寻求结果,验证与得出结论,培养学生独立思考能力、研究能力和创新能力,形成一种讨论式、开放式的现代教学方法,这就体现了大学教学的创新精神和平等合作精神,这种方法称为程序案例教学法或程序驱动教学法。这种方法要求教师精心备课,根据学生的知识水平和能力,创设实用的程序案例,引导过程中的问题情境,帮助学生激发创新意识,促进学生质疑,培养学习兴趣。在课堂上,要努力营造民主、宽松、和谐的学习环境。
现今普遍的程序设计教学方法都是从语法入手,详细地讲解各种编程语言的语法,而涉及的程序案例却很少,虽然有一些例题,但很简单,距离解决实际问题的复杂度相差甚远,学生在学习之后,常常缺乏动手能力和解决问题的能力,无法构建程序设计的思维,而且机械式的记忆语法规则往往是枯燥无味的,很难激发学习的兴趣。以“C++程序设计”为例,针对各种语法规则,创建16个实用的程序案例:1)库存清单应用程序(变量,输入);2)工资计算应用程序(算法,伪代码);3)牙科付费应用程序(逻辑运算符,字符串);4)购车还贷应用程序(WHILE循环语句);5)计算班级平均成绩应用程序(标记控制循环);6)利息计算应用程序(FOR循环语句和数学函数);7)计算个人所得税应用程序(多分支选择语句SWITCH);8)捐款管理应用程序(作用域与函数原型);9)游戏应用程序(生成随机数和枚举);10)薪金统计应用程序(一维数组);11)学生成绩统计应用程序(二维数组);12)数字时钟应用程序(自定义类和对象);13)购物清单管理应用程序(指针,引用及动态数据结构);14)工资表应用程序(继承与多态性);15)便笺信息应用程序(顺序访问文件);16)屏幕抓取应用程序(字符串处理)。
首先教师给出程序案例的框架结构,学生经过思考,选择合适的算法和指令语句,经互相讨论,完善和丰富程序案例,然后上机调试,通过运行来检验结果。程序案例的教学法是从兴趣入手,首先给人们编程的乐趣,继而带领学生进入程序的天地,提高探索的欲望,使学习编程变得生动而有趣。经过对计算机科学专业198名学生的问卷调查表明,其中194人赞成这种教学方法,在反馈的意见中,认为这种方法效果很好,能够很容易接受。在教学过程中既学到应得的知识,又感受到编程的快乐;既感受到成功的喜悦,又得到探索的乐趣。考核的成绩表明,85%的学生达到预期的效果,其中有20%的学生达到优秀的水平,虽然,教学实践取得明显的效果,但仍有15%的学生寻求适合的解决方法。尚未达到预期的效果,这表明仍有一些问题尚待解决,今后将进一步研究不足之处。
(作者单位:山东省潍坊科技学院)
第四篇:C高级语言程序设计实验内容
实验一 C语言的运行环境和基础知识
一、实验目的
1.掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。
2.熟练掌握Visual C++ 6.0环境运行的C程序上机步骤 3.数据类型、常量和变量的使用 4.表达式及运算符的应用 5.C程序的调试。
二、实验内容和源程序清单、测试数据、结果。
1、最简单的C程序。(要求文件名:1_1.c)#include
printf(“Hello world!n”);return 0;}
2、一个具有致命错误的程序,请修改。(要求文件名:1_2.c)#include
printf(“i=%dn”,i);
return 0;}
3、一个具有警告语法错的程序。(要求文件名:1_3.c)#include
s=i+j;printf(“s=%dn”,s);return 0;}
4、写出一个程序测试整型、字符型数据表示,并输出以验证是否正确。(要求文件名:1_4.c)#include
int x=010,y=10,z=0x10;
/* 整型数据表示 */ char c1='M',c2='x4d',c3='115',c4=77,c;
/* 字符型数据表示 */
/* 整型数据的输出 */ printf(“x=%o,y=%d,z=%xn”,x,y,z);
/* 数据以原进制输出,注意是否有前导0或0x */ printf(“x=%d,y=%d,z=%dn”,x,y,z);
/* 数据以10进制输出,换算到10进制,结果对吗? */ /* 字符型数据的输出 */ printf(“c1=%c,c2=%x,c3=%o,c4=%dn”,c1,c2,c3,c4);
/* 数据以原进制输出,注意是否有前导0或0x ?*/ printf(“c1=%c,c2=%c,c3=%c,c4=%cn”,c1,c2,c3,c4);
/* 结果都是什么字符?,也就是说字符可以自由的表示成几种形式? */ printf(“c1=%d,c2=%d,c3=%d,c4=%dn”,c1,c2,c3,c4);
/* 看看这些字符的10进制ASCII码,哦,ASCII码一样,同一种字符 */
/* 字符型数据参与算术运算 */ c=c1+32;
/* 字符怎么参加了数学运算,哦,是字符对应的ASCII码-整数 /* 参与数学运算;结果还是一个整数-另外一个字符的ASCII码 */ printf(“c=%c,c=%dn”,c,c);
/* 看看这个字符是什么?哇,'M'+32='m'了,看看ASCII码表,原来如此!*/ return 0;} 参考结果: x=10,y=10,z=10 x=8,y=10,z=16 c1=M,c2=4d,c3=115,c4=77 c1=M,c2=M,c3=M,c4=M c1=77,c2=77,c3=77,c4=77 c=m,c=109
三、实验报告要求
将题目:2和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。2
实验二
顺序结构程序设计
一、实验目的:
1.掌握顺序结构程序设计 2.掌握赋值语句的用法
3.熟练地进行数据输入和输出
二、实验内容和源程序清单、测试数据、结果。
1、已知:a=2,b=3,x=3.9,y=2.3(a,b整型,x,y浮点),计算算术表达式(float)(a+b)/2+(int)x%(int)y的值。试编程上机验证。(要求文件名:2_1.c)提示编程要点:
(1)先判断结果值类型,可设置一个此类型的变量用于记录表达式结果,本例用r存放结果;(2)程序先给几个变量赋初值,然后将表达式赋值给变量r;(3)最后打印变量r的值就是表达式的值。参考程序:
#include
int a=2,b=3;float x=3.9,y=2.3;
float r;
r=(float)(a+b)/2+(int)x%(int)y;
printf(“%fn”,r);return 0;} 参考结果: 3.500000 思考:为什么是这个结果?
2、分析下面程序结果,并上机验证。(要求文件名:2_2.c)#include
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“i=%d, j=%d, m=%d, n=%dn”,i,j,m,n);
return 0;} 参考结果:
i=9, j=11, m=9, n=10
3、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。从键盘如何输入?(要求文件名:2_3.c)#include
4、编程序,用getchar函数读入两个字符给c1、c2,然后分别用 putchar函数和 printf函数输出这两个字符。(要求文件名:2_4.c)参考程序:
#include
三、实验报告要求
将题目:1和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验三
选择结构程序设计
一、实验目的
1.2.3.4.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
学会正确使用逻辑运算符和逻辑表达式;
熟练掌握if语句和switch语句;
熟练掌握switch语句中break语句的作用。
二、实验内容和源程序清单、测试数据、结果。
(1)掌握各种格式转换符的正确使用方法,输出结果。(要求文件名:3_1.c)#include
(2)1.从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:(1)能被4整除,但不能被100整除;(2)能被400整除。(要求文件名:3_2.c)参考程序:
#include
int year, flag;printf(“Enter year:”);scanf(“%d”, &year);if(year%4==0&&year%100!=0 || year%400==0)
{
flag = 1;
} else
{
flag = 0;
} if(flag)
{
printf(“Yesn”);
} else
{
printf(“Non”);} return 0;}(3)编程序,并给出程序的运行结果,注意思考case中break的用法以及为什么是这样的结果?(要求文件名:3_3.c)参考程序:
#include
int x=2,y=1,a=1,b=2;switch(x){ case 2:
switch(y)
{
case 1:a++;
case 2:b++;break;
}
case 3:a++;b++;break;} printf(“%d %dn”,a,b);return 0;}(4)编程序:输入4个整数,要求按由小到大的顺序输出。(要求文件名:3_4.c)参考程序:
#include
int t,a,b,c,d;scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(a>d){t=a;a=d;d=t;} if(b>c){t=b;b=c;c=t;} if(b>d){t=b;b=d;d=t;} if(c>d){t=c;c=d;d=t;} printf(“%d,%d,%d,%dn”,a,b,c,d);return 0;}
三、实验报告要求
将题目:2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验四 循环结构程序设计
一、实验目的
1.2.3.4.5.熟练使用while、for语句实现循环程序设计
理解循环条件和循环体,以及while、for语句的相同及不同之处 掌握嵌套循环程序设计
熟练掌握下拉菜单Debug的程序调试方法 掌握break和continue的用法
二、实验内容和源程序清单、测试数据、结果。
(1)输入两个正整数m和n,求它们的最大公约数和最小公倍数。(要求文件名:4_1.c)参考程序:
#include
m=x;else
m=y;for(i=1;i<=m;i++){
if((x%i==0)&&(y%i==0))
max=i;} printf(“%dn”,max);printf(“%dn”,x*y/max);return 0;}(2)从键盘输入一个 int 类型的正整数,输出它的所有因子。如输入6,输出1,2,3;输入20,输出1,2,4,5,10。(要求文件名:4_2.c)参考程序:
#include printf(“%dn”,i);} return 0;}(3)输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。(要求文件名:4_3.c)参考程序: #include if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; else if(c>='0'&&c<='9') digit++; else if(c==' ') space++; else other++;} printf(“%d,%d,%d,%dn”,letter,digit,space,other);return 0;}(4)编程计算111111的值。(要求文件名:4_4.c)23499100参考程序: #include int sign = 1;double sum = 1;double deno = 2;double term = 1;while(deno<=100){ sign =(-1)*sign; term = sign*(1/deno); sum = sum+term; deno++;} printf(“%lfn”,sum);return 0;} 三、实验报告要求 将题目:3和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验五 数组 一、实验目的 1.掌握一维、二维数组的定义、引用、应用 2.掌握字符数组的定义、引用、应用 3.掌握字符串处理函数 二、实验内容和源程序清单、测试数据、结果。 (1)给出下面程序的结果,思考为什么?(要求文件名:5_1.c)#include char a[]=“Chinaren”,b[]=“Tiananmen”;char *p1,*p2; int k=0;p1=a; p2=b;for(k=0;k<10;k++) if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k));printf(“n”);return 0;}(2)有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。(要求文件名:5_2.c)参考程序: #define M 3 #define N 4 #include int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}}; max=a[0][0]; for(i=0;i for(j=0;j if(a[i][j]>max) { max= a[i][j]; r=i; c=j; } printf(“max=%d , row =%d , colum=%d n”,max , r, c); return 0;}(3)编程序用于读入10个字符串,然后找出最大的字符串并打印。(要求文件名:5_3.c)参考程序: #include char str[10][80],maxstring[80]; int i;printf(“Enter ten strings:n”);for(i=0;i<10;i++) { scanf(“%s”, str[i]);} strcpy(maxstring, str[0]); for(i=1;i<10;i++) { if(strcmp(str[i],maxstring)>0) { strcpy(maxstring,str[i]); } } printf(“The max string is:%sn”,maxstring);}(4)给出下面程序的运行结果,思考为什么?(要求文件名:5_4.c)#include int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};int i,j,s=0;for(i=0;i<4;i++){ for(j=0;j<4;j++) { if(a[i][j]<0)continue; if(a[i][j]==0)break; s+=a[i][j]; } } printf(“%dn”,s);return 0;}(5)测试二维数组的各个地址值,结果是什么,思考原因。(要求文件名:5_5.c)#include int a[M][N];printf(“%xn”,a);printf(“%xn”,a[0]);for(int i=0;i printf(“%x,”,&a[i][j]); return 0;} 三、实验报告要求 将题目:2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验六 函数 一、实验目的 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 二、实验内容和源程序清单、测试数据、结果。 (1)给出下面程序的结果,思考为什么?(要求文件名:6_1.c)#include #include printf(“%d is prime!”,number);else printf(“%d is not!”,number);return 0;} int prime(int number)/*此函数用于判别素数*/ { int flag=1,n;for(n=2;n if(number%n==0) flag=0;return(flag);}(3)求两个整数的最大公约数和最小公倍数。写一个函数求最大公约数。(要求文件名:6_3.c)参考程序: #include max=i;} return(max);}(4)写一函数,输入一个十六进制数,输出相应的十进制数。(要求文件名:6_4.c)参考程序: #include if(shu[i]>=48&&shu[i]<=57) sum=sum+(shu[i]-48)*pow(16,k-i); else if(shu[i]>=65&&shu[i]<=70) sum=sum+(shu[i]-55)*pow(16,k-i); else if(shu[i]>=97&&shu[i]<=102) sum=sum+(shu[i]-87)*pow(16,k-i); else { printf(“error!n”); break; } return sum;} int main(){ char str[100];long s;gets(str);s=change(str);if(!s) printf(“The number is not oxn”);else printf(“change:%ldn”,s);return 0;} 三、实验报告要求 将题目:3和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验七 指针 一、实验目的 1.掌握指针变量的定义与引用。 2.熟练使用函数指针、数组指针、字符串指针编写应用程序。 二、实验内容和源程序清单、测试数据、结果。 (1)输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。参考程序:(输入三个整数,按由小到大的顺序输出)(要求文件名:7_0.c)#include #include int x,a[100],*p,i;p=a;scanf(“%d”,&x);for(i=0;i scanf(“%d”,p++);p=a;printf(“n”);maopao(p,x);printf(“the sorted numbers:n”);p=a;for(i=0;i printf(“%dt”,*p); return 0;} void maopao(int *p,int x){ int i,j,temp;for(i=0;i for(j=0;j if(*(p+j)>*(p+j+1)) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } }(3)利用函数和指针将给定字母字符串的第一个字母变成大写字母,其它字母变成小写字母。在main函数中接收字符串的输入,改变后的字符串的输出也在main函数中实现。(要求文件名:7_3.c)参考程序: #include *s-=32;s++; } for(i=0;i *s+=32; 三、实验报告要求 将题目2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验八 结构体和共用体 一、实验目的 1.掌握结构体类型和结构体变量的定义。 2.掌握结构类型变量的定义和使用。 3.掌握链表的概念,初步学会对链表进行操作。 二、实验内容和源程序清单、测试数据、结果。 (1)给出下面程序的运行结果,思考为什么?(要求文件名:8_1.c)#include char num[10]; float score[3];}; int main(){ struct STU s[3]={{“1122301”,90,95,85}, {“1122302”,80,90,75}, {“1122303”,98,92,85}}, *p=s; int i; float sum = 0; for(i=0;i<3;i++){ sum = sum + p->score[i]; } printf(“%6.2fn”,sum); return 0;}(2)有10个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入十个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。(要求文件名:8_2.c)#include char num[6]; char name[8]; float score[3]; float avr;} stu[N]; int main(){ int i,j,maxi; float sum,max,average; for(i=0;i { printf(“input scores of student %d:n”,i+1); printf(“NO.:”); scanf(“%s”,stu[i].num); printf(“name:”); scanf(“%s”,stu[i].name); for(j=0;j<3;j++) { printf(“score %d:”,j+1); scanf(“%f”,&stu[i].score[j]); } } average=0; max=0; maxi=0; for(i=0;i { sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0; average+=stu[i].avr; if(sum>max) { max=sum; maxi=i; } } average/=N; printf(“ NO.name score1 score2 score3 averagen”); for(i=0;i for(j=0;j<3;j++) printf(“%9.2f”,stu[i].score[j]); printf(“ %8.2fn”,stu[i].avr); } printf(“average=%5.2fn”,average); printf(“The highest score is : student %s,%sn”,stu[maxi].num,stu[maxi].name);printf(“his scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.n”,stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);return 0;}(3)建立一个链表,每个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(要求文件名:8_3.c) #include char num[6];char name[8];char sex[2];int age;struct student *next;} stu[10]; int main(){ struct student *p,*pt,*head;int i,length,iage,flag=1;int find=0; //找到待删除元素 find=1,否则find=0 while(flag==1){ printf(“input length of list(<10):”); scanf(“%d”,&length); if(length<10) flag=0;} //建立链表 for(i=0;i p=(struct student *)malloc(LEN); if(i==0) head=pt=p; else pt->next=p; pt=p; printf(“NO.:”); scanf(“%s”,p->num); printf(“name:”); scanf(“%s”,p->name); printf(“sex:”); scanf(“%s”,p->sex); printf(“age:”); scanf(“%d”,&p->age); } p->next=NULL; p=head;printf(“n NO.name sex agen”); //显示 while(p!=NULL){ printf(“%4s%8s%6s%6dn”,p->num,p->name,p->sex,p->age); p=p->next;} // 删除 printf(“input age:”); //输入待删年龄 scanf(“%d”,&iage);pt=head;p=pt; if(pt->age==iage) //链头是待删元素 { p=pt->next; head=pt=p; find=1; } else //链头不是待删元素 pt=pt->next; while(pt!=NULL){ if(pt->age==iage) { p->next=pt->next; find=1; } else // 中间结点不是待删元素 p=pt; pt=pt->next; } if(!find) printf(“ not found %d.”,iage); p=head; printf(“n NO.name sex agen”);//显示结果 while(p!=NULL){ printf(“%4s%8s”,p->num,p->name); printf(“%6s%6dn”,p->sex,p->age); p=p->next; } return 0;} 三、实验报告要求 将题目3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验九 文件操作 一、实验目的 1.掌握文件和文件指针的概念以及文件的定义方法。 2.了解文件打开和关闭的概念和方法。 3.掌握有关文件的函数。 二、实验内容和源程序清单、测试数据、结果。 (1)对data.dat文件写入100条记录。(要求文件名:8_1.c) #include int i; float x; fp=fopen(“c:data.dat”,“w”); for(i=1;i<=100;i++) { scanf(“%f”,&x); fprintf(fp,“%fn”,x); } fclose(fp); return 0;} (2)设有一文件cj.dat存放了50个人的成绩(英语、计算机、数学),存放格式为:每人一行,成绩间由逗号分隔。计算三门课平均成绩,统计个人平均成绩大于或等于90分的学生人数。(要求文件名:8_2.c) #include int num=0; float x , y , z , s1 , s2 , s3; fp=fopen(“c:cj.dat”,“r”); while(!feof(fp)) { fscanf(fp,“%f,%f,%f”,&x,&y,&z); s1=s1+x; s2=s2+y; s3=s3+z; if((x+y+z)/3>=90) num=num+1; } printf(“分数高于90的人数为:%dn”,num); fclose(fp); return 0;} (3)统计上题cj.dat文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在磁盘文件“stud”中。(要求文件名:8_3.c) #include “stdio.h” int main(){ FILE *fp1,*fp2; float x,y,z; fp1=fopen(“c:cj.dat”,“r”); fp2=fopen(“c:stud”,“w”); } while(!feof(fp1)){ fscanf(fp1,“%f,%f,%f”,&x,&y,&z); printf(“%f,%f,%f,%fn”,x,y,z,x+y+z); fprintf(fp2,“%f,%f,%f,%fn”,x,y,z,x+y+z);} fclose(fp1);fclose(fp2);return 0; 三、实验报告要求 将题目1、2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。