当前位置:文档之家› 实验8_参考答案

实验8_参考答案

实验8_参考答案
实验8_参考答案

实验8指针与引用(2)

请将自己报告部分,文字和程序代码,加粗

完成下面实验内容和实验要求。

自测题

1.编写函数实现字符串函数strcmp()的功能。

要求:使用指针操作完成题目

⑴程序代码如下,请补充完整,使程序能运行且运行正确。

#include

#include

using namespace std;

int My_strcmp(char *str1, char *str2) //声明两个字符指针变量str1和str2

{

while (*str1==*str2&&*str1!='\0'&&*str2!='\0') // 当对应字符相等且两个字符串未结束时循环,注意*str1和*str2之间是“==”不是“=”,并且两个字符串都要判断是否结束循环{

str1++;

str2++;// 将str2指针指向下一个字符

}

return (*str1-*str2); /*返回字符串比较结果,根据主函数中r的分支判断确定应该返回的结果*/不要写成str1-str2,这样变成指针值相减,没有意义,另外写成*str1>*str2?1:-1也是可以的

}

int main()

{

char s1[50], s2[50];

cout << "please input the first string : ";

cin >> s1;

cout << "please input the second string : ";

cin >> s2;

int r;

r = My_strcmp(s1, s2); // 函数调用返回值赋值给r

if (r>0)

cout << s1 << " is larger!" << endl;

else if (r<0)

cout << s2 << " is larger" << endl;

else

cout << s1 << " and " << s2 << " is eqaul" << endl;

return 0;

}

⑵运行结果截图

2.编写程序,以(999)99999-999的形式输入电话号码字符串。

要求:利用strtok()函数获取区号,电话号码的前五位是主机号,后三位是分机号,需将电话号码的八位数连接成一个字符串。程序将区号转化为整型,将电话号码字符串转化为长整型,并打印转化后的区号和电话号码。使用指针操作完成题目。

⑴程序代码如下,请补充完整,使程序能运行且运行正确。

#include

#include

using namespace std;

int main()

{

char phone_number[20];

char *qp = phone_number; //定义一个字符指针qp指向字符串phone_number

int quhao = 0; //区号

long int number = 0; // 电话号码

cout << "please input a phone number with the format(999)99999-999: ";

cin >> phone_number;

qp++; //去掉左括号

while (*qp != ')') // 获取区号

{

quhao = quhao * 10 + (*qp - '0');

qp++; // qp指针指向下一个字符

}

qp++;

while (*qp != '-')

{

number = number * 10 + (*qp - '0'); //获取主机号码,语句数量不限

qp++;

}

qp++;

while (*qp != '\0')

{

number = number * 10 + (*qp - '0'); //获取分机号码,语句数量不限

qp++;

}

cout << "区号是:" << quhao << endl;

cout << "电话号码是: " << number << endl;

return 0;

}⑵运行结果截图

3.使用指针编写程序:定义一个字符数组,并初始化为“hello world!”,编写程序逆序输出此字符数组。参考教材P142 例6-11

⑴程序代码:

#include

using namespace std;

int main()

