《高级语言程序设计(Ⅱ)》新版课程实验教学大纲

作者: 时间:2020-07-10 点击数:

《高级语言程序设计(Ⅱ)》课程实验教学大纲

课程编号:19031003

课程总学时:64              实验学时:24

课程总学分:3.5

适用专业:网络工程、软件工程、物联网工程、数据科学与大数据技术

 

一、本课程实验的主要目的与任务

实验目的:通过C程序设计实验培养学生对学习程序设计的兴趣,加深对讲授内容的理解,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。

实验任务:学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。

 

二、本课程实验项目

序号

实验项目名称

学时

类型

必做/选做

所需主要设备

1

函数

6

设计性

必做

PC机及C实验环境

2

指针

6

设计性

必做

PC机及C实验环境

3

结构体与其他构造类型

6

设计性

必做

PC机及C实验环境

4

文件

4

设计性

必做

PC机及C实验环境

5

综合实例

2

设计性

必做

PC机及C实验环境

 







三、各实验项目主要实验内容和基本要求

各实验项目的主要内容和基本要求见附录。

四、实验成绩考核与评定办法

学生应做好实验准备,认真完成每个实验,按时完成实验报告。任课教师应认真批改实验报告并给出实验报告成绩。

五、主要参考书目

1、《C程序设计案例教程》,钟家民;清华大学出版社,20186

2、《C程序设计(第四版)学习辅导》,谭浩强;清华大学出版社,20106

3、《C程序设计(第四版)》,谭浩强;清华大学出版社,20106

4、《C语言程序设计》,姬秀荔;清华大学出版社,20122

5、《深入体验C语言项目开发)》,薛小龙;清华大学出版社,20117

6 http://acm.nyist.net/,南阳理工学院ACM在线评测系统

7、《机试考点 百签题解)》,郎六琪;吉林大学出版社,20124

 

六、本大纲说明

本课程大纲是动态的,在实验过程中,可根据学生的程度适当调整实验的内容和时间。

 

 

 

 

 

撰写人:                                    审定人:钟家民

批准人:                                    执行时间:

 

 


实验函数

1.实验目的

1)掌握自定义函数的一般结构及定义函数的方法。

2)掌握形参、实参、函数原型等重要概念。

3)掌握函数声明、函数调用的一般方法。

2.实验内容

1)求三角形面积函数。编写一个求任意三角形面积的函数,并在主函数中调用它,计算任意三角形的面积。

编程提示:

设三角形边长为abc,面积area的算法是

 

显然,要计算三角形面积,需要用到3个参数,面积函数的返回值的数据类型应为实型。

尽管main()函数可以出现在程序的任何位置,但为了方便程序阅读,通常将主函数放在程序的开始位置,并在它之前集中进行自定义函数的原型声明。

#include<math.h>

#include<stdio.h>

float area(float,float,float); /*计算三角形面积的函数原型声明*/

void main()

{  

      float a,b,c;

     printf("请输入三角形的3个边长值:\n");

      scanf("%f%f%f",&a,&b,&c);

      if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0)

printf("Area=%-7.2f\n",area(a,b,c)); 

else

         printf("输入的三边不能构成三角形");

}

/*计算任意三角形面积的函数*/

float area(float a,float b,float c)

{

     float s,area_s;

     s=(a+b+c)/2.0;

     area_s=sqrt(s*(s-a)*(s-b)*(s-c));

      return(area_s);

}

2)把猴子吃桃问题写成一个函数,使它能够求得指定一天开始时的桃子数。

编程提示:猴子吃桃问题的函数只需一个int型形参,用指定的那一个天数作实参进行调用,函数的返回值为所求的桃子数。

#include<stdio.h>

int monkey(int);    /*函数原型声明*/

void main()

{

    int day;

    printf("求第几天开始时的桃子数?\n");

   do

{

      scanf("%d",&day);

       if(day<1 || day>10)

           continue;

else

           break;

}while(1);   

  printf("total%d\n",monkey(day));

}

/*以下是求桃子数的函数*/

int monkey(int k)

{

      int i,m,n;

      for(n=1,i=1;i<=10-k;i++)

     {

             m=2*n+2;

             n=m;

   }

    return(n);

} 

3)用递归函数求解Fibonacci数列问题。在主函数中调用求Fibonacci数的函数,输出Fibonacci 数列中任意项的数值。

  Fibonacci数列第n(n≥1)个数的递归表示如下:

  由此可得到求Fibonacci数列第n个数的递归函数。 

