c语言程序设计实践报告
程序设计实训实验报告(热门20篇)

程序设计实训实验报告(热门20篇)c语言是在国内外广泛使用的一种计算机语言。
其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。
其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,unix,linux,mac,os/2,无一例外,哪一个不是c 语言写的?很多新型的语言如,c++,java,c,j,perl...都是衍生自c语言。
掌握了c语言,可以说你就掌握了很多门语言。
学习c程序这门课一年了,这是我们学的第一门专业课,在大学里c语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。
所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,c语言是计算机的基础,大多数软件都需要用c语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。
同时,我觉得c语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。
在学习一年c语言的过程中我也在慢慢探索怎样才能学好c语言,并总结了一点经验:要了解c语言就要从语法规为基础来学习起,首先要是要了解它的结构,比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);其次就是要我要怎么去运用它(我要用什么型式去应用它)。
在c语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以我们在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。
这些都是语法基础也是c语言的基础如果把它们都了解很好了,那么你编起程序来就很得心应手了。
比如说ifelse和switchcase这两种条件语句都是用来判断执行功能的,那我要什么时侯用if什么时侯用switch呢?如果你很好地了解它们的结构和作用的话那么就知道:若它的条件分支是多个而且条件的值是整数或是一个字符值时就会选switch而不会选if。
C语言程序设计实验实验报告7

C语言程序设计实验实验报告7实验名称:链表实现学生信息管理系统实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。
实验内容:设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。
实现以下功能:1. 添加学生信息:从键盘输入学号、姓名、性别、年龄和成绩等信息,添加到链表中。
2. 删除学生信息:从链表中删除指定学号的学生信息。
5. 按成绩排序:按学生的成绩从高到低排序,并输出所有学生的信息。
7. 退出程序:退出学生信息管理系统。
实验方法:1. 设计学生信息结构体,定义链表节点结构体,并编写初始化链表和销毁链表的函数。
2. 编写添加学生信息函数,新建链表节点并插入链表末尾。
3. 编写删除学生信息函数,根据学号查找需要删除的节点,先将该节点从链表中删除,再释放节点空间。
4. 编写修改学生信息函数,根据学号查找需要修改的节点,并修改其成员变量。
6. 编写按成绩排序函数,使用冒泡排序法对链表进行排序,并输出所有学生的信息。
7. 编写输出所有学生信息函数,遍历链表并输出每个节点的信息。
8. 完成学生信息管理系统的主函数,实现菜单及相应功能的选择。
实验结果:依次选择菜单中的各个功能,添加、修改、删除、查找、排序和输出学生信息都能实现。
经测试,程序稳定运行,功能正常,符合需求。
本次实验主要让我们掌握了链式结构的概念、链表节点的定义、链表的初始化、插入、查找、删除和销毁链表的操作方法,以及在实际应用中如何使用链表来实现数据管理。
虽然链表操作相对于数组稍微有些繁琐,但其可以灵活处理数据结构的长度变化,具有更高的可扩展性和更好的操作效率,可以更好的适应各种实际需求。
在实验中,还需要注意节点指针的正确使用、各个函数之间的调用关系和输入输出数据格式的合理选择等问题,以保证程序能够正常运行。
同时,还需要保持认真细致的态度,严格按照实验需求和要求来完成每个步骤,以达到更好的实验效果和运行效率。
c语言实验报告5篇

c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。
其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。
c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。
2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。
3、掌握C程序的运行、调试方法等。
二、实验内容编写一个学生信息排序程序。
要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。
2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。
3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。
1、使用函数方法定义各个模块。
三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
《C语言程序设计》综合实习报告