{

char str[] = "hello world!";// 字符串可以这样定义,最好不要用每个字母来定义

char *p, *q, t;

for (p = str, q = p + strlen(str) - 1; p

{

t = *p;

*p = *q;

*q = t;

}

cout << "The reversed string is:" << str << endl;

return 0;

}

⑵运行结果截图

4.编写一个程序,管理一个班级的学生的c++课程的成绩。参考实验8练习题4

要求:用动态存储分配的方法。键盘输入学生人数n,使用new生成一个动态单精度实型数组,用于保存班级学生的成绩,输出各分数段学生的人数,班级学生的平均成绩及低于平均分的人数。

⑴程序代码:

#include

using namespace std;

int main()

{

int n, i, one = 0, two = 0, three = 0, four = 0, five = 0, lower = 0;

float sum = 0, average;

float *score;

cout << "请输入班级学生的人数:";

cin >> n;

cout << endl;

cout << "请输入班级学生的成绩:" << endl;

score = new float[n]; // 注意是单精度类型

for (i = 0; i

{

cin >> score[i];

sum += score[i];

if (score[i]<60)

one++;

else if (score[i]<70)

two++;

else if (score[i]<80)

three++;

else if (score[i]<90)

four++;

else

five++;

}

average = sum / n;

for (i = 0; i

if (score[i]

lower++;

cout << "不及格的人数为:" << one << endl;

cout << "60~69分的人数为:" << two << endl;

cout << "70~79分的人数为:" << three << endl;

cout << "80~89分的人数为:" << four << endl;

cout << "90~100分的人数为:" << five << endl;

cout << "班级平均成绩是:" << average << "分" << endl;

cout << "成绩低于平均分的人数为:" << lower << endl;

return 0;

}

⑵运行结果截图

5.【程序调试】

下列程序运行均不正确。请改正其中的语法错误使得程序可以编译成功。程序编译后,请比较输出结果与实例输出,并对可能存在的逻辑错误进行修改。实例输出显示了程序如果正确应该输出的结果。

实例输出:

错误代码

1#include

2

3using namespace std;

4#include

5

6void initialize ( char [ ], int * );

7void input ( const char [ ], int * );

8void print ( const char *, const int );

9void growOlder( const char [ ], int * );

10bool comparePeople( const char *, const int *, 11const char *, const int *); 12

13int main()

14{

15char name1[ 25 ], name2 [ 25 ];

16int age1, age2;

17

18initialize (name1, &age1);

19initialize( name2, &age2 );

20

21print ( name1, *age1 );

22print ( name2, *age2 );

23

24input( name1, &age1);

25input ( name2, &age2);

26

27print (& name1, &age1Ptr );

28print (& name2, &age2Ptr );

29

30growOlder ( name2, age2);

31

32if ( comparePeople( name1, &age1, name2, &age2 ) ) 33cout << “Both people have the same name and age”34<< endl;

35

36return 0;

37}

38

39void input( const char name [ ], int *age )

40{

41cout << “Enter a name: “;

42cin >> name;

43

44cout << “Enter an age: “;

45cin >> age;

46cout << endl;

47}

48

49void initialize( char name[ ], int * age )

50{

51name = “”;

52age = 0;

53}

54

55void print ( const char name[ ], const int age )

56{

57cout<< “ The value stored in variable name is: “

58<< name << endl

59<< “The value stored in variable age is: “

60<< age << endl << endl;

61}

62

63void growOlder( const char name[ ], int * age)

64{

65cout << name << “ h as grown one year older\n\n”;

66*age++;

67}

68

69bool comparePeople( const char * name1, const int * age1,

70const char * name2, const int * age2 )

71{

72return ( age1 == age2 && strcmp ( name1, name2 ) );

73}

⑴修改后程序代码,改过的语句标识红色,并添加注释。

#include

#include

using namespace std;

void initialize(char[], int *);

void input(char[],int *);// 去掉const,const保证数据在程序运行中无法改变,这导致我们无法输入数据,所以应去掉

void print(const char *, const int);

void growOlder(const char[], int *);

bool comparePeople(const char *, const int *,

const char *, const int *);

int main()

{

char name1[25], name2[25];

int age1, age2;

initialize(name1, &age1);

initialize(name2, &age2);

print(name1, age1);

print(name2, age2); // 定义中声明为整型,不能用整型指针

input(name1, &age1);

input(name2, &age2);

print(name1, age1);

print(name2, age2);// name1和name2本身就是指针,age1Ptr和age2Ptr未定义

growOlder(name2, &age2);// 函数定义为地址变量,所以传递地址

if (comparePeople(name1, &age1, name2, &age2))

cout << "Both people have the same name and age"

<< endl;

return 0;

}

void input(char name[], int *age)// 同函数定义去掉const

{

cout << "Enter a name : ";

cin >> name;

cout << "Enter an age : ";

cin >> *age;// 此处为输入age,操作age地址无意义

cout << endl;

}

void initialize(char name[], int * age)

{

strcpy(name, "\0");// name=””相当于给数组地址赋值“”,无意义

*age = 0;// 此处为age赋值,非指针赋值

}

void print(const char name[], const int age)

{

cout << "The value stored in variable name is : "

<< name << endl

<< "The value stored in variable age is : "

<< age << endl << endl;

}

void growOlder(const char name[], int * age)

{

cout << name << " has grown one year older\n\n";

(*age)++;// 将*age括起来,因为++优先级高于*,这样无法做到age加1的目的,只是指针变化

}

bool comparePeople(const char * name1, const int * age1,

const char * name2, const int * age2)

{

return (*age1 == *age2 && !strcmp(name1, name2));// 首先age1和age2前加上*,这样才能进行值操作,否则指针比较无意义,strcmp前加上!,因为两个字符串相同时strcmp返回0,这里需要返回非零才能让整个函数返回真值

}

⑵运行结果截图

数据库实验3答案

实验三:交互式SQL语句的使用 1、实验目的 (1)掌握数据库对象的操作过程,包括创建、修改、删除 (2)熟悉表的各种操作,包括插入、修改、删除、查询 (3)熟练掌握常用SQL语句的基本语法 2、实验平台 使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。 3 实验容及要求 选择如下一个应用背景之一: ●学生选课系统 ●习题3、4、和5中使用的数据库 ●其它你熟悉的应用 (1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。 (2)要求认真进行实验,记录各实验用例及执行结果。 (3)深入了解各个操作的功能。 实验要求包括如下方面的容: 3.1 数据定义 1.基本表的创建、修改及删除 2.索引的创建 3.视图的创建 3.2 数据操作 完成各类更新操作包括: 1.插入数据

2.修改数据 3. 删除数据 3.3 数据查询操作 完成各类查询操作 1.单表查询 2.分组统计 3. 连接查询 4. 嵌套查询 5. 集合查询 3.4 数据操作 1.创建视图 2.视图查询 参考示例: 建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。 一、数据定义 创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表: 表1. Student表结构 表2. Course表结构

表3. SC表结构 1.创建、修改及删除基本表 (1)创建Student表 CREATE TABLE Student (Sno CHAR(8)PRIMARY KEY, Sname CHAR(8), Ssex CHAR(2)NOT NULL, Sage INT, Sdept CHAR(20) ); (2)创建Course表 CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, ); (3)创建SC表 CREATE TABLE SC (Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno), Cno CHAR(4), Grade SMALLINT, ); (4)创建员工表Employee

新版实验报告册答案(八上)

生物(八上)实验报告册答案 P___1 观察与思考:水螅的形态与捕食 思考与联想:不能可以感知和捕捉来自各个方向的猎物。 思考与联想:水螅用刺细胞捕食水蚤,在内胚层消化。 P___3 实验:观察蚯蚓 材料用具:糙纸放大镜 方法步骤: 1(1)前端有环带。背面颜色比腹面深。 13 (2)粗糙刚毛后方 2.肌肉的收缩。 3. 粘滑 讨论:1.蚯蚓的身体呈两侧对称,可分出前后、左右、背腹。 2. 使运动灵活、自如。 3. 支撑身体、辅助运动。 4. 因为蚯蚓靠湿润的体壁呼吸,如果蚯蚓体表干燥,蚯蚓将窒息死亡。 P___6 观察与思考:双壳类动物的特点 思考与联想:保护 思考与联想:足鳃入水管获取水中的食物颗粒,出水管排出食物残渣。 P___7 观察与思考:节肢动物的特点 思考与联想: 2. 蝗虫和七星瓢虫的形态结构比较相似,体表较硬;身体分节,不同体节有差异;触角和足 都分节;有翅。 3. 体表较硬身体分节,不同体节有差异有分节的足 P___9观察与思考:鲫鱼的外形与运动 思考与联想:是流线形有利于减少鱼在水中运动时的阻力有 体验与联想:抓过粘滑粘液 再观察:交替张合水从鱼口流入,从鳃盖后缘流出。 思考:呼吸鳃丝中有血管 扩大了与水的接触面积,鱼在水中呼吸。 思考与联想:入鳃的水含氧较多,出鳃的水二氧化碳较多 当鱼离开水时,鱼不能从空气中得到足够的氧而窒息死亡。

讨论: 1. 鱼体呈流线形,有利于克服在水中运动时的阻力。 2.不全面。鱼在游泳时,主要靠躯干部和尾鳍的摆动进行运动,其他鳍起协调作用。 P___11观察与思考:青蛙的外形与运动 思考与联想:绿色有利于青蛙的生存。 体验与联想:湿滑 青蛙的前肢短小,可支撑身体;。后肢发达,趾间有蹼,便于跳跃和划水。P___12观察与思考:多种多样的鸟 思考与联想: 思考: 鸟喙的特征与鸟的食性相适应。如,啄木鸟的喙强直,尖锐,适于啄食树干中的昆虫。 鸟足的特征与鸟的生活环境相适应。如,丹顶鹤的腿细长,适于在浅水中行走、觅食。 体表覆盖羽毛,有翼、喙等结构。 P___14 探究:鸟类适于飞行的形态结构特点 第一组假设:鸟的体型和翼适于飞行 第二组假设:鸟的肌肉和骨骼适于飞行 第三组假设:鸟的消化系统和循环系统适于飞行 第四组假设:鸟的呼吸和视觉适于飞行 第一组结论:流线型的体型和翼适于鸟的飞行 第二组结论:发达的胸肌和薄、轻的骨骼适于鸟的飞行 第三组结论:强大的消化能力和循环系统适于鸟的飞行 第四组结论:旺盛的呼吸和发达视觉适于鸟的飞行 P___17观察与思考:哺乳动物的牙齿 思考与联想: 都有门齿和臼齿狼有犬齿,兔没有 狼是肉食动物,犬齿尖锐撕咬猎物。兔是草食动物,门齿切断食物,臼齿磨碎食物。 提高了动物摄取食物的能力,增强了对食物的消化能力。

山东大学数据库实验答案2—8

山东大学数据库实验答案2—8 CREATE TABLE test2_01 AS SELECT SID, NAME FROM pub.STUDENT WHERE sid NOT IN ( SELECT sid FROM pub.STUDENT_COURSE ) CREATE TABLE test2_02 AS SELECT SID, NAME FROM PUB.STUDENT WHERE SID IN ( SELECT DISTINCT SID FROM PUB.STUDENT_COURSE WHERE CID IN ( SELECT CID FROM PUB.STUDENT_COURSE WHERE SID='200900130417' ) ) CREATE TABLE test2_03 AS

select SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where FCID='300002') ) CREATE TABLE test2_04 AS select SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='操作系统') intersect select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='数据结构') ) create table test2_05 as with valid_stu(sid,name) as ( select SID,NAME from PUB.STUDENT where AGE=20 and SID in (select SID from PUB.STUDENT_COURSE) ) select sid,name as name,ROUND(avg(score)) as avg_score,sum(score) as sum_score from PUB.STUDENT_COURSE natural join valid_stu where SID in (select SID from valid_stu) group by SID,NAME create table test2_06 as