4)编写一个用选择法对一维数组升序排序的函数,并在主函数中调用该排序函数,实现对任意20个整数的排序。

编程提示:这是一维数组作函数参数的问题。

设计一个对一维数组的前n个数用选择法进行排序的函数select( )select( )函数有两个形参,一个是一维数组形参,一是排序元素数形参。select( )函数不需要返回值,函数类型说明为void型。

在进行函数调用时。实参和形参要按照参数的意义在位置上对应一致。

3.实验要求

(1)掌握定义函数的方法。

(2)掌握实参和形参的对应关系。

(3)掌握函数的嵌套调用和递归调用的方法。

(4)掌握全局变量和局部变量的概念和用法。

 

4.实验器材

(1)PC机

(2)C实验环境

实验指针

1.实验目的

1)掌握指针的概念,会定义并使用指针变量。

2)学会使用数组的指针和指向数组的指针变量。

3)学会使用字符串的指针和指向字符串的指针变量。

4)学会使用指向函数的指针变量。

2.实验内容

1)求三个整数中较大者。

编程提示:本质上是两个数的比较。三个数比较时,ab比较,ac比较,bc比较。

#include <stdio.h>

void swap(int *pt1, int *pt2)             

{

   int temp;

   temp=*pt1;                             /* *pt1*pt2变量的值 */  

   *pt1=*pt2;

   *pt2=temp;

void exchange(int *q1, int *q2, int *q3) /* 定义将3个变量的值交换的函数 */   

   if(*q1<*q2) swap(q1,q2);                /* 如果a<b,交换ab的值 */  

   if(*q1<*q3) swap(q1,q3);                /* 如果a<c,交换ac的值 */  

   if(*q2<*q3) swap(q2,q3);                /* 如果b<c,交换bc的值 */  

}

int main()

{  

   int a,b,c,*p1,*p2,*p3;

   printf("please enter three numbers:");

   scanf("%d,%d,%d",&a,&b,&c);

   p1=&a;p2=&b;p3=&c;

   exchange(p1,p2,p3);

   printf("The order is:%d,%d,%d\n",a,b,c);

   return 0;

}

2)将10个整数按由大到小排序输出。

编程提示:利用冒泡法排序。

#include <stdio.h>

void sort(int *x,int n)       /* 定义sort函数,x是指针变量 */

{

   int i,j,t;

   for(i=0;i<n-1;i++)

   {

       for(j=0;j<n-1-i;j++)

        if(x[j]>x[j+1])

            {

               t=*(x+j);

               *(x+j)=*(x+j+1);

               *(x+j+1)=t;

            }

    }

}

int main()

{

   int i,*p,a[10];

   p=a;                       /*  指针变量p指向a[0] */

   printf("输入10整数:");

   for(i=0;i<10;i++)

     scanf("%d",p++);        /*  输入10个整数,p++指针下移 */

   p=a;                      /*  指针变量p重新指向a[0] */

   sort(p,10);                   /* 调用sort函数 */

   printf("按由小到大的排序:");

   for(p=a,i=0;i<10;i++)

      printf("%d ",*p++);    /* 输出排序后的10个数组元素,先执行*p,再执行p++ */

   printf("\n");

   return 0;

}

3)输入一行字符,编写函数,分别统计其中的大写字母、小写字母、空格、数字和其它字符的个数。

编程提示:利用if的第三种形式,判断各字符并进行计数。

4)编写函数,将一个5×5矩阵的最大值放在中心,四角按从左到右,从上到下的顺序存放最小值。

编程提示:利用打擂台法求最大值和最小值。

5)编写函数,求字符串的长度。

编程提示:在遍历字符串时,进行计数,直到遇到’\0’结束。

6)输入10个整数进行排序并输出,其中用函数指针编写一个通用的排序函数,如果输入1,程序实现数据按升序排序;如果输入2,程序实现数据按降序。

编程提示:定义ascend函数,按升序排序;定义descend函数,按降序排序;定义sort函数,实现排序的算法,根据实参,确定指向函数的指针变量调用ascend函数还是descend函数。

3.实验要求

(1)掌握指针的概念,会定义和使用指针变量。

(2)学会使用数组的指针和指向数组的指针变量。

(3)学会使用字符串的指针和指向字符串的指针变量。

4.实验器材

(1)PC机

(2)C实验环境

 

 