课题一:用指针优化学生成绩排名一、目的1.熟悉变量的指针和指向变量的的指针变量的概念和使用2.熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种传递方式二、实习环境个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境三、实习内容与步骤1.定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现2.将数组stu[10]的内容输出到屏幕上,要求用指针实现3.将成绩数组按照从高到低进行排序,要求用指针实现4.将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单5.采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)6.在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行结果(屏幕截图)。
7. 在实习报告中说明知识点。
8.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。
四、程序流程图、算法及运行结果1.程序流程图:2.算法:先定义一个函数接收10个学生的成绩,利用指针将数据保存在数组中,再定义第二个函数输出所以学生的成绩,同样也是使用指针,最后定义一个函数用选择排序法对成绩进行由大到小的排序,将指针指向的是数组中的第一个地址,在主函数中依次调用这两个函数;定义一个字符指针指向字符串,利用库函数中的strcpy将student score复制给字符指针,输出字符串3.程序:#include"stdio.h"#include"string.h"struct student{int grade;int num;}stu[10];void input(struct student *p){ int i;for(i=0;i<10;i++,p++){ printf("请输入第 %-2d个学生的成绩:",i+1);scanf("%d%d",&p->num,&p->grade); }void printout(struct student *p){ int i;for(i=0;i<10;i++,p++)printf("第 %-2d个学生的成绩为:%d\n",i+1,p->grade);}void arrow (int *p1,int *p2,int *px,int *py){ int t,m;t=*px; *px=*py; *py=t;m=*p1; *p1=*p2; *p2=m;}void place(struct student stu[]){ int i,j;for(i=1;i<10;i++ )for(j=0;j<10-i;j++)if (stu[j].grade<stu[j+1].grade)arrow(&stu[j].num,&stu[j+1].num,&stu[j].grade,&stu[j+1].grade);}int main(void){ struct student stu[10],*ptr;int i;char string[100],*s;s=string;ptr=stu;input(ptr);printout(ptr);place(stu);printf("排序后的成绩单为:\n");for(i=0;i<10;i++)printf("第 %-2d名 %-2d %-5d\n",i+1,stu[i].num,stu[i].grade);printf("\n");strcpy(s,"student score");printf("%s\n",string);4.运行结果:五、知识点、难点及解决办法。
C语言程序设计实习报告

C语言程序设计实习报告第一篇:C语言程序设计实习报告实习报告题目: C语言程序设计所属系、部 : 电气工程学院班级: 电子商务131 姓名:贺道君学号: 20***5 指导教师: 费玲玲2014年6月一、实习目的加深理解C语言基础知识及其编程技术,了解高级程序设计语言的结构,熟练掌握程序设计方法和技巧,掌握基本的分析和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
二、实习时间、地点6月16日(星期一)上午:微机室5下午:微机室56月17日(星期二)3、4:微机室5下午:微机室36月18日(星期三)上午:微机室5下午:学校6月19日(星期四)上午:微机室5下午:微机室36月20日(星期五)上午:C101下午:学校三、实习内容综合四、实习总结在学C语言的一个学期后,我们进行了C语言实训阶段,尝试自己编写一个比较复杂的程序系统。
在为期一周周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。
好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。
在这里,我作为其中的参与者,自然感触良多刚开始接触到C的时候,我已经学过一些有关VB的内容,这个在算法和思维上稍微有点帮助。
回想本学期的学习,首先,最基本的,是C的数据格式,让我们知道整数,浮点数以及字符常量在C中的运用。
然后,在学会了数据转化,以及熟练的可以对各种数据处理之后,我开始进行有关数据结构,像数组,结构体等的学习,因为有的东西从现有的知识来看都是非常简单的,还没有联系到指针等等一些复杂的概念。
可是,仅仅学会这些是远远不够的,C语言中,还有很多更加经典、重要、实用的知识。
说说函数。
虽说很多程序语言都有函数这一内容,但我觉得C语言的函数是最有魅力的了。
学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。
C语言课程实习(优秀范文5篇)

C语言课程实习(优秀范文5篇)第一篇:C语言课程实习课程实习一、C程序上机操作方法及运行环境编写一个C程序,输入a, b, c,d四个值,输出其中最小者。
#includemain(){int a,b,c,d,t;printf(“Please input numbers:”);scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);t=min(min(min(a,b),c),d);printf(“min number is:%dn”,t);}int min(int x,int y){int z;if(xz=x;elsez=y;return(z);}运行结果:Please input numbers:4,6,3,9min number is:3课程实习二、C程序上机操作方法及运行环境从键盘输入三个字符,要求输出这三个字符,并输出它们的ASCII 码及其ASCII码的平方根和的平方。
#include#includevoid main(){char ch1,ch2,ch3;float t;scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);t=sqrt(ch1)+sqrt(ch2)+sqrt(ch3);printf(“%c,%dn”,ch1,ch1);printf(“%c,%dn”,ch2,ch2);printf(“%c,%dn”,ch3,ch3);printf(“%fn”,t*t);}运行结果:a,b,ca,97b,98c,99881.984683课程实习三、循环结构程序设计1)输入两个正整数m和n;2)如果m=n输出最大公约数m程序结束;3)若m>n则m=m-n否则n=n-m;4)返回到2)(循环)。
#includevoid main(){int m,n;scanf(“%d%d”,&m,&n);while(m!=n){if(m>n)m=m-n; else n=n-m;}printf(“%dn”,m); }运行结果:34,24课程实习四、循环结构程序设计打印下面的图案# # # # ## # # ## # ## ##includevoid main(){int i,j;for(i=1;i<=4;i++) {for(j=1;jprintf(“ ”);for(j=5;j>=i;j--) printf(“*”); putchar('n');}}课程实习五、数组的应用输入一个0到150之间的十进制整数,要求把此数转化为二进制形式。
C语言程序设计实习报告