上机实验8 二维数组&字符数组--参考答案

上机实验八二维数组与字符数组—参考答案 一.目的要求 1.掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。 2.掌握二维数组的基本操作:引用数组元素、行(列)求和,行(列)最大最小值,整个数组的输入输出等。 3.掌握与二维数组有关的算法,如找最大最小值(或位置)、矩阵转置等。 4.掌握字符串与字符数组的基本应用方法 5.掌握字符串有关的算法,如字符转换、查询、统计和进制转换等 二.实验内容 【实验题1】程序填空:输入一个4×4矩阵,求出主对角线上的元素之和sum1、副对角线上的元素之和sum2,并输出结果。 提示:每一行只有一个主对角线元素a[i][i](特征:i==j),也仅有一个副对角线元素a[i][n-i-1](特征:i+j==n-1,即j=n-1-i) 源程序: #include void main() { int i,j,sum1=0,sum2=0, a[4][4]; printf("Input a 4*4 matrix:\n"); for(i=0; i<4; i++) //输入矩阵元素 for( j=0; j<4; j++) scanf("%d", &a[i][j]); for(i=0; i<4; i++ ){ //计算sum1和sum2 sum1 +=a[i][i]; sum2 +=a[i][3-i]; } printf("sum1=%d, sum2=%d\n", sum1,sum2); //输出结果 } 运行程序,并输入数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 运行结果:sum1= 34, sum2= 34 【实验题2】程序填空:打印杨辉三角形前10行: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …………………… 算法提示:分析一个10行的杨辉三角,需要一个10×10的二维矩阵a,则: 1)杨辉三角为下三角矩阵,只需要求出第i行(i=0,1,2,…,9)前i+1个元素,即a[i][j]!=0 (j=0…i). 2)每行的第0列元素均为1,即a[i][0]=1; 3)每行的主对角线元素也均为1,即a[i][i]=1; 4)从第2行开始,每行夹在第0列元素与主对角线元素之间的元素a[i][j]( i=2,3,…,9, j=1,..,i-1 ) 等于其左上方元素a[i-1][j-1]与正上方元素a[i-1][j]之和,即a[i][j]=a[i-1][j-1]+a[i-1][j]; 5)输出该矩阵的下三角,即得出杨辉三角的前10行。