实验结构体与其他构造类型

1.实验目的

(1)掌握结构体变量的定义和引用。

(2)掌握结构体数组和结构体指针的使用。

(3)培养使用结构体解决实际问题的能力。

2.实验内容

(1)编写程序,在主函数中输入年月日,利用days函数计算该天是本年中的第几天。定义一个结构体变量(包括年、月、日)。

编程提示:声明结构体类型struct y_m_d,成员为yearmonthday。根据题目,需要考虑闰年的情况,判断闰年的条件为year%4==0 && year%100!=0 || year%4==0

#include <stdio.h>

struct y_m_d

{

    int year;

    int month;

    int day;

} date;

int days(int year,int month,int day)

{

    int day_sum,i;

    int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

    day_sum=0;

    for (i=1;i<month;i++)

        day_sum+=day_tab[i];

    day_sum+=day;

    if ((year%4==0 && year%100!=0 || year%4==0) && month>=3)

        day_sum+=1;

    return(day_sum);

}

int main()

{

    int day_sum;

    printf("input year,month,day: ");

    scanf("%d,%d,%d",&date. year,&date.month,&date.day);

    day_sum=days(date.year,date.month,date.day);

    printf("%d%d日是这一年的第%d!\n",date.month,date.day,day_sum);

    return 0;

}

(2)5名学生的信息(包括学号、姓名和成绩),编写函数实现按成绩由高到低的顺序输出学生的信息。

编程提示:定义结构体数组并初始化,利用选择法对各元素中的成绩进行排序,同类的结构体变量允许整体赋值,因此借助中间变量temp,实现结构体数组中各元素之间的交换。也可以编写程序通过键盘输入学生的信息。

#include <stdio.h>

#define N 5

struct Student       /* 声明结构体类型struct Student */ 

{

    int num;

    char name[20];

    float score;

};  

void sort(struct Student stud[],int n)

{

        struct Student temp;

        int i,j,k;

    for(i=0;i<n-1;i++)    /* 选择法 */

    {

        k=i;

        for(j=i+1;j<N;j++)

            if(stud[j].score>stud[k].score)

                k=j;

               if(k!=i)

              {

                 temp=stud[k];

                 stud[k]=stud[i];

                 stud[i]=temp;

             }

        }

}

int main()

{

    struct Student stud[N]={{10001,"zhang",91},{10002,"wang",92},

{10003,"sun",85}, {10004,"zhao",90.5},

{10005,"kong",90}};

          /* 定义结构体变量temp,用作交换时的临时变量 */

    int i;

printf("成绩由高到低:\n");     

sort(stud,N);

       for(i=0;i<N;i++)

       printf("%5d   %-10s%6.1f\n",stud[i].num,stud[i].name,stud[i].score);

     return 0;

(3)编写一个程序,输入若干人员的姓名及电话号码(11位),以字符’#’表示结束输入。然后输入姓名,查找该人的电话号码。

编程提示:

声明结构体类型

struct Telephone

{

    char name[10];

    char telno[12];

};

然后定义结构体数组,输入姓名和电话。查找电话号码时,需要用字符串函数strcmp()进行字符串的比较。

(4) 13 个人围成一个圈,从第一个人开始顺序报数1234……,凡是报到n者退出圈子。找出最后留在圈子中的人是原来的几号。要求用链表实现。

编程提示:

声明结构体类型并定义结构体数组。

struct Person

{

    int num;

    int nextp;

} link[N+1];

3.实验要求

(1)掌握结构体类型变量定义方法。

(2)掌握结构体类型数组的定义和使用。

4.实验器材

(1)PC机

(2)C实验环境

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实验文件

1.实验目的

(1)掌握文件以及缓冲文件系统、文件指针的概念。

(2)学会使用文件打开、关闭、读、写等文件操作函数。

(3)掌握对文件进行字符/写、块读/写的方法。

(4)巩固文件教学单元的知识。

2.实验内容

(1)显示文本文件的内容。打开记事本,输入123456789,然后保存在C盘的根目录,文件名为string.txt,编写程序将该文件的内容显示出来。

编程提示:

只显示文件内容,即为读文件,应以“r”方式将string.txt文件打开。

feof()函数判断文件结束状态。

#include<stdio.h>

#include <stdlib.h>

void main()

{

FILE * fp;

char ch;

if((fp=fopen("c:\\string.txt","r"))==NULL)

{

printf("cannot open source file.\n");

exit(1);

}

while(! feof(fp))

{

ch =fgetc(fp);

putchar(ch);

}

fclose(fp);

}

程序调试

建立string.txt文本文件。

运行程序,察看并分析程序的运行结果。

删除string.txt文本文件后,运行程序,察看并分析程序的运行结果。

2)文件复制。编写一个文本文件复制函数,并在主函数main()中调用它,将实验内容1中建立的文本文件string.txt复制到文件backup.txt中。

