数据结构c语言王海燕版课后答案,c语言程序设计实验指导(学生用).doc

44cb7578e1df5412b94317daaa3307ba.gifc语言程序设计实验指导(学生用).doc

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

20

积分

还剩页未读,继续阅读

关 键 词:语言程序设计

实验

指导

学生

资源描述:

C语言程序设计

实验指导

(学生用)

计算机基础教研室

《C语言程序设计》课程组

2012年9月

前 言

《C语言程序设计》是计算机科学技术系面向全校理工科开设的一门专业平台课程。通过这门课程的学习,可以让学生了解程序设计的思想和方法,掌握高级语言程序设计的基本知识,提高问题求解和程序语言的应用能力。

《C语言程序设计实验指导书》是《C语言程序设计》的配套指导书。本指导书本着“厚基础,重实践,以专业为导向”的原则,其中程序设计基础、数组、函数这三个实验项目是所有学科专业都必须掌握的,其他实验项目根据专业特点,设计了不同的要求:对于普通专业侧重循环、数组、函数、结构体等,生化类专业包含数据文件的处理,机械电子类专业包含位运算,数理类专业包含数值计算等内容。每个实验本着循序渐进的原则,由简到难,逐步深化,另外配有相应的实验练习,学生可根据自己的情况选择完成。本指导书所有程序代码均在Visual C++环境下调试通过。

本指导书在编写过程中得到了系领导的大力支持,王海燕主任在百忙中多次参加我们的课程研讨,庄波老师、宫锋老师在大纲编写、指导书任务设计方面给出了切实可行的意见和建议,在此深表感谢。

本指导书由计算机基础教研室《C语言程序设计》课程组全体人员共同编写,谢玉华老师负责统筹安排,实验一、实验二、实验三、实验七由张志芬老师编写,实验四、实验六由陈春华、薛红芳老师编写,实验五由陈庆燕老师编写,最后由张志芬老师统稿,在此一并感谢。

由于水平有限,本指导书难免存在疏漏和不足之处,望各位老师在使用过程中多提宝贵意见,有利于我们进一步改进。

《C语言程序设计》课程组

2012年9月

目 录

实验一 基本控制结构的应用1

1.1 熟悉编程环境1

1.2 顺序结构程序设计1

1.3 选择结构程序设计2

1.4 循环结构程序设计4

实验二 数组的应用7

2.1 一维数组的应用7

2.2 二维数组的应用10

2.3 字符数组的应用12

实验三 函数的应用13

实验四 位运算的综合应用15

实验五 数据文件的处理22

实验六 数值计算25

实验七 简单学生成绩管理系统30

实验一 基本控制结构的应用

1.1 熟悉编程环境

一、实验目的

1.了解C语言程序的开发环境,掌握C语言源程序的编辑、编译、连接及运行过程;

2.通过运行简单的C程序,初步了解C语言源程序的特点及基本结构。

二、实验内容

1.在TC或VC++环境下,编辑如下所示的简单C语言程序:

#include main()

{

printf(“hello world!\n”);

}

对其进行编译、连接及运行,观察程序的运行结果。

2.编程在显示器上输出如下信息:

****************

How Are You!

****************

三、实验练习

1.编程在显示器上输出如下信息:

*

***

*****

2.求一个三位数的各位上数字之和并输出该和。

1.2 顺序结构程序设计

一、实验目的

1.掌握运算符的使用;

2.正确定义程序中的变量;

3.掌握C语言中数学公式的表示;

4.熟练使用输入、输出语句;

5.能够利用顺序结构进行程序设计。

二、实验内容

已知三角形的三边长分别为3,4,4,求三角形的面积。

三、分析

三角形三边边长已知,根据公式:面积=s(s-a)(s-b)(s-c),其中s=(a+b+c)/2即可求得面积。

四、算法描述

1.定义三个边长a,b,c为float型,其初值为3,4,4;

2.计算s=(a+b+c)/2;

3.计算area=sqrt(s*(s-a)*(s-b)*(s-c)),求得三角形的面积并输出。

五、程序

#include #include main()

{

/*定义变量*/

/*计算面积*/

/*输出面积*/

}

六、实验练习:

1.从键盘上输入一个大写字母,将其转换成相应的小写字母并输出。

2.把560分钟换算成小时和分钟表示并输出。

3.求解方程2x2+3x+1=0的解。

1.3 选择结构程序设计

一、实验目的

1.掌握关系运算及逻辑运算;

2.掌握if语句;

3.掌握switch语句;

4.能够利用选择结构进行程序设计。

二、实验内容

根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积及三角形的类型。

三、分析

1.首先判断是否能构成三角形,如果满足a,b,c三条边大于0,并且满足a+b>c,b+c>a,a+c>b则能构成三角形;否则不能构成三角形;

2.若能构成三角形时,计算三角形的面积。再判断三角形的类型,如果三边都相等时等边三角形;如果任意两边相等则为等腰三角形;如果两边平方之和等于第三边平方则为直角三角形;其他为一般三角形。

四、算法描述

1.定义三个边长a,b,c为float型,从键盘输入三个边长值;

2.判断三边是否能构成三角形,条件是a,b,c三条边大于0,并且a+b>c,b+c>a,a+c>b,不满足条件则不能构成三角形;