大学生C语言程序设计(第四版 谭洪强)实验8答案

实验八 函 数(二) 参考答案 /*1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】*/ double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500 400300200 100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) {t=array[i][j]; array[i][j]=arrar[j][i]; array[j][i]=t ; } } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】I am a student! 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案1】 int fun( char s[])

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

c程序设计实验参考答案

《C程序设计上机指导》答案 实验一参考答案 四.1、Hello, world ! Welcome to the C language world! Everyone has been waiting for. 2、a+b=579 579 五.1、b=2; 2、int a; 3、area 六.x=5,y=8, 改为x=5,y=8; 七.写程序 1、编写程序输出用6颗星构成的等边三角形。 main() { printf(" * \n"); printf(" * * \n"); printf("* * *\n"); } 2、编写程序求25和5两个整数的和与差。 main() { int a,b,c,d; a=10; b=20; c=35; d=(a+b+c)/3; printf("%d\n",d); } 实验二参考答案: 一.1、A , 65 B, 66 2、x=1,y=1,z=5 3、a=%d,b=%d 二.1、char a;int b; 2、a,a,a 3、a=865 a,h,m 4、u=2*sqrt(a)+b-10; “%f\n” 三.1、第1行ch1=’a’; 改为char ch1=’a’; 第2行ch2=98; 改为char ch2=98; 2、第7行w=x%y; 改为w=x/y; 3、int u=v=89; 改为int u,v; u=v=89; 4、第3行改为scanf(“%d,%d”,&x,&y); //格式字符串有错。 第5行改为printf("The average is %d:"a); //格式字符串有错。四.写程序 1、编程求111 234 ++ 的和(精确到小数点后两位)。 main( ) { float i; i=1.0/2+1.0/3+1.0/4;

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constraint B1 not null ); commit; 定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致 以表级完整性的方式定义属性cid为主码 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名 create table Customers ( cid number(9,0), cname char(40) constraint C1 unique, age integer, primary key(cid) ); commit; 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删 除与它相关的购买记录 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在 与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

