if(q==NULL) head=p->next; else { q->next=p->next; } free(p); } return head; }
struct student *wall(struct student *head) { int i,j,k=1; struct student *p,*q,*r; printf(\你想要添加某个学生的信息吗?是/否(1/0)\\n\ scanf(\ if(!i) return head; printf(\请输入你想要添加的学生的信息:(依次为:姓名,学号,成绩)\\n\ p=(struct student *)malloc(sizeof(struct student)); scanf(\ scanf(\ scanf(\ printf(\请输入你想要添加到的位置\\n\ scanf(\ for(q=head,r=NULL;q!=NULL;r=q,q=q->next) { if(j==1) { p->next=head; head=p; break; } if(k==j) { p->next=q; r->next=p; break; } k++; } if(q==NULL&&j==k) { q=p;
第 36 页 共 36 页
p->next=NULL; } if(q==NULL&&j>k) printf(\你的添加的位置不合法\\n\ return head; }
void prin(struct student *head) { struct student *p; for(p=head;p!=NULL;p=p->next) { printf(\ printf(\ printf(\ printf(\ } }
main() { struct student *head; head=fun(); head=wall(head); head=park(head); prin(head); }
(3)测试数据:
(4)运行结果:
(5)问题及解决方法:无 三、实验总结:
(1)掌握了结构体的定义、数据输入方法。 (2)掌握了结构体成员变量的两种访问方法。
(3)掌握了编写程序完成单链表的建立和查询方法。
实验九 文件操作 实验
第 37 页 共 37 页
(验证性 综合性 实验 1学时)
一、目的要求:
(1)掌握文件的打开和关闭。 (2)精通文件的读写操作。
(3)了解文件的定位操作及文件的检测函数。 (4)掌握文件的应用。 (5)编写实验报告。
二、实验内容(参考实验指导书):
1、编写一个程序,读取磁盘上的一个C语言程序文件,要求加上注释后再存放到磁盘上,文件可以另外命名。 (1)算法描述:
if((p=fopen(\ fscanf(p,\ fclose(p); if((p=fopen(\ { printf(\ exit(1); }
(2)源代码及说明: #include
第 38 页 共 38 页
(3)测试数据:
(4)运行结果:
(5)问题及解决方法:无
2、编写一个程序,将文件old.txt从第10行起存放到new.txt中。 (1)算法描述: while(!feof(p1)) {
if((c=fgetc(p1))=='\\n') i++; if(i>=9) {
fputc(c,p2); } }
(2)源代码及说明: #include
int i=0; char c;
FILE *p1,*p2;
if((p1=fopen(\ {
printf(\ exit(1); }
if((p2=fopen(\ {
printf(\ exit(1); }
while(!feof(p1)) {
if((c=fgetc(p1))=='\\n') i++; if(i>=9) {
fputc(c,p2); } }
第 39 页 共 39 页
system(\ fclose(p1); fclose(p2); }
(3)测试数据:
(4)运行结果:
(5)问题及解决方法:无
3、有一个整数文件,读取其中的数值,如果为奇数加1,如果为偶数减1,然后存放到新的文件中去。 (1)算法描述: while(!feof(p1)) {
c=fgetc(p1); if((c-'0')%2==0) i--;
else if((c-'0')%2==1) i++; }
(2)源代码及说明: #include
第 40 页 共 40 页