编程提示:

文件复制需要对两个文件进行操作,源文件用“r”方式打开,目标文件用“w”方式打开。

文件复制函数copy()使用两个字符型指针参数,调用时实参使用文件名字符串,或者是存储文件名的字符串变量。

文件复制的方法:从源文件中逐个读出字符,并立刻把读出的一个字符写入到目标文件中。

#include<stdio.h>

#include <stdlib.h>

void copy(char * ,char *);

void main()

{

   char * source="c:\\tring.txt";

   char * target="c:\\backup.txt";

   copy(source ,target);

}

void copy(char * source,char * target)

{

FILE * fp_s, *fp_t;

if((fp_s=fopen(source, "r"))==NULL)    /*以读方式打开源文件*/

{

printf("不能打开源文件.\n");

exit(1);

}

if((fp_t=fopen(target, "w"))==NULL)     /*以写方式打开目标文件*/

{

printf("不能打开目标文件.\n");

exit(1);

}

while(! feof(fp_s))

fputc(fgetc(fp_s),fp_t);

printf("文件复制完成.\n");

fclose(fp_s);

fclose(fp_t);

}

程序调试

运行程序后,用文本编辑软件打开backup.txt文件察看结果。也可以使用文本文件显示程序察看结果。

3)用文件储存学生数据。有5个学生,每个学生有3门课的成绩,从键盘输入数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。(习题15.7

5名学生的学号、姓名和3门课成绩如下:

 99101  Wang    89  98  67

99103  Li     60  80  90

99106  Fun     75  91  99

    99110  Ling    80  50  62

    99113  Yuan    58  68  71

编程提示:

该问题有两个主要步骤:

定义结构体数组,将输入数据首先存储到结构体数组中。

将结构体数组中的数据读出来,以块写入的方式写到指定的文件中。

#include <stdio.h>

#define N 5

struct student                   /*定义学生结构体数据类型*/

{

char num[10];

char name[8];

int score[3];

float ave;

};

void main()

{

struct student stu[5];

int i,j;

FILE * fp;

float sum;

for(i=0;i<N;i++)

{

printf("Enter num: ");

scanf("%s",stu[i].num);        /*输入学生的学号*/

printf("Enter name: ");

scanf("%s",stu[i].name);        /*输入学生的姓名*/

sum=0;

for(j=0;j<3;j++)           /*输入学生的3门课的成绩*/

{

printf("Enter score%d: ",j+1);

scanf("%d",&stu[i].score[j]); /*计算总成绩*/

sum=sum+stu[i].score[j];

getchar();

}

stu[i].ave=sum/3.0;         /*计算平均成绩*/

}

printf("\n");

if((fp=fopen("stud","w"))==NULL)

{

printf("Can not open this file.\n");

exit(1);

}

for(i=0;i<N;i++)

fwrite(&stu[i],sizeof(struct student),1,fp); /*向文件写数据*/

fclose(fp);

if ((fp=fopen("stud","r"))==NULL)

{

printf("Can not open this file.\n");

exit(0);

}

for(i=0;i<N;i++)               /*将文件中的数据读出并显示出来*/

{

fread(&stu[i],sizeof(struct student),1,fp);

printf("%s  %s",stu[i].num,stu[i].name);

for(j=0;j<3;j++)

printf("%d",stu[i].score[j]);

printf("%f\n",stu[i].ave);

}

fclose(fp);

}

程序调试

为了观察文件的存储操作是否正确,在调试程序时应增加显示存储文件的程序代码。也可以单独编写程序,显示存储文件。

在参考程序中,在写文件时使用的是“w”操作方式,显示文件时重新用“r”方式打开。请修改程序,使用一种文件操作方式,写完之后,再从头显示文件内容。

3.实验要求

(1)掌握文件和文件指针的概念。

(2)学会打开文件、关闭文件的操作。

(3)学会对数据文件进行顺序读写和随机读写。

4.实验器材

(1)PC机

(2)C实验环境

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实验综合实例

下面我们以《通讯录管理程序》为例,按照上述的6个步骤讲解较大程序设计的基本过程。

一、题目的内容要求

通讯录管理程序课程设计的内容要求如下:

综合运用C语言程序设计课程的主要知识,设计一个用于通讯录管理的程序,设计指标由程序的功能要求和技术要求具体说明。

1.功能要求

通讯录管理程序至少应具有如下功能:

1)能通过键盘向通讯录输入数据。要求随时都能使用该项功能实现记录输人,一次可以输入一条记录,也可以输入多条记录。所谓一条记录,是指通讯录中一个人员的完整信息。