答案 实验报告_实验8 函数(1)(学号_姓名)

实验报告_实验8 函数(1)(学号_姓名) 一、实验目的: 1、理解函数的功能 2、熟练掌握函数的定义、声明和调用方法; 二、实验内容 1、(基础题)根据海伦公式由三角形的三边长度a、b、c可以计算三角形面积,公式为:,其中:。请根据下列要求编写程序: (1)三角形面积的计算由函数triangle_area实现,函数原型为: double triangle_area(double a, double b, double c);当输入的a、b、c 值不能构成三角形时,返回0.0;(提示:构成三角形的三边条件:任意两边之和大于第三边,任意两边之差小于第三边。) (2)主函数的功能是输入三角形的三条边长,再调用triangle_area()得到面积,最后输出结果; (3)主函数在前,triangel_area()在后面定义。 程序代码: #include #include int main() { double triangle_area(double a,double b, double c);//函数声明 double x, y, z,area; printf("请输入三角形的三边长度: "); scanf("%lf%lf%lf",&x,&y,&z); area=triangle_area(x,y,z);

printf("三角形的面积=%.4lf\n\n",area); return 0; } double triangle_area(double a,double b, double c)//函数定义 { if ((a+b<=c)||(a+c<=b)||(b+c<=a))//不能构成三角形 return 0.0; double s,p; p=(a+b+c)/2.0; s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; } 2、(基础题)定义一个求最大公约数函数int gcd(int x, int y),在主函数输入两个整数,然后调用gcd()输出这两个整数的最大公约数。提示:辗转相除法求最大公约数的原理: 先比较两个数的大小: (1)用较大数去除较小数,得到一个余数; (2)如果余数为0,则除数(较小数)就是最大公约数,结束运算; (3)如果余数不为0,则计算除数(较小数)和余数的最大公约数即可(舍去被 除数)。转向执行(1)。 程序运行结果如下图所示: 程序代码: #include

数据库实验五题目答案

实验五 实验5.1 数据查询 1)要求 以School数据库为例,在该数据库中存在四表格,分别为: ●表STUDENTS(sid, sname, email, grade); ●表TEACHERS(tid, tname, email, salary); ●表COURSES(cid, cname, hour); ●表CHOICES(no, sid, tid, cid, score) 在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES中保存学生的选课记录。 按以下要求对数据库进行查询操作: (1)查询年级为2001的所有学生的名称并按编号升序排列。 程序:Select sname from students where grade='2001' order by sid asc; (2)查询学生的选课成绩合格的课程成绩。 程序:Select score from choices where score>'59';