C语言程序设计实习报告一、实习目的1. 巩固和加深对C语言程序设计的理解。
2. 掌握C语言编程的基本技巧和方法。
3. 提高分析问题、解决问题的能力。
4. 学会将理论知识应用于实际编程中。
二、实习内容XXX语言基础语法练习变量、数据类型、运算符、表达式等基础语法练习。
控制结构(顺序、分支、循环)的实现。
函数的定义和调用方式练习。
2. 模块化程序设计将一个大的程序分解成多个模块,每个模块完成特定的功能。
通过模块间的调用和传递数据来实现整个程序的功能。
3. 文件操作与文件读写文件的打开、关闭、读写操作练习。
文件格式的转换和数据统计处理。
4. 预处理指令与宏定义使用预处理指令进行条件编译和宏定义替换。
练习使用常见的预处理指令如include、define、ifdef等。
5. 结构体、链表与指针结构体的定义和使用。
链表的创建、插入、删除、遍历等操作。
指针的概念和指针运算。
深入理解指针与数组、结构体等数据结构的关系。
6. 位运算与嵌入式系统编程学习位运算符的使用和位段操作的实现。
嵌入式系统的基本概念和编程方法。
7. 综合项目实践参与或独立完成一个综合性C语言程序设计项目。
项目可以包括基于命令行参数的程序设计、基于文件操作的程序设计、基于网络编程的程序设计等。
三、实习过程1. 理论学习:通过教材、网络资源等途径学习C语言的基础知识和编程技巧。
2. 上机实践:在计算机上编写和调试C语言程序,不断巩固所学知识。
3. 问题解决:遇到问题时,通过查阅资料、请教老师或同学等方式解决问题。
4. 团队合作:在小组项目中与他人协作,共同完成任务。
四、实习收获1. 知识技能方面:深入理解了C语言的基本概念和编程技巧,掌握了模块化程序设计和文件操作等常用算法。
2. 解决问题能力方面:学会了如何分析问题、寻找解决方案并通过实践验证解决方案的正确性。
3. 团队协作能力方面:学会了与他人合作,共同完成任务,提高了团队协作能力。
4. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。
c语言实习报告3篇

