版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自动化学院朱胜利2010年编程实现理论部分一.编程环境VisualC++6.0使用语言:C语言创立控制台程序:File/New/Win32consoleApplication,location:选择工程地址,ProjectName:填写工程名,OK!选AnEmptyProject,Finish!OK!File/New/C++SourceFile,File处填写源文献名,OK!二.我们的任务编写控制台程序,将班级学生信息通过创立链表保存,能够添加、删除、查找某一学生的信息,显示全部学生的信息,信息保存到文献中,从文献中读出信息。三.理论部分数据的输入输出一种字符:getchar():从终端(键盘)输入一种字符;putchar():在屏幕显示字符的值;多个字符:scanf():输入多个数据;printf():在屏幕显示多个数据;1.主函数的实现文献头部添加:#include<stdio.h>#include<stdlib.h>#include<string.h>三个技巧printf、scanf、switch语句、while语句。工程One;变量与地址程序中:inti;
floatk;
内存中每个字节有一种编号-----地址…...…..2000200120022004内存02003ik…...…...2000200420062005整型变量i10变量pf2001200220032000指针变量变量的内容程序:inti=10;intk=900;int*pf;pf=&i;printf("%d\n",*pf);pf=&k;printf("%d\n",pf);
900指针:一种变量的地址。指针变量:专门寄存变量地址的变量。
指针指针是分数据类型的;指针即地址,前加*是地址所寄存的值;给指针赋地址:int*p;p=&a;指针是先赋值,后使用;指针使用注意事项main(){inti=10;int*p;*p=i;printf(“%d”,*p);}危险!main(){inti=10;int*p;p=&i;printf("%d\n",*p);}指针变量必须先赋值,再使用构造体构造体是一种构造数据类型用途:把不同类型的数据组合成一种整体(自定义数据类型)struct[构造体名]{类型标记符组员名;类型标记符组员名;…………….};组员类型能够是基本型或构造型struct是核心字,不能省略正当标记符可省:无名构造体例struct
student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节……..构造体类型定义描述构造的组织形式,不分派内存构造体类型的定义构造体变量的定义例struct
student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};studentst1,st2;structstudent{intnum;charname[20];charsex;intage;charaddr[30];};structstudentstu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};构造体变量的初始化 structstudent { intnum; charname[20]; }; structstudentstu; stu.num=109; strcpy(,"LinNing"); printf("num=%d\tname=%s\n",stu.num,);构造体变量的赋值structnode{intno;charname[8];floateng,phy,math,ave;node*next;};由若干同类型结点用指针链接而成的数据构造。链表由表头、结点与链尾三部构成。链表的概念建立链表:能够指定链表的节点的个数,用malloc开辟一块内存,scanf输入节点内容,将链表连接起来,返回head指针。a138**Next2000b133**Next20102000headb133**NULL2020链表的基本操作a138**Next2000P2->next=20102000b133**NextP120102000headheada138**NextP2P12000a138**NextP2=P12000b133**NextP120102000headP2
显示链表a138**NextP=head2000b133**Next20102000headb135**Next2020a138**NextP=P->next2000b133**Next20102000headb135**Next2020a138**NextP=P->next2000b133**Next20102000headb135**Next2020voidprint(student*head){ student*p; p=head; printf("输出全部学生信息:\n"); ? { printf("姓名:%s电话:%d\n",p->name,p->age); p=p->next; }}删除一种节点a138**Next2000b133**Next20102000headb135**Next2020输入一种学生姓名(?),根据姓名在链表中找,找到删除之。inta=strcmp(p1->name,name)
删除头节点、尾节点、中间节点。
定义两个辅助工具,student指针:P1,P2.a138**Next2000b133**Next20102000headb135**Next2020a138**Next2000b133**Next20102000headb135**Next2020P1=headHead=P1->next
删除头节点a138**Next2000b133**Next20102000headb135**Next2020P1=head
删除尾节点P1=P1->nextP2=P1P2->next=NULLFree(P1)a138**Next2000b133**Next20102000headb135**Next2020P1=head
删除中间节点P1=P1->nextP2=P1P2->next=P1->nextFree(P1)a138**Next2000b133**Next20102000headb135**Next2020P1=headstructstudent*del(structstudent*head){ structstudent*p1,*p2; charname[30]; p1=head; while((strcmp(p1->name,name)!=0)&&(p1->next!=NULL)) {p2=p1; p1=p1->next;} if(strcmp(p1->name,name)==0)//找到了! { if(p1==head)//是头节点 {?;free(p1);} elseif(p1->next==NULL)//是尾节点 {?; free(p1);} else {p2->next=p1->next;free(p1);} } returnhead;}文献的操作文献概述件的打开和关闭文献的读写文献的定位文献(File)C语言中的文献C语言把文献看作一种字节的序列C语言对文献的存取是以字节为单位的文本文献(ASCII文献)按数据的ASCII形式存储二进制文献按数据在内存中的二进制形式存储文献类型指针FILE类型保存被使用的文献的有关信息全部的文献操作都需要FILE类型的指针举例FILE*fp;文献的打开(fopen函数)函数原型FILE*fopen(char*filename, char*mode);参数阐明filename:要打开的文献途径mode:打开模式返回值若成功,返回指向被打开文献的指针若出错,返回空指针NULL(0)文献的打开模式打开模式描述r只读,打开已有文件,不能写w只写,创建或打开,覆盖已有文件a追加,创建或打开,在已有文件末尾追加r+读写,打开已有文件w+读写,创建或打开,覆盖已有文件a+读写,创建或打开,在已有文件末尾追加t按文本方式打开(缺省)b按二进制方式打开文献的打开举例 FILE*fp;
if((fp=fopen("11.txt","wb"))==NULL) { printf("cannotopenfile\n"); }
文献的关闭(fclose函数)函数原型intfclose(FILE*fp);参数阐明fp:要关闭的文献指针返回值若成功,返回0若出错,返回EOF(-1)不用的文献应关闭,避免数据破坏丢失文献的关闭举例FILE*fp;charfile[]="D:\\USER\\STUDENTS.DAT";if(!(fp=fopen(file,"rb+"))){printf("Openfile%serror!\n",file);exit(0);}......fclose(fp);feof函数函数原型intfeof(FILE*fp);参数fp:文献指针返回值若文献结束,返回非零值若文献尚未结束,返回0文献的读写输出数据块
fwrite(void*buffer,size,count,FILE*fp);输入数据块
Fread(void*buffer,size,count,FILE*fp);
fwrite和fread函数举例FILE*fp;inti;structstuds[NUM];fp=fopen("students.dat","rb+");for(i=0;i<NUM;i++)fwrite(s+i,sizeof(structstud),1,fp);for(i=0;i<NUM;i++)fread(s+i,sizeof(structstud),1,fp);fclose(fp);voidsave(structstu*head){ FILE*fp; structstudent*p; if((fp=fopen("11.txt","w"))==NULL) { printf("cannotopenfile\n"); exit(1); } p=head; while(p!=NULL) { fwrite(p,sizeof(structstudent),1,fp); p=p->next; } fclose(fp);}文献的定位文献位置指针位置指针指向现在读写的位置每次读写文献,位置指针都会对应移动能够通过有关函数强制修
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年计算机编程基础知识及测试题库
- 2026年建筑结构设计与施工工艺题库
- 2026年电网调控运行人员技能培训题库
- 2026年乡镇耕地质量等别评定题库
- 2026年民办特教机构创办人招聘面试题及机构运营管理
- 2026年ESG投资分析师考试模拟题库
- 2026年自然科学基础知识普及教育
- 2026年消防档案管理规范与题库
- 2025年大英县国有资产监督管理局招聘县属国有企业管理人员笔试真题
- 2026年试用期考勤纪律遵守知识竞赛
- GB/T 1094.16-2025电力变压器第16部分:风力发电用变压器
- 2023-2024学年广东深大附中九年级(上)期中语文试题及答案
- 延后发工资协议书
- TCSEE0338-2022火力发电厂电涡流式振动位移传感器检测技术导则
- 帕金森病震颤症状及护理建议
- 安徽省公务员2025年公共基础真题汇编卷
- 冷链食品安全检查表模板
- 宁夏石化苯罐和抽提原料罐隐患治理项目报告表
- 消除艾梅乙培训课件
- CRT2000 消防控制室图形显示装置-使用说明书-V1.0
- 人体首剂最大安全起始剂量的估算
评论
0/150
提交评论