(3)查询课时是48或60的课程的名称。 程序:select cname from courses where hour='48'or hour='60'; (4)查询所有课程名称中含有data的课程编号。 程序:select cid from courses where cname like'%data%';

(5)查询所有选课记录的课程号(不重复显示)。 程序:select distinct cid from choices; (6)统计所有教师的平均工资。 程序:select avg(salary) from teachers;

实验8部分答案

SQL数据查询语句: 1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。 2: (不选择重复行) 求选修了课程的学生学号。 3: (选择表中的所有列) 求全体学生的详细信息。 4: (使用表达式) 求全体学生的学号、姓名和出生年份。 5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。 6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。 7: (比较大小条件) 求注册B1班或注册B2班年龄大于18岁的学生的姓名、班级号和年龄。 8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。 9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。 10:(确定集合条件) 求在下列各班的学生信息:注册B1班、注册B2班。 11:(确定集合条件) 求不是注册B1班、注册B2班的学生信息。 12:(匹配查询) 求姓名是以“李”打头的学生。 13:(匹配查询) 求姓名中含有“志”的学生。

14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。 15:(匹配查询) 求选修课程JC001或JC003,成绩在80至90之间,学号为2007xxx的学生的学号、课程号和成绩。 16:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。 17:(控制行的显示顺序) 求选修JC003课程或JC004课程的学生 的学号、课程号和分数。 18:(组函数) 求学生总人数。 19:(组函数) 求选修了课程的学生人数。 20:(组函数) 求注册B1班学生的平均年龄。 21:(组函数) 求选修了课程JC001的最高、最低与平均成绩以及 课程的名称。 22:(分组查询) 求各门课程的平均成绩与总成绩。 23:(分组查询) 求各班级的人数和平均年龄。 24:(分组查询) 输入以下查询语句并执行,观察出现的其结果并 分析其原因。 SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=’CS’GROUP BY SDEPT; 25:(分组查询) 分析以下语句为什么会出现错误。并给出正确的 查询语句。

数据库实验答案

实验二 1.打开数据库SQL Server 2000的查询分析器,用SQL语言建表student,表结构如下图所示: 字段名类型长度含义 id varchar 17 学生编号 name varchar 10 姓名 sex varchar 2 性别 age integer 年龄 score numeric 6,2 总成绩 CREATE TABLE student( id varchar(17),name varchar(10),sex varchar(2),age integer,score numeric(6,2)) 2.用SQL语言向表student插入如下6条记录: A0001 赵一男24 480.00 insert into student values('A0001','赵一','男','24','480.00');.......... 3.把所有学生年龄加一岁。 update student set age=age+1 4.把吴六改名为吴九。 update student set name=‘吴九’where name=‘吴六’ 5.添加学生李梅,学号H0007。 in sert into student values(‘H0007’, ‘李梅’, ‘女’, 19, ‘435.00’); 6.删除1990年后出生的人。(获取当前年的函数为YEAR(GETDATE()))delet from student where age

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

大学数学数学实验(第二版)第7,8章部分习题答案

一、实验内容 P206第六题 function f=wuyan2(c) y=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.41 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 281.4] t=[0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210] f=y-c(1)/(1+c(1)/3.9-1)*exp^(-c(2)*t) c0=[1 1] c=lsqnonlin('wuyan2',c0) P206第七题 function f=wuyan1(c) q=[0.4518 0.4862 0.5295 0.5934 0.7171 0.8964 1.0202 1.1963 1.4928 1.6909 1.8548 2.1618 2.6638 3.4634 4.6759 5.8478 6.7885 7.4463 7.8345 8.2068 8.9468 9.7315 10.5172 11.7390 13.6876 ]; k=[0.0911 0.0961 0.1230 0.1430 0.1860 0.2543 0.3121 0.3792 0.4754 0.4410 0.4517 0.5595 0.8080 1.3072 1.7042 2.0019 2.2914 2.4941 2.8406 2.9855 3.2918 3.7214 4.3500 5.5567 7.0477]; l=[4.2361 4.3725 4.5295 4.6436 4.8179 4.9873 5.1282 5.2783 5.4334 5.5329 6.4749 6.5491 6.6152 6.6808 6.7455 6.8065 6.8950 6.9820 7.0637 7.1394 7.2085 7.3025 7.3470 7.4432 7.5200]; f=q-c(1)*k.^c(2).*l.^c(3) c0=[1 1 1] c=lsqnonlin('wuyan1',c0) c = 0.4091 0.6401 1.1446 a=0.4091 α=0.6401 β=1.1446 P239第五题 c=[-20 -30]; A=[1 2;5 4]; b=[20 70]; v1=[0 0]; [x,f,ef,out,lag]=linprog(c,A,b,[],[],v1) z=-f x = 10.0000 5.0000