c语言实习报告3篇c语言实习报告1在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的.学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1.加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学C语言程序设计实践报告题目通讯录程序设计学生姓名指导教师学院专业班级完成时间一、任务描述通讯录程序设计设计一个实用的小型通讯录程序,具有添加,查询和删除功能。
由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。
电话号码可由字符和数字组成。
实现功能:(1)系统以菜单方式工作(2)信息录入功能(3)信息浏览功能(4)信息查询功能(5)信息修改功能(6)系统退出功能二、算法描述设计一个实用的的小型通讯录程序必须具备系统以菜单方式工作、信息录入、信息浏览、信息查询、信息修改、系统退出功能,那么就需要这样的函数来实现。
因此,我需要自定义这样的函数来解决问题,当然还会调用库函数。
在定义函数的过程中会用到选择结构、循环结构等基本语句,以及对结构体数组的定义等。
三、程序设计/******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*标准库函数*/#include "string.h"/*字符串函数*/#include "ctype.h" /*字符操作函数*/#define M 50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/{char NAME[20]; /*姓名*/char EMAIL[30]; /*邮箱*/char TELE1[10]; /*电话*/char TELE2[10]; /*电话*/char HOMETOWN[30]; /*籍贯*/}DATA;/******以下是函数原型*******/int enter(DATA t[]); /*输入记录*/int add(DATA t[],int n); /*添加记录*/int change(DATA t[],int n); /*修改记录*/int deleter(DATA t[],int n); /*删除记录*/void list(DATA t[],int n); /*显示记录*/void search(DATA t[],int n); /*按姓名查找显示记录*/void qseek(DATA t[],int n); /*快速查找记录*/void print(DATA temp); /*显示单条记录*/int find(DATA t[],int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*//******主函数开始*******/main(){int i;DATA d[M]; /*定义结构体数组*/int length; /*保存记录长度*/system("cls");for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ {case 1:length=enter(d);break;/*输入记录*/case 2:length=add(d,length); break; /*添加记录*/case 3:length=deleter(d,length);break; /*删除记录*/case 4:list(d,length);break; /*显示全部记录*/case 5:search(d,length);break; /*查找记录*/case 6:qseek(d,length);break; /*快速查找记录*/case 7:length=change(d,length);break;case 8:exit(0); /*如返回值为8则程序结束*/}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/* *\n");printf(" * 1. 录入联系人数据 5.按姓名查找*\n");printf(" * *\n");printf(" * 2. 添加联系人数据 6.快速查找*\n");printf("* *\n");printf(" * 3. 删除联系人数据 7.修改联系人数据*\n");printf(" * *\n");printf(" * 4. 显示全部联系人8.退出系统*\n");printf(" * *\n");printf("* *\n");printf("****************************************************\n");do{printf("\n 请输入您的选项(1~8):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>8); /*选择项不在1~7之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/}/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/int enter(DATA t[]){int i,n;system("cls");printf("\n 请输入需录入数据的个数: "); /*提示信息*/scanf("%d",&n); /*输入记录数*/printf("\n 请输入数据:\n"); /*提示输入记录*/printf("\n 姓名邮箱电话号码 1 电话号码 2 籍贯 \n");printf("*-------*----------------*---------------*----------------*---------------*\n");for(i=0;i<n;i++){scanf("%s%s%s%s%s",t[i].NAME,t[i].EMAIL,t[i].TELE1,t[i].TELE2,t[i].HOMETOWN);/*输入记录*/printf("*-------------------------------------------------------------------------*\n");}return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(DATA t[],int n){int i;system("cls");printf("\n\n*****************************DATA************************************\n");printf(" 姓名邮箱电话号码 1 电话号码 2 籍贯\n");printf("---------------------------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s%-10s%-30s\n",t[i].NAME,t[i].EMAIL,t[i].TELE1,t[i].TELE2,t[i].HOMETOWN);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf(" 请输入任意键继续...\n"); /*提示信息*/system ("pause");}printf("**********************************end**********************************\n");}/*查找记录*/void search(DATA t[],int n){char s[20]; /*保存待查找姓名字符串*/int i; /*保存查找到结点的序号*/system("cls");printf(" 请输入姓名 ");scanf("%s",s); /*输入待查找姓名*/i=find(t,n,s); /*调用find函数,得到一个整数*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("\n 未查找到该记录! \n");elseprint(t[i]); /*找到,调用显示函数显示记录*/}/*显示指定的一条记录*/void print(DATA temp){system("cls");printf("********************************************************************\n" );printf("姓名邮箱电话号码 1 电话号码 2 籍贯\n");printf("---------------------------------------------------------------------\n ");printf("%-20s%-30s%-10s%-10s%-30s\n",,temp.EMAIL,temp.TELE1,temp.TELE2 ,temp.HOMETOWN);printf("**********************end***********************\n");}/*查找函数,参数为记录数组和记录条数以及姓名s */int find(DATA t[],int n,char *s){int i;for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].NAME)==0) /*记录中的姓名和待比较的姓名是否相等*/return i; /*相等,则返回该记录的下标号,程序提前结结束*/}return i; /*返回i值*/}/*修改函数*/int change(DATA t[],int n){DATA stu;char s[20];int i,c;printf("请输入修改联系人的姓名:\n");scanf("%s",s);i=find(t,n,s);if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("\n 未查找到该记录! \n");elseprint(t[i]);printf(" @@@@@@@@@@@@@@@@\n");printf(" @ 1代表修改姓名!@\n");printf(" @ 2代表修改邮箱!@\n");printf(" @ 3代表修改电话号码1!@\n");printf(" @ 4代表修改电话号码2!@\n");printf(" @ 5代表修改籍贯!@\n");printf(" @@@@@@@@@@@@@@@@\n");do{printf("\n 请输入您的选项(1~5):"); /*提示输入选项*/ scanf("%d",&c);switch(c){case1:strcpy(,t[i].NAME);scanf("%s",t[i].NAME);printf("修改成功!\n");break; case2:strcpy(stu.EMAIL,t[i].EMAIL);scanf("%s",t[i].EMAIL);printf("修改成功!\n");break;case3:strcpy(stu.TELE1,t[i].TELE1);scanf("%s",t[i].TELE1);printf("修改成功!\n");break;case4:strcpy(stu.TELE2,t[i].TELE2);scanf("%s",t[i].TELE2);printf("修改成功!\n");break;case5:strcpy(stu.HOMETOWN,t[i].HOMETOWN);scanf("%s",&t[i].HOMETOWN);printf("修改成功!\n");break;}}while(c<1||c>5); /*选择项不在1~5之间重输*/return n;}/*删除函数,参数为记录数组和记录条数*/int deleter(DATA t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf(" 请输入删除联系人姓名: "); /*提示信息*/scanf("%s",s);/*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf(" \n 未找到要删除的记录!\n"); /*显示没找到要删除的记录*/else{print(t[i]); /*调用输出函数显示该条记录信息*/printf(" 确认是否删除该联系人(1~0)<提示:1为删除,0为不删除!>\n"); /*确认是否要删除*/printf(" 请输入你的选项:");scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{strcpy(t[j-1].NAME,t[j].NAME); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].EMAIL,t[j].EMAIL); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].TELE1,t[j].TELE1); /*将后一条记录的电话拷贝到前一条*/strcpy(t[j-1].TELE2,t[j].TELE2); /*将后一条记录的电话拷贝到前一条*/strcpy(t[j-1].HOMETOWN,t[j].HOMETOWN); /*将后一条记录的籍贯拷贝到前一条*/}n--; /*记录数减1*/printf("删除成功!!!\n");}}return n; /*返回记录数*/}/*添加记录函数,参数为结构体数组和记录数*/int add(DATA t[],int n)/*添加函数,参数为结构体数组和记录数*/{DATA temp; /*新插入记录信息*/int i,j;char s[20]; /*确定插入在哪个记录之前*/printf("请输入新插入联系人数据:\n");printf("***********************************************************************\n");printf(" 姓名邮箱电话号码 1 电话号码 2 籍贯\n");printf("-----------------------------------------------------------------------\n");scanf("%s%s%s%s",,temp.EMAIL,temp.TELE1,temp.TELE2,temp.HOMETOWN);/*输入插入信息*/printf("-----------------------------------------------------------------------\n");i=find(t,n,s); /*调用find,确定插入位置*/for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/{strcpy(t[j+1].NAME,t[j].NAME); /*将前记录的姓名复制到后一条*/strcpy(t[j+1].EMAIL,t[j].EMAIL); /*将前记录的邮箱复制到后一条*/strcpy(t[j+1].TELE1,t[j].TELE1); /*将前记录的电话复制到后一条*/strcpy(t[j+1].TELE2,t[j].TELE2); /*将前记录的电话复制到后一条*/ strcpy(t[j+1].HOMETOWN,t[j].HOMETOWN); /*将前记录的籍贯复制到后一条*/}strcpy(t[i].NAME,); /*将新插入记录的姓名复制到第i个位置*/strcpy(t[i].EMAIL,temp.EMAIL); /*将新插入记录的邮箱复制到第i个位置*/strcpy(t[i].TELE1,temp.TELE1); /*将新插入记录的电话复制到第i个位置*/strcpy(t[i].TELE1,temp.TELE2); /*将新插入记录的电话复制到第i个位置*/strcpy(t[i].HOMETOWN,temp.HOMETOWN); /*将新插记录的籍贯复制到第i个位置*/n++; /*记录数加1*/return n; /*返回记录数*/}/*快速查找,参数为结构体数组和记录数*/void qseek(DATA t[],int n){char s[20];int l,r,m;printf(" 请输入需快速查找的联系人姓名:"); /*提示输入*/scanf("%s",s); /*输入待查找的姓名*/l=0;r=n-1; /*设置左边界与右边界的初值*/while(l<=r) /*当左边界<=右边界时*/{m=(l+r)/2; /*计算中间位置*/if(strcmp(t[m].NAME,s)==0) /*与中间结点姓名字段做比较判是否相等*/ {print(t[m]); /*如果相等,则调用print函数显示记录信息*/return ; /*返回*/}if(strcmp(t[m].NAME,s)<0) /*如果中间结点小*/l=m+1; /*修改左边界*/elser=m-1; /*否则,中间结点大,修改右边界*/}if(l>r) /*如果左边界大于右边界时*/printf(" 未查找到该联系人的相关记录!\n"); /*显示没找到*/}四、运行结果五、总结(一)设计过程中遇到的问题对数组的调用:c语言规定只能逐个引用数组元素,而不能一次引用一个数组。