数据结构用到的c语言知识,数据结构中用到的C语言基本知识.doc

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

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

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

一、基本输入和输出

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

输入

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

# include

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

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

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

int n; float x;

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

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

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

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

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

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

在需要字符型变量或字符串输入时,要单独写一条输入语句,这样不易出错。

如果在同一条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被忽略,还会影响后面的输入语句无法正确读入数据。

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

输出

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

# include

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

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

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

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

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

int x;

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

scanf( “%d”,&x);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 1.课程设计目的 2 2.需求分析 2 2.1要求 2 2.2任务描述 2 2.3运行环境 3 2.4开发工具 3 3.总体设计 3 3.1系统流设计 3 3.2系统模块设计 4 4.详细设计 5 4.1数据结构设计 5 4.2模块接口设计 6 4.3 以下是几个主要模块的流程图: 6 5.运行结果 9 5.1主菜单界面: 10 5.2信息录入界面: 11 5.3信息浏览界面: 12 5.4 信息查询界面: 14 5.5信息修改界面: 15 6.程序调试与测试 16 6.1程序调试 16 6.2程序测试 16 7.问题与不足 17 8.建议 17 9.编程体会 17 10.程序源代码: 17 11.参考文献 32 12.用户使用手册 33 1.课程设计目的 1) 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合 理的模块化结构。 2) 通过课程设计,进一步掌握C语言重要的数据结构。掌握并熟练运用指针、链表、结 构体、文件等数据结构。 3) 通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。 4) 通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来 ,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。 5) 通过课程设计,加强了自己的程序分析能力。 2.需求分析 2.1要求 1) 遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力 。 2) 运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计 、概要设计、详细设计、编写代码、调试和测试C程序等过程。 3) 学会利用数组、结构体、链表进行相关信息表示。 4) 功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述 5) 各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口 等关系正确。 6) 所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。 7) 界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入 信息有较完善的值域分析。 8) 程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。 9) 学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。 10) 掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。 11) C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。 2.2任务描述 假定公司有职工10人,职工有职工号、姓名、以周为记录时长的考勤情况(迟到次数 、早退次数、旷工天数)三项记录,一周上班五天,每天上午上班时间为8:00,下班时 间为11:30、下午2:00上班,5:30下班。 试设计一考勤管理系统,使之能提供以下功能: (1) 系统以菜单方式工作(用键盘输入1~5之间的数来选择功能,其6为退出) (2) 职工上班、下班录入功能(职工号、姓名任意给一个即可,上班时间(自动获取系统时 间)、下班时间(自动获取系统时间)) (3) 职工出勤情况整体浏览功能(职工号、姓名、(迟到、早退、旷工)、无前项则显示全 勤) (4) 查询功能,按职工号、姓名、迟到、早退、旷工、全勤查询(至少一种查询方式) (5) 职工考勤信息的删除(给定密码后可按职工号、姓名、考勤情况任一项进行删除) (6) 考勤信息的修改(给定密码后可按职工号、姓名、考勤情况任一项进行删除) (7) 所有数据符合实际应用要求 2.3运行环境 1) WindowsXP/7系统 2) VC++6.0编译环境 2.4开发工具 C语言 3.总体设计 3.1系统流设计 本系统的功能模块如图1所示,主要有以下模块: 图1系统功能模块图 3.2系统模块设计 1) 主菜单界面:构造函数void menu(),实现系统主菜单的显示。 2) 删除职工资料:构造函数void Del(Link l),实现职工资料的删除。并且要密码输入的要求(可以修改密码)。 3) 职工资料录入:构造函数void Qur1(Link l)和void Qur2(Link l)。分别对应上班时间和下班时间的录入。 4) 查询职工资料:构造函数void find(Link l),实现对需要修改资料的学生的查询,并提供姓名和工号两种查询方式。 5) 修改职工资料:构造函数void Modify(Link l),实现职工对工号和姓名的修改。 6) 保存职工资料:构造函数void Save(Link l),实现资料修改,删除等功能之后的保存。 7) 整体浏览:构造函数void Disp(Link l),实现对全部职工的全部信息的浏览。 4.详细设计 4.1数据结构设计 (根据具体的题目

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值