(完整word版)数据库实验报告8

. 西安科技大学 《数据库原理及应用》课程设计报告 题目:寄宿学校管理信息系统的设计与实现 学院:计算机科学与技术学院 专业及班级:软件工程1202及1203班 学号:1208010206 1208010207 1208010303 姓名:李倩魏楠楠王青枝 日期:2014年7月9日

目录 1课程设计目的及意义 (2) 2设计内容及人员分工 (2) 3 需求分析 (2) 3.1 需求陈述 (2) 3.2 功能需求 (2) 3.3 数据需求 (3) 3.4 其它需求 (3) 4 数据库设计 (3) 4.1概念结构设计 (3) 4.2逻辑结构设计 (4) 4.3数据表结构设计 (4) 5 系统功能设计 (6) 6 系统实现 6.1 开发环境 (7) 6.2 数据库的创建与连接技术 (7) 4.3 主要功能的运行结果及代码 (9)

7 总结 (13) 参考文献 (13) 1、课程设计的目的和意义 课程设计目的:通过本课程设计,培养学生具有C/S模式的数据库应用软件系统的 设计和开发能力;熟练掌握SQL Server数据库的使用,熟练掌握使用VC、VB或其它开发工具开发数据库应用的能力;为毕业设计打下坚实的基础。学生根据所学的数据库原理与程序设计的知识, 通过对一个实际问题的分析,设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。 课程设计的意义:通过对这个系统的设计,让我们更加熟悉SQL Sever 2008的相关操 作,也巩固了这学期学习的数据库的一些知识,让我们更懂得数据库的重要性无论是在生活中,还是在软件的设计和制作过程中。让我们学会了数据库的设计,经历了数据库设计的几个阶段,比如需求分析,概念结构设计,逻辑结构的设计,都让我们努力的去想,去做,懂得数据库的优化,想想怎么做才是最好的。做出一个比较满意的数据库设计。 2、设计内容及人员分工 魏楠楠:数据库的需求分析,概念设计 王青枝:数据库逻辑设计,表结构设计 李倩:数据库触发器创建实现 3、需求分析 3.1 需求陈述: 某寄宿学校需要开发一个信息管理系统,通过该管理系统可以对学生的日常事务进行管理: 校长助理:可以对学生的档案进行管理,可以进行新增、删除、查询、修改等操作。 财务人员:进行每月的收费和退费工作,每个学生的每月费用包括住宿费,伙食费220,在6-8月收取空调费20,在11-2月收取取暖费20,每个学期的开学初(3月、9月)收取书本费(不定)。住宿费分三种情况:双职工的子女为60,单职工的子女80元,父母均不在本单位工作为100元。每个班的老师在每天要申报本班学生的出勤表,由校长助理完成

同济大学数据库实验5答案