2)能显示通讯录存储的记录信息,在显示时能提供下列显示方式:

按自然顺序显示。即按照向通讯录输入数据时各条记录的先后顺序,显示通讯录中已有的记录信息。

按照一定的排序顺序显示通讯录信息。排序顺序有多种,如按姓名排序、按年龄排序、按所在城市排序、按所在单位排序等,具体使用的排序顺序由设计者确定,但至少要包括上述两种排序方式。

3)能查询通讯录信息。要求至少提供两种查询方式,如按姓名查询、按所在城市查询等,任何一种查询都要有明确的查询结果。

4)能对通讯录存储的信息进行修改。要求至少提供两种修改方式,如按照姓名修改、按照通讯录记录序号修改。记录序号是通讯录记录的自然顺序编号。

5)能对通讯录的信息进行删除。要求删除时以记录为单位,既能一次删除一条记录,也能一次删除多条记录。

6)通讯录管理结束后,能够正常退出通讯录管理程序。

2.技术要求

1)每个通讯录记录至少包括如下信息:姓名、电话、所在城市、所在单位、年龄、备注等。

2)通讯录信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。

3)对于通讯录功能中的数据输入、显示、查询、修改、删除等功能,要求编写功能独立的函数或主控函数予以实现,其所属的各项功能尽量由独立的函数实现。

4)以菜单方式实现功能选择控制。

5)本通讯录管理程序能够实现100条记录的管理。

二、 程序的功能设计

根据题目的功能要求,设计通讯录管理程序的功能如图10-1所示。

各功能的具体说明如下:

1.通讯录信息录入

1)通过显示信息项目,逐项输入通讯录的记录信息。

2)每次输入记录后,通过询问的方式决定是否继续进行记录输入,因此,使用该功能既可录入一条记录,也可连续录入多条记录。

3)每次录入记录之前,显示通讯录中已有的记录数。

2.通讯录信息显示

1)按自然顺序显示,即以通讯录文件中的记录顺序为序,逐个对文件记录进行显示。

2)按排序顺序显示,即对通讯录中的记录进行排序后,再按照排序结果显示出来。但不管使用何种排序算法,排序显示不能改变通讯录记录的物理顺序。

3)当通讯录信息较多时,实行分屏显示,每屏最多显示20条记录信息。

4)显示记录时,对每一条记录增加与显示顺序一致的序号。

3.通讯录信息查询

1)提供按姓名查询和按家庭地址查询两种查询方式。

2)查找成功后显示每一条符合条件记录的完整信息,当一屏不能完成显示时,实行分屏显示,每屏最多显示20条符合条件的记录。当找不到符合条件记录时,给出相应的提示信息。

4.通讯录信息修改

1)按照指定的记录序号,对通讯录记录进行修改。首先显示指定记录的当前数据,然后通过重新输入该记录数据的方法,完成数据修改操作。

 

 

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


5-1  通讯录管理程序功能图

2)为方便确认记录序号,该功能项同时提供通讯录记录的浏览功能。

5.通讯录信息删除

1)提供按姓名删除和按序号删除两种方式,当找到指定记录时,进行删除操作。找不到指定记录时,给出相应的提示信息。

2)所有的删除均为物理删除,即将指定的记录从通讯录文件中彻底清除掉。

6.建立通讯录文件

第一次使用通讯录管理程序时,用于建立存储通讯录信息的文件。

三、 程序的数据设计

每个通讯录记录由多个不同的数据项构成,是一个结构体数据,因此需要定义结构体数据类型。根据题目要求,确定每个记录包括的数据项为:姓名、电话、家庭住址、所在单位、年龄、备注等。据此定义如下结构体数据类型:

struct record

{

    char name[15];              /*姓名*/

    char birth[10];         /*生日*/

