数据结构中用到的 C语言基本知识

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》中必要的C语言基本知识

有必要将数据结构所必须使用的C语言语法在此做简单介绍。根据多年教学实践,学生完成上机实验练习时遇到的主要问题是,不能正确的输入数据,结构体概念陌生,函数的传址调用概念不清,指针与链表有的没有学过。由于篇幅所限,这里仅对前三个问题加以介绍。如果学生基础好,可以越过这一部分内容不看。

一、基本输入和输出

对于重要的数据结构算法,均要求进行上机实验。而上机实践中离不开数据的输入/输出。看起来简单的输入/输出,往往是上机实验最容易出错的地方,尤其是输入。对于一个算法程序,如果数据不能正确输入,算法设计得再好也无法正常运行。

1.输入

C语言的输入是由系统提供的scanf()等函数实现,在程序的首部一般要求写入:

# include

因为标准输入/输出函数都存在于头文件stdio.h 之中,现将其包含进来方可使用这些常用的输入/输出函数。有的系统允许不使用上述包含语句,可以直接使用标准输入/输出函数。

函数scanf()的功能很丰富,输入格式也是多种多样,这是大家较为熟悉的知识,这里不做详细介绍。在使用中需要注意以下几个问题。

(1)一条scanf()语句有多个变量、并且都是数值型(int, float, double)时,在输入数据时应该在一行之内键入多个数据,数据之间空格分隔。例如:

int n; float x;

scanf (“%d %f ” , &n, &x);

正确的输入应是:整数空格实数回车。例如:

就是在两个数据之间使用空格键为分隔符,最后打回车键。

如果语句中在%d 和%f 之间有一个逗号:

scanf (“%d ,%f ” , &n, &x);

正确的输入应是:整数逗号实数回车。例如:

100,3.14

(2)在需要字符型变量或字符串输入时,要单独写一条输入语句,这样不易出错。如果在同一条scanf()语句中将字符型和数值型混合输入常常会出错。因为键盘输入时在数值型数据之间‘空格键’起‘分隔符’作用,但是在字符或字符串之间,‘空格’会被当做一个字符,而不能起到‘分隔符’的作用。所以将它们混在一起容易出错。

(3)在scanf()语句中变量写法应该是该变量的地址,这一点常被忽视。

请看下列程序:

1: viod main()

2: { char name[10], ch ;

3: int num; float x;

4: printf(“\n 请输入姓名:”); scanf(“%s”, name);

5: printf(“\n 请输入性别:”); scanf(“%c”, &ch);

6: printf(“\n 请输入学号和成绩:”); scanf(“%d%f”, &n, &x);

……;

}

为了方便说明问题程序中加了行号,运行时当然不允许行号。一般情况下在scanf()语句中的变量名之前要加上求地址符&,上述程序第5,6行之中就是这样。为什么第4行的name 前面不加&呢?因为name代表字符串,即是一维字符数组,一维数组名本身就是一个地址,是该数组的首地址,所以name前面不加&。

在本程序中把字符串、字符、数值型变量分别写入不同的scanf()语句,输入数据的具体形式如下:

请输入姓名:ZhangHua

请输入性别:v

请输入学号和成绩:101 90.5

请考虑如果姓名输入成:Zhang Hua,会出现什么现象?那样只会读入Zhang做姓名,而Hua 被忽略,还会影响后面的输入语句无法正确读入数据。

因此,应该充分重视数据的输入技术。

2.输出

C语言的输出是由系统提供的printf()等函数来实现,在程序的首部一般要求写入:

# include

因为标准输入/输出函数都存在于头文件stdio.h 之中,现将其包含进来方可使用这些常用的输入/输出函数。有的系统允许不使用上述包含语句,可以直接使用标准输入/输出函数。

输出函数printf()的语法一般容易掌握,这里强调的是怎样合理巧妙的使用它。

1.在连续输出多个数据时,数据之间一定要有间隔,不能连在一起。

int n=10, m=20, p=30;

printf(“\n %d%d%d”,n,m,p);

printf(“\n %6d%6d%6d”,n,m,p);//提倡使用的语句

第一行输出是:102030

第二行输出是:10 20 30

2.在输入语句scanf()之前先使用printf()输出提示信息,但是在printf()最后不能使用换

行符。

int x;

printf(“\n x=?”); //句尾不应使用换行符

scanf( “%d”,&x);

这样使光标与提示信息出现在同一行上,光标停在问号后边:X=?□。

3.在该换行的地方,要及时换行。

int i;

printf(“数据输出如下:\n”); //需要换行

for (i=0; i<8; i++) printf(“%6d”, i ); // 几个数据在同一行输出,不能换行

4. 在调试程序时多加几个输出语句,以便监视中间运行状况。程序调式成功后,再去掉这些辅助输出语句。

二、函数与参数传递

函数的设计和调用是程序设计必不可少的技能,是程序设计最重要的基础。一些初学者之之所以感到编程难,就是忽视了这个基础。在传统的面向过程的程序设计中,往往提倡模块化结构化程序设计,不论BASIC、FONFTRAN、PASCAL还是其他高级语言,最终要涉及到子函数的设计和使用。

相关文档
最新文档