create proc procA as select* from student exec proca create proc procB @_year char(4) as select* from student where year(birthday )=@_year declare @_year char(4) set @_year ='1994' exec procB@_year create proc procf @_Snum char(30) as select s.snum ,avg(score)as平均成绩,count(https://www.doczj.com/doc/3a13367609.html,um)as选秀门数,sum(1-score/60)as不及格门数 from student s,course c,sc,sections st where s.snum =sc.snum and sc.secnum =st.secnum and https://www.doczj.com/doc/3a13367609.html,um =https://www.doczj.com/doc/3a13367609.html,um and S.Snum =@_Snum group by S.Snum DECLARE @_SUNM char(30) set @_SUNM ='s001' exec procf@_sunm CREATE PROC Procd @_snum char(4),@_avg int out,@_selected_course int out,@_failed_course int out AS SELECT @_avg=AVG(score),@_selected_course=COUNT(cnum),@_failed_course=sum(1-score/60) FROM sc JOIN sections ON sc.secnum =sections.secnum WHERE snum=@_snum

实验八数组应用一答案

实验八数组应用(一)答案 一、实验目的 1. 掌握一维数组的定义和使用; 2. 了解二维数组的定义和使用。 二、实验学时数 2学时 三、实验步骤 (一)阅读程序 1.#include main() { int a[]={1,2,3,4,5},i,j,s=0; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); 2. #include main() { int k ; int a[3][3] = {9,8,7,6,5,4,3,2,1} ; for (k =0;k < 3;k++ ) printf("%d \n",a[k][2-k]); }

3. main() { int i , j ,x =0 ,y = 0 , m ; int a[3][3] = { 1, -2 , 0 , 4 , -5 , 6 , 2 , 4 }; m = a [0][0] ; for (i=0 ;i < 3 ;i++) for (j = 0 ; j<3 ; j++ ) if ( a[ i] [ j ] >m ) { m = a[ i ][ j ] ; x = i ; y = j ; } printf(“ ( % d , % d ) = % d \n“ , x , y,m ); (二)完成程序 要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。 1.下面程序的功能是将十进制整数转换成二进制,请在_______上填写正确内容。 #include main() { int k=0,n,j,num[16]={0}; printf("输入要转换的十进制数\n"); scanf("%d",&n); printf ("%d转换为二进制数:\n",n); do { num[k]=_n%2_; n=n/2;k++; } while(n!=0); for(k=15;k>=0;k--) printf("%d",num[k]);

数据库实验答案

实验3 使用T-SQL语言完成单表查询 一、实验目的 掌握使用T-SQL语言完成单表查询 掌握常用谓词的用法 掌握where子句的用法 掌握order by 子句的用法 掌握group by 子句和having短语的用法 实验环境 Microsoft SQL Server 2000。 实验内容和要求 查询全体学生的详细信息。 查询所有课程的详细信息。 查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。 查询已被学生选修了的课程的编号。 查询系别编号为“d002”的学生的姓名和性别。 查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。 查询系别编号为d001、d002和d003的学生的学号和姓名。 查询课程名为“C_”开头的课程名和学分。 某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。 查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。 查询学校所开设的总的课程数。 计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。 查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分”。 求各个系别的编号以及各系的人数。 查询选课人数大于等于2人的课程编号以及选课的人数。 查询学生2选修课程的总成绩对应的列名为“总成绩”,并显示出学号。 查询有2门以上课程是80分以上的学生的学号及课程数。 查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列。 实验1 使用T-SQL语言建库、建表 实验2 向表中增、删、改数据 实验目的 掌握使用T-SQL建库、建表、修改表; 掌握使用T-SQL对表中数据进行插入、删除和修改。 实验环境 Microsoft SQL Server 2000。 实验内容和要求 建立数据库STDB 在数据库STDB中建立四个表:

实验8机考环境测试题及答案

实验8机考环境测试题: 1、用循环结构编程计算下列算式的值 sum=2+4+6+8+10+… +100 要求: **输入格式为:无输入提示信息和输入数据 **输出格式为:"sum=%d\n" 2、编程计算2×3阶矩阵A和3×2阶矩阵B之积C。 矩阵相乘的基本方法是:矩阵A的第i行的所有元素同矩阵B第j列的元素对应相乘,并把相乘的结果相加,最终得到的值就是矩阵C的第i行第j列的值。要求: (1)从键盘分别输入矩阵A和B,输出乘积矩阵C (2) **输入提示信息为:输入矩阵A之前提示:"Input 2*3 matrix a:\n" 输入矩阵B之前提示:"Input 3*2 matrix b:\n" **输入矩阵中每个值的格式为:"%d" **输出格式为:输出矩阵C之前提示:"Results:\n" 输出矩阵C中每个值的格式:"%6d" 输出矩阵C各行结束时换行 例如: Input 2*3 matrix a: 1 2 3 0 1 2 Input 3*2 matrix b: 1 -2 2 3 1 3 Results: 8 13 4 9 参考答案: #include

#define ROW 2 #define COL 3 void main() { int a[ROW][COL], b[COL][ROW], c[ROW][ROW], i, j,k; printf("Input 2*3 matrix a:\n"); for (i=0; i

相关主题
文本预览
相关文档 最新文档