    char tele[12];           /*电话*/

    char addr[30];         /*家庭地址*/

    char units[30];         /*工作单位*/

    char note[50];          /*备注*/

};

考虑到struct record是通讯录管理程序中的通用数据类型,将在多个函数中使用,故将其在头文件中定义。使用文件address.txt存储数据类型为struct record的通讯录数据。

四、 程序的函数设计

1.函数功能描述

1main()函数

通讯录管理程序主函数,实现程序功能的主菜单显示,通过各功能函数的调用,实现整个程序的功能控制。

2append()函数

函数原型为void append(),是输入数据函数,它实现通讯录数据的键盘输入。

3display()函数

函数原型为void display(),是显示通讯录信息的主控函数,它实现显示功能的菜单显示,并进行不同显示功能的函数调用,以实现程序的显示功能。

4locate()函数

函数原型为void locate(),是查询通讯录信息的主控函数,它显示查询功能的菜单,并根据查询要求进行相应的函数调用,以实现程序的查询功能。

5modify()函数

函数原型为void modify(),是修改通讯录信息的主控函数,它显示修改功能的菜单,并进行相应的函数调用,以实现程序的修改功能。

6dele()函数

函数原型为void dele(),是删除通讯录记录的主控函数,它显示删除功能的菜单,并根据删除要求,进行相应的函数调用,以实现程序的删除功能。

7disp_arr()函数

函数原型为void disp_arrstruct record[ ]int),功能是显示struct record型结构体数组的全部数据,其第二个参数是结构体数组的长度。这里的结构体数组对应于存储通讯录文件address.txt的数据,数组长度对应于通讯录文件的记录数。

8disp_row()函数

函数原型为void disp_rowstruct record),功能是显示一个struct record型结构体数据,disp_arr()函数进行数组输出时,每一个数组元素都调用disp_row() 函数实现输出。

9sort()函数

函数原型为void sortstruct record[ ]int),是排序的主控函数,它显示排序功能的菜单,并根据显示的排序要求,进行相应的函数调用,以实现程序的排序显示功能。

10sort_name()函数

函数原型为void sort_namestruct record[ ]int),功能是对struct record型结构体数组实现按姓名排序操作。

11sort_addr()函数

函数原型为void sort_addrstruct record[ ]int),功能是对struct record型结构体数组实现按家庭地址排序操作。

12modi_seq()函数

函数原型为void modi_seqstruct record[ ]int),功能是对struct record型结构体数组实现按序号修改操作。

13dele_name()函数

函数原型为void dele_namestruct record[ ]int *),功能是对struct record型结构体数组实现按姓名删除操作。

14dele_sequ()函数

函数原型为void dele_sequstruct record[ ]int *),功能是对struct record型结构体数组实现按序号删除操作。

15disp_str()函数

函数原型为disp_strcharint),功能是输出n个字符,用于菜单的字符显示,每一个有菜单显示功能的函数都调用该函数。

16disp_table()函数

函数原型为void disp_table(),功能是显示一行表头,用于输出记录时的标题显示。

17creat()函数

函数原型为void creat(),功能是建立存储通讯录信息的文件address.txt

2.函数的直接调用关系

1main()函数直接调用的函数:disp_str()函数、append()函数、display()函数、locate()函数、modify()函数、dele()函数。

2append()函数直接调用的函数:无。

3display()函数直接调用的函数:disp_str()函数、disp_arr()函数、sort()函数。

4locate()函数直接调用的函数:disp_str()函数、disp_row()函数。

5modify()函数直接调用的函数:disp_str()函数、modi_seq()函数。

6dele()函数直接调用的函数:disp_str()函数、dele_name()函数、dele_sequ()函数。

7disp_arr()函数直接调用的函数:disp_row()函数、disp_table()函数。

8sort()函数直接调用的函数:disp_str()函数、sort_name()函数、sort_city()函数。

9sort_name()函数直接调用的函数:disp_arr()函数。

10sort_addr()函数直接调用的函数:disp_arr()函数。

11modi_seq()函数直接调用的函数:disp_row()函数。

12dele_name()函数直接调用的函数:disp_table()函数、disp_row()函数。

13dele_sequ()函数直接调用的函数:disp_table()函数、disp_row()函数。

14creat()函数直接调用的函数:无。

 

 

 

 

 

Copyright© 2020 Anyang Institute of Technology.All rights reserved.

学院地址:河南省安阳市黄河大道西段