数据库系统概论课程之试验二.docx

上传人:b****2 文档编号:24561521 上传时间:2023-05-28 格式:DOCX 页数:38 大小:103.17KB
下载 相关 举报
数据库系统概论课程之试验二.docx_第1页
第1页 / 共38页
数据库系统概论课程之试验二.docx_第2页
第2页 / 共38页
数据库系统概论课程之试验二.docx_第3页
第3页 / 共38页
数据库系统概论课程之试验二.docx_第4页
第4页 / 共38页
数据库系统概论课程之试验二.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

数据库系统概论课程之试验二.docx

《数据库系统概论课程之试验二.docx》由会员分享,可在线阅读,更多相关《数据库系统概论课程之试验二.docx(38页珍藏版)》请在冰豆网上搜索。

数据库系统概论课程之试验二.docx

数据库系统概论课程之试验二

 

高级语言程序设计

实验指导书

网络工程1401班

网络工程1402班

 

福建工程学院信息科学与工程学院

软件工程教研室唐郑熠

2014-2015学年第1学期

 

实验1程序设计入门

如果汽车能赶上计算机的发展速度的话,一辆今天的劳斯莱斯仅值100美元,每加仑汽油能跑100万英里,每年还得爆炸一次,把里面的人杀个精光。

—RobertX.Cringely

一、实验目的

●了解并掌握程序设计所必须的计算机基本操作技能

●了解并熟悉Code:

:

Blocks开发环境

●了解并掌握悉Code:

:

Blocks开发环境下的C程序的编译、连接与运行方法

●了解并掌握查找与排除程序编译错误的方法

●了解不同类型的程序错误

●熟悉并掌握数据输入函数的格式与应用

●熟悉并熟悉数据输出函数的格式与应用

二、实验环境

●个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间。

●Windows2000、WindowsXP或Win7操作系统

●Code:

:

Blocks(版本12.11或近似版本,英文版)

三、实验内容

1开发环境的使用

1.1安装Code:

:

Blocks。

1.2配置编译器。

1.3创建C程序文件,编写程序,实现两个固定整数的加法与减法运算(如10+20,10-20),并保存。

1.4编译并运行程序。

1.5查找并排除程序的编译错误。

1.6了解并掌握程序的语法错误、逻辑错误与运行错误。

2程序阅读与分析

注意:

以下在书写时,用“”代表空格,用“↙”代表回车换行。

2.1printf()函数

阅读以下程序,并分析预测程序的运行结果,然后上机验证。

/*exercise-1.c*/

#include

intmain()

{

inta=5,b=7;

floatx=67.8564,y=-789.124;

printf("%d%d\n",a,b);

printf("%3d%3d\n",a,b);

printf("%f,%f\n",x,y);

printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);

return0;

}

分析预测的运行结果:

 

上机验证的运行结果:

 

2.2scanf()函数

以下程序中的scanf语句用于输入数据,目标是使得a的值为3,b的值为7,m的值为5,n的值为9,x的值为8.5,y的值为71.82,c1的值为′A′,c2的值为′a′,即屏幕上应出现以下的输出结果:

a=3b=7

m=5n=9

x=8.500000y=71.820000

那么应该从键盘上怎样输入数据?

请上机验证,并把正确的结果写下来。

程序中的printf语句会把各个变量的值输出。

/*exercise-2.c*/

#include

intmain()