3.如果能构成三角形时,计算三角形的面积(面积= sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2);再判断三角形的类型,如果三边都相等时等边三角形;如果任意两边相等则为等腰三角形;如果两边平方之和等于第三边平方则为直角三角形;其他为一般三角形。

五、程序

#include #include main()

{

/*定义变量*/

/*输入边长*/

/*判断能否构成三角形,能则计算面积判断类型*/

{

/*计算三角形的面积*/

/*输出三角形的面积*/

/*判断三角形的类型(等边、等腰、直角或一般三角形)*/

}

else

printf(“三边不合适,不能构成三角形!\n”);

}

六、实验练习

1.编程实现从键盘输入四个整数,把这四个数由小到大输出。

2.编程判断从键盘输入的整数的正负性及奇偶性。

3.根据键盘输入x的值求y值,其公式如下:

5x+11 0<=x<20

sinx+cosx 20<=x<40

y= ex-1 40<=x<60

ln(x+1) 60<=x<80

0 其他值

4.输入一个字符,如果这个字符是小写字母将这个字符转换成大写字母输出,否则输出原字符。

5.编程实现如下功能的简单计算器:从键盘输入两个运算数及算术运算符,最后输出计算结果。

6.求解方程ax2+bx+c=0的解。

1.4 循环结构程序设计

一、实验目的

1.掌握while语句;

2.掌握do-while语句;

3.掌握for语句;

4.能够利用循环结构进行程序设计;

5.能够综合利用顺序结构、选择结构及循环结构进行程序设计。

二、实验内容

根据输入的三角形的三条边,判断是否能组成三角形,若不能则重新输入三边,直到能构成三角形为止;若能则计算三角形的面积,并判断三角形的类型,重复输入三角形的边长,使每种类型的三角形都出现一次。

三、分析

1.首先判断是否能构成三角形,如果满足a,b,c三条边大于0,并且满足a+b>c,b+c>a,a+c>b则能构成三角形࿱

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 经过以下栈运算后,x的值是( )。 InitStack(s); Push(s,'a'); Push(s,'b'); Pop(s,x); Gettop(s,x); A. a B. b C. 1 D. 0 2.循环队列存储在数组A[0..m]中,则入队时的操作为( )。 A.rear=rear+1 B. rear=(rear+1) mod(m-1) C. rear=(rear+1)mod m D. rear=(rear+1) mod(m+1) 3. 栈和队列的共同点是( )。 A.都是先进先出 B.都是先进后出 C.只允许在端点处插入和删除元素 D.没有共同点 4. 若用一个大小为6的数组来实现循环队列,且当 rear 和 front 的值分别为 0 和 3。当从队列中删除一个元素,再插入两个元素后,rear 和 front 的值分别为:( )。 A.1 和 5 B.2 和 4 C.4 和 2 D.5 和 1 5. 程序填顺序循环队列的类型定义如下: typedef int ET; typedef struct{ ET *base; int Front; int Rear; int Size; }Queue; Queue Q; 队列 Q 是否“满”的条件判断为( C )。 A.(Q.Front+1)=Q.Rear B.Q.Front=(Q.Rear+1) C.Q.Front=(Q.Rear+1)% Q.size D.(Q.Front+1) % Q.Size=(Q.Rear+1)% Q.size 6. 若进栈序列为1,2,3,4,进栈过程中可以出栈,则( )不可能是一个出栈序列。 A.3,4,2,1 B.2,4,3,1 C.1,4,2,3 D.3,2,1,4 7. 向顺序存储的循环队列 Q 中插入新元素的过程分为三步: ( )。 A.进行队列是否空的判断,存入新元素,移动队尾指针 B.进行队列是否满的判断,移动队尾指针,存入新元素 C.进行队列是否空的判断,移动队尾指针,存入新元素 D.进行队列是否满的判断,存入新元素,移动队尾指针 8. 关于栈和队列,( )说法不妥。 A. 栈是后进先出表 B. 队列是先进先出表 C. 递归函数在执行时用到栈 D. 队列非常适用于表达式求值的算符优先法 9. 若用数组S[0..m]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是( )。 A.S1的栈底位置为0,S2的栈底位置为m B.S1的栈底位置为0,S2的栈底位置为m/2 C.S1的栈底位置为1,S2的栈底位置为m D.S1的栈底位置为1,S2的栈底位置为m/2 二、程序填空(没特别标注分数的空的为3分,共 23 分)。 1.下面的算法是将一个整数e压入堆栈S,请在空格处填上适当的语句实现该操作。 typedef struct{ int *base; int *top; int stacksize; }SqStack; int Push(SqStack S,int e) { if ( S.top- S.base>= S.stacksize ) { S.base=(int *) realloc(S.base,(S.stacksize+1)*sizeof(int)); if( !S.base ) { printf(“Not Enough Memory!\n”); return(0); } S.top= S.base+ S.stacksize ; S.stacksize= S.stacksize+1 ; } * S.top++=e ; return 1; } 2. 在表达式:6+5+3*7/(4+9/3-2)求值过程中,处理到2时刻,运算符栈的状态为: + / ( - (4分),操作数栈的内容为11,21,7,2(4分)。 3. 递调用时,处理参数及返回地址,要用一种称为 栈 的数据结构。 4. 设循环队列中数组的下标范围是1-n,其头尾指针分别为f和r,则其元素个数为_(r-f+n) mod n。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值