{

inta,b,m,n;

floatx,y;

/*以下scanf语句用于输入数据*/

scanf("a=%db=%d",&a,&b);

scanf("%d,%d",&m,&n);

scanf("%f%f",&x,&y);

/*以下printf语句用于输出各变量数据,验证结果*/

printf("\n以下是输出结果:

\n");

printf("a=%db=%d\n",a,b);

printf("m=%dn=%d\n",m,n);

printf("x=%fy=%f\n",x,y);

return0;

}

正确的输入格式是:

 

3程序编写

3.1数据交换

在花括号({})之间划线的部分填空,将程序补充完整实现下述功能,并上机运行验证。

数据交换是许多算法的基本操作,如排序、选取最值等。

以下程序的功能是从键盘上输入两个整数,分别存放在变量a和b中,然后将a与b中的数据交换。

例如,

输入:

1020

输出:

beforeswap:

a=10,b=20

afterswap:

a=20,a=10

/*exercise-3.c*/

#include

intmain()

{

/*定义变量*/

/*输入两个整数*/

/*输出数据交换前,a与b的值*/

printf("beforeswap:

");

/*数据交换*/

/*输出数据交换后,a与b的值*/

printf("Afterswap:

");

return0;

}

【解题提示】

两个整数的交换是十分重要的,一定要掌握

3.2学分绩点计算

平均学分绩点(GradePointAverage,即GPA)是以学分与绩点作为衡量学生学习的量与质的计算单位,平均学分绩点可以作为学生学习能力与质量的综合评价指标之一,能方便地与美国的GPA制挂钩。

国内大部分高校通用的课程绩点计算方法是:

绩点=分数/10-5,学分绩点=学分×绩点=学分×(分数/10-5)。

平均学分绩点绩点的计算,是将学生修过的每一门课程(包括重修的课程)的课程绩点乘以该门课程的学分,累加后再除以总学分。

用公式可以表示如下:

(1)课程学分绩点计算公式

gp=c(s10-5)

其中:

gp为课程学分绩点,c为课程学分,s为课程成绩

(2)平均学分绩点计算公式

agp=(p1+p2+...pn)(c1+c2+…+cn)

其中:

agp为平均学分绩点,pi为第i门课程的学分绩点,ci为第i门课程的学分。

要求编程实现:

从键盘上输入三门课程的学分和成绩,计算这三门课程的平均学分绩点,并输出。

*exercise-4.c*/

#include

intmain()

{

floatscore1,score2,score3

floatcredit1,credit2,credit3;

floatcreditPoint1,creditPoint2,creditPoint3;

floatgpa;

return0;

}

四、总结与思考

开发环境的使用是实践的基石,如果不能熟练地使用开发环境,那么编程能力根本无从提高。

因此,应该要反复练习开发环境的使用方法,并且用一些课本上的其它程序来进行实验。

尤其是“C编译错误的查找与排除”以及本实验附录中常见的编译错误,如果能够熟悉并掌握,能够对程序设计水平的提升起到很大的促进作用。

数据的输入和输出,以及数据的基本数学运算时整个程序设计的根基,因为程序设计的本质就是数据的获取以及数学运算。

因此,一定要熟练掌握几个数据输入输出函数的格式与应用方法,以及基本数学运算符的运算法则。

五、附录

1C程序的错误类型

1语法错误

语法错误是指不符合C语言的语法规定,例如左右括号数量不匹配、语句最后漏了分号等等,这些错误会在编译时被发现并指出。

这些错误都属于“致命错误”,不改正是无法通过编译的。

对一些在语法上有轻微毛病但不影响程序运行的问题(如定义了某个变量但始终未使用),编译时会发出“警告”。

但“警告”不属于“致命错误”,程序可以通过编译。

但是在程序的运行过程中,这些“警告”可能造成一些运行时错误。

2逻辑错误

程序没有语法错误,可以正常运行,但结果不对。

例如,要求a和b的和,可是却写成了“a-b;”。

语法上没有错,但求出的却是a和b的差。

这类错误可能是由于设计算法时的错误,也可能是由于在编写程序时出现的疏忽所致。

这类错误计算机是无法检查出来的。

3运行错误

有时程序既无语法错误,又无逻辑错误,但程序不能正常运行或结果不对。

多数情况下,是由于数据不正确,或数据类型不合适造成的。

例如:

要求a/b,如果b的值为非0程序不会有问题,而如果b的值为0就为造成溢出(over-flow)错误。

2常见的编译错误

1.

【错误信息】

fatalerrorC1010:

unexpectedendoffilewhilelookingforprecompiledheaderdirective

【错误原因】

寻找预编译头文件路径时遇到了不该遇到文件尾(一般是没有#include"stdafx.h"造成的)。

2.

【错误信息】

fatalerrorC1083:

Cannotopenfile:

\'R…….h\':

Nosuchfileordirectory

【错误原因】

能打开包含文件“R…….h”:

没有这样文件或目录。

3.

【错误信息】

errorC2011:

\'C……\':

\'\'typeredefinition

【错误原因】

类“C……”被重定义

4.

【错误信息】

errorC2018:

unknowncharacter\'0xa3\'

【错误原因】

不认识\'0xa3\'(一般是由于程序中出现了汉字或中文标点符号)。

5.

【错误信息】

errorC2057:

expectedconstantexpression

【错误原因】

希望是常量表达式(一般出现在switch语句分支中,是由于应该出现常量表达式的地方出现了非常量表达式)。

6.

【错误信息】

errorC2065:

\'IDD_MYDIALOG\':

undeclaredidentier

【错误原因】

“IDD_MYDIALOG”是未声明过的标识符。

7.

【错误信息】

errorC2082:

redefinitionofformalparameter\'bRe\'

【错误原因】

参数“bRe”在被重复定义。

8.

【错误信息】

errorC2143:

syntaxerror:

missing\':

\'before\'{\'

【错误原因】

语法错误:

“{”前缺少“;”。

9.

【错误信息】

errorC2146:

syntaxerror:

missing\';\'beforeidentier\'dc\'

【错误原因】

语法错误:

在“dc”前丢了“;”。

10.

【错误信息】

errorC2196:

value\'69\'alreadyused

【错误原因】

值69已经被使用过(一般出现在switch语句分支中)。

11.

【错误信息】

errorC2509:

\'OnTimer\':

memberfunctionnotdeclaredin\'CHelloView\'

【错误原因】

成员“OnTimer”没有在“CHelloView”中声明。

12.

【错误信息】

errorC2511:

\'re\':

overloadedmemberfunction\'void()\'notfoundin\'B\'

【错误原因】

重载“voidre()”在类“B”中找不到。

13.

【错误信息】

errorC2555:

\'B:

:

f1\':

overridingvirtualfunctiondfersfrom\'A:

:

f1\'_disibledevent=

【错误原因】

无效的运算符(一般是由于运算符使用不当造成的)。

14.

【错误信息】

warningC4700:

localvariable\'bRe\'usedwithouthavingbeeninitialized

【错误原因】

局部变量“bRe”没有初始化就使用

15.

【错误信息】

errorC4716:

\'CMyApp:

:

InitInstance\':

mustavalue

【错误原因】

“CMyApp:

:

InitInstance”必须有返回值

16.

【错误信息】

LINK:

fatalerrorLNK1168:

cannotopenDebug/P1.exeforwriting

【错误原因】

连接:

不能打开P1.exe文件以改写内容(一般是由于其它程序在运行未关闭造成的)。

 

实验2数据与运算

如果你认为你的价值在于自己所知道的多少,你就大错特错了。

要不了多少年,你今天的知识就没什么价值了。

你的价值体现在你能学多少,以及你对这个职业常常带来的改变的适应程度。

—JoseM.Aguilar

一、实验目的

●进一步熟悉Code:

:

Blocks开发环境

●进一步熟练掌握基本编程与程序调试技能

●熟练使用C语言的基本数据类型

●熟练使用C语言的基本运算

二、实验环境

●个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间。

●Windows2000、WindowsXP或Win7操作系统

●Code:

:

Blocks(版本12.11或近似版本,英文版)

三、实验内容

1温度度量转换

华氏度(Fahrenheit)和摄氏度(Centigrade)都是用来计量温度的单位,包括中国在内的世界上很多国家都使用摄氏度,美国和其他一些英语国家使用华氏度而较少使用摄氏度,这会在某些时候产生一些问题。

例如,由美国生成的温度传感器若以华氏度作为度量,而计算程序则被要求以摄氏度作为度量,此时就需要进行转换。

华氏度与摄氏度的关系为(C为摄氏温度,F为华氏温度):

编写程序,从键盘输入华氏温度,将其转换为摄氏温度并输出。

2皮革用量计算

在制作篮球或足球时,需要在外层包裹一层皮革,为此要估计一个球体大约需要多少面积的皮革,但皮革一般都是方形的,因此需要进行估算。

从键盘输入一个球的半径r,计算出其表面积大约相当于边长为多少的正方形。

计算结果精确到小数点后两位。

提示:

在C语言中,求平方根的函数为sqrt(),包含在函数库math.h中。

3数据保密

数据通信中的一个重要问题是数据保密,数据在送到通信线路前,应进行加密,以保证即使通信线路被窃听时,通信内容也不会泄露。

高级的加密算法可以保证很高的性,但也会带来过大的运算量。

因此在某些应用场景下,会使用一些简单的加密方法,以获得最低限度的安全性。

假设通信数据都已被切分,每一组数据被转化为一个4位整数,加密规则为:

将第1位和第4位上的数字互换,第2位和第3位上的数字互换(从左往右数,最高位为第1位)。

编程实现以上加密功能:

输入一个4位整数,将第1位和第4位上的数字互换,第2位和第3位上的数字互换,成为一个加密数据,并输出。

再将该加密数据进行解密,还原为原数据并输出。

四、总结与思考

程序设计的本质就是解决计算问题,因此熟练掌握C语言中的基本数据类型与运算符,是学好程序设计的重要基础。

 

实验3选择结构程序设计

1.计算机擅长接受指令,不擅长了解你的思想。

2.让我们改变一下对构建程序的态度:

不要把我们的主要工作想象为教计算机怎么做,相反,让我们集中精力向人们解释我们想让机器做什么。

—DonaldKnuth(算法巨匠)

一、实验目的

●了解并掌握C语言表示逻辑值的方法(以0代表“假”,以非0代表“真”)

●了解并掌握逻辑运算符的运算法则

●熟悉并掌握逻辑表达式的使用

●熟练掌握if语句及其嵌套形式的使用

●熟练掌握if-else语句及其嵌套形式的使用

●熟练掌握switch语句的使用

二、实验环境

●个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间。

●Windows2000、WindowsXP或Win7操作系统

●Code:

:

Blocks(版本12.11或近似版本,英文版)

三、实验内容

注意:

以下在书写时,用“”代表空格,用“↙”代表回车换行。

1switch语句的执行流程

阅读以下程序,并分析预测程序的运行结果,然后上机验证。

(在书写时,用“”代表空格,用“↙”代表回车换行)

1.1switch语句

阅读以下程序,并分析预测程序的运行结果,然后上机验证。

/*example-7.c*/

#include

main()

{

intn;

printf("Inputn:

");

scanf("%d",&n);

switch(n)

{

case1:

printf("Iamcase1.\n");

default:

printf("Iamdefault.\n");

case2:

printf("Iamcase2.\n");break;

case4:

switch(n)

{

case4:

printf("Iamcase4\n");break;

case5:

printf("Iamcase5\n");

}

case3:

printf("Iamcase3.\n");

}

}

分析预测的运行结果:

当输入1时,输出:

 

当输入2时,输出:

 

当输入3时,输出:

 

当输入4时,输出:

 

当输入5时,输出:

 

上机验证的运行结果:

当输入1时,输出:

 

当输入2时,输出:

 

当输入3时,输出:

 

当输入4时,输出:

 

当输入5时,输出:

 

2闰年与生肖的判定

从键盘上输入一个正整数,代表年份,然后判断这个正整数所代表的年份是否是闰年。

闰年满足以下两个条件中的任意一个:

(1)能被4整除但不能被100整除。

(2)能被400整除。

同时,再判定该年的生肖属相。

不考虑农历,例如认为1984年是鼠年,虽然在农历中其有一些天是在猪年中。

3一元二次方程求解器

一元二次方程ax2+bx+c=0(a0)的根存在的条件为b2–4ac0,其求根公式为:

从键盘上依次输入一元二次方程的三个系数,判定其根是否存在,若存在则求出其根

4个人所得税(薪金)计算器

我国的个人所得税的征收,采用超额累进税率。

超额累进税率是把征税对象的数额划分为若干等级,对每个等级部分的数额分别规定相应税率,分别计算税额,各级税额之和为应纳税额。

超额累进税率的“超”字,是指征税对象数额超过某一等级时,仅就超过部分,按高一级税率计算征税。

工资、薪金所得适用的累进税率表如下表所示:

上表中的应税额是指以每月收入额减除3500元(起征点)后的余额或者减除附加减除费用后的余额。

从键盘上输入月收入,根据上表计算出应缴纳的个人所得税。

5生成随机整数

本题为选做题。

C语言中的rand()函数能够生成一个长整型的随机整数(伪随机),但在使用前应使用srand(unsignedseed)函数设置随机种子。

请编写程序,生成一个随机整数。

在此基础上设计算法,能够以50%的概率生成一个0~99范围内的随机整数,另外50%的概率生成一个101到1000范围内的随机整数。

四、总结与思考

选择结构,又称为分支结构,是程序设计的三大基本控制结构之一,C语言中用于实现选择结构的语句有:

●if语句

●if-else语句

●switch语句

难点在于if-else语句的嵌套,以及在switch语句中,break语句的用法,同学们一定要多加练习。

 

实验4循环结构程序设计

好代码本身就是最好的文档。

—SteveMcConnell(Construx公司首席软件工程师)

一、实验目的

●熟练掌握while语句及其嵌套形式的使用

●熟练掌握do-while语句及其嵌套形式的使用

●熟练掌握for语句及其嵌套形式的使用

●了解并掌握continue与break语句在循环结构中的作用

●熟悉循环结构程序段中语句的的执行过程

●了解并掌握穷举算法

二、实验环境

●个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间。

●Windows2000、WindowsXP或Win7操作系统

●Code:

:

Blocks(版本12.11或近似版本,英文版)

三、实验内容

1数列求和

从键盘上输入一个整数n,并计算以下数列的前n项和:

请注意运算对象的类型对运算结果的影响。

2素数判定

编写程序,判定一个给定的整数是否为素数。

可以用以下算法用于判断某一个整数是否为素数:

给定一个整数n,从2开始至n-1(实际上只需要2~n1/2)逐一检查在这范围之内的整数是否可以被n整除。

如果可以,则说明整数n不是素数。

如果从2开始至n-1范围之内的所有整数都不可以被n整除,那说明整数n符合素数的定义,所以整数n是一个素数。

3百钱百鸡问题

“百钱百鸡”问题记载于中国古代约5~6世纪成书的《张邱建算经》中,是原书卷下第38题,也是全书的最后一题,该问题导致三元不定方程组的产生,其重要之处在于开创“一问多答”的先例,这是过去中国古算书中所没有的。

中古时,近东各国也有相仿问题流传,例如印度算书和阿拉伯学者艾布·卡米勒的著作内都有百钱买百禽的问题,且与《张邱建算经》的题目几乎全同。

该问题描述为:

一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少。

可以使用计算机程序设计中的“穷举法”来解决该问题,通过循环的嵌套可以描述“穷举”。

4双色球摇奖机

双色球是中国福利彩票的一种玩法,属于双区投注的乐透型彩票。

投注时需同时从两个号码区中分别选取号码,即从红色球号码区的33个号码(1~33)中选择6个号码,再从蓝色球号码区的16个号码(1~16)中选择1个号码,组合成一注进行投注。

现在请设计一个程序,实现双色球摇奖功能,即产生6个1~33之间的随机整数,以及一个1~16之间的随机整数。

为了增强摇奖的刺激性,产生每个随机数时应有一段时间的延迟。

5进制转换器

进制也就是进位制,是人们规定的一种进位方法。

对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。

十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,X进制就是逢X进位。

编写程序,实现将N进制的整数,转换为M进制的整数。

可以使用以下算法:

(1)先将N进制整数各个位上的数字与该位的权值相乘然后累加求和,从而将N进制整数转换为十进制整数。

(2)再使用短除法将十进制整数转换为M进制整数。

注意:

由于还没有学习数据暂存的方法,因此测试程序时不要使用太小的进制,否则可能会造成数据溢出。

四、总结与思考

循环结构是程序设计的三大基本控制结构之一,C语言中用于实现选择结构的语句有:

●while语句

●do-while语句

●for语句

此外,还要注意continue语句和break语句在循环结构中的作用。

 

实验5数组与字符串的使用

好的规范总能够比任何编程工具或技术更好地改进程序员的生产力。

—MiltBryce(系统方法论之父)

一、实验目的

●了解并掌握一维数组与二维数组的定义方法

●了解并掌握一维数组与二维数组的初始化方法及元素的引用方法

●了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1