当前位置:文档之家› 上机实验七_答案(请自行校对)汇总

上机实验七_答案(请自行校对)汇总

上机实验七_答案(请自行校对)汇总
上机实验七_答案(请自行校对)汇总

上机实验七二维数组

学号: 姓名:

一.目的要求

1.掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。

2.掌握与数组有关的算法,如最大最小值(或位置)、转置数组等。

3.掌握gets(s)、put(s)等字符串函数的作用:把以回车结束的键盘输入的字符串赋值给字符数组s。

二.实验内容

第1题、求一个3×4矩阵的所有靠外侧的的元素之和。

/*

解题思路:矩阵外侧元素总共有4部分组成:

第一行、最后一行、第一列和最后一列

*/

#define N 3

#define M 4

#include

void main() {

int a[N][M];

int i, j, sum;

printf("请输入%d*%d二维数组的值:", N, M);

for (i=0; i

for (j=0; j

scanf("%d", &a[i][j]);

//先计算第1行和最后一行所有元素的和

sum = 0;

for (i=0; i

sum += a[0][i]+a[N-1][i];

//计算第1列和最后1列所有元素的和

for (i=0; i

sum += a[i][0] + a[i][M-1];

//再减去4个角落的元素,因为它们重复计算了一次

sum -= a[0][0] + a[0][M-1] + a[N-1][0] + a[N-1][M-1];

printf("矩阵的外侧元素之和为%d\n", sum);

}

第2题、已知一个3×4矩阵a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}},打印输出其转置矩阵。

#include

void main() {

int a[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}}, b[4][3];

int i, j;

printf("矩阵a为:\n");

for (i=0; i<3; i++) {

for (j=0; j<4; j++)

{

b[j][i] = a[i][j];

printf("%5d", a[i][j]);

}

printf("\n");

}

printf("矩阵b为:\n");

for (j=0; j<4; j++) {

for (i=0; i<3; i++)

{

printf("%5d", b[j][i]);

}

printf("\n");

}

}

第3题、给定一个N*N的方阵,求出其上三角元素之和。

/*

解题思路:

上三角形是指主对角线右上角的所有元素

*/

#define N 10

#include

void main() {

int a[N][N];

int i, j, sum;

printf("请输入%d*%d二维数组的值:\n", N, N);

for (i=0; i

for (j=0; j

scanf("%d", &a[i][j]);

// 计算上三角形所有元素之和

sum = 0;

for (i=0; i

// 对于第i行,列是从i开始,直到N-1时结束

for (j=i; j

sum += a[i][j];

}

printf("上三角形元素之和为:%d\n", sum);

}

第4题、打印杨辉三角形前10行(分别用二维数组和一维数组实现)。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 1010 5 1

……………………

//杨辉三角形(二维数组)

#include

main()

{

int a[10][10];

int i, j, k;

for (i=0; i<10; i++){

a[i][0] = 1; // 第i行的第0个元素是1

a[i][i] = 1; // 第i行的第i个元素是1

// 其它列的元素是由前一行的当前列和前一列的和

for (j=1; j

a[i][j] = a[i-1][j-1]+a[i-1][j];

}

printf("杨辉三角形为:\n");

for (i=0; i<10; i++) {

for (j=0; j<=i; j++)

printf("%d ", a[i][j]);

printf("\n");

}

printf("\n");

}

//杨辉三角形(一维数组)

#include

main() {

int a[10];

int i, j, k;

printf("杨辉三角形为:\n");

for (i=1; i<=10; i++){

// 处理第i行,下面计算第i行各列的值

a[i-1] = 1; // 最后一列为1

for (j=i-2; j>0; j--) {

// 第j列是其本身与前一列之和

a[j] = a[j]+a[j-1];

}

// 打印第i行所有元素

for (j=0; j

printf("%d ", a[j]);

printf("\n");

}

printf("\n");

}

第5题、假设一个班级有5名学生,每个学生有6门课的成绩,请求出每个学生的平均成绩和每门课的平均成绩。

#define N 5

#define M 6

#include

void main() {

float a[N][M]; // 分数可能为实数

int i, j;

float sum;

printf("请输入学生的成绩(%d*%d):\n", N, M);

for (i=0; i

for (j=0; j

scanf("%f", &a[i][j]);

// 对每个学生,计算其平均成绩

for (i=0; i

sum = 0;

for (j=0; j

sum += a[i][j];

sum = sum / M;

printf("第%d个学生的平均成绩为:%.2f\n", i+1, sum);

}

// 对每门课程,计算平均成绩

for (i=0; i

sum = 0;

for (j=0; j

sum += a[j][i];

sum = sum / N;

printf("第%d门课的平均成绩为:%.2f\n", i+1, sum);

}

}

第6题、将一个整数字符串转换为整数输出。(注:整数字符串和整数是不同的,比如"123"是一个整数字符串,每个元素都是一个数字,但不能进行数

值运算,而123是一个整数,可以进行数值运算。两者外观形态相似,

本质不同)

/*

解题思路:

1、先输入一个字符串;

2、将字符串中每个字符分解,并通过ASCII码值转换成数字;

3、将转换后的数字进行合并,组合成一个整数。

*/

#define N 10

#include

#include // 处理字符串时,这个库文件必须包含进来

void main() {

char a[N]; // 字符数组

int i, k;

long sum;

printf("请输入一个字符串:\n");

gets(a);

// 下面对字符串a从第0个,到最后一个字符逐个进行处理

sum = 0;

for (i=0; a[i]!='\0'; i++) {

k = a[i] - 48; // 把字符的asc码值转换成对应的数字

sum = sum * 10 + k; // 把转换后的k和前面得到的数字进行合并}

printf("转换后,数值为:%ld\n", sum);

}

第7题、编写一个字符串复制程序,它的功能是把一个字符串的所有内容复制给另一个字符串,并输出复制后的字符串。

/*

解题思路:

1、先输入一个字符串;

2、对字符串中每个字符,复制到另外一个数组中;

3、复制时,还需要复制字符串结束符'\0'。

*/

#define N 100

#include

#include // 处理字符串时,这个库文件必须包含进来

void main() {

char a[N], b[N]; // 字符数组

int i;

printf("请输入一个字符串:");

gets(a);

// 下面对字符串a从每个字符逐个进行复制

for (i=0; i < N && a[i]!='\0'; i++) {

b[i] = a[i]; // 把a[i]中的字符复制到b[i]中

}

if (i

b[i] = '\0';

printf("复制后的字符串为:%s\n", b);

}

第8题、编写一个求字符串长度的程序,它的功能求出一个字符串中有效字符的个数。

/*

解题思路:

1、先输入一个字符串;

2、对字符串中每个字符进行计数,直到遇到字符串结束符'\0'时结束;

*/

#define N 100

#include

#include // 处理字符串时,这个库文件必须包含进来

void main() {

char a[N]; // 字符数组

int i;

printf("请输入一个字符串:");

gets(a);

// 下面的for语句也可以改为while语句

for (i=0; a[i]!='\0'; i++) {

}

printf("字符串长度为:%d\n", i);

}

第9题、编写一个字符串连接程序,它的功能是把两个不知道长度的字符串s1、s2的内容连接成为一个字符串,并保存在字符串s1中。(提示:要定义

足够长的字符串s1)

/*

解题思路:

1、先输入两个字符到a和b中;

2、判断字符串a的长度;

3、将b中字符,逐个复制到a中的结束符'\0'的位置上;

*/

#define N 1000

#include

#include // 处理字符串时,这个库文件必须包含进来

void main() {

char a[N], b[N]; // 字符数组

int l, i;

printf("请输入第一个字符串a:");

gets(a);

printf("请输入第二个字符串b:");

gets(b);

// 获取字符串a的长度:用下面的循环语句,或是直接l=strlen(a);

l=0;

while (a[l]!='\0')

l++;

//此时a[l] = '\0'; 下面将b[0]直接赋给a[l]

i=0;

while (b[i]!='\0') {

a[i+l] = b[i] ;

i++;

}

a[i+l] = '\0'; //最后还需要将'\0'放到a数组的最后面

/* 上面i=0语句开始部分,也可以用下面语句代替:

for (i=0; i<=strlen(b); i++)

a[i+l] = b[i];

*/

printf("连接后的字符串为:%s\n", a);

}

第10题、判断一个字符串是否为回文,如果是输出“yes”,否则输出“no”。

所谓回文是指正读和反读相同的字符串,比如“12321”

/*

解题思路:

1、先输入字符串到字符数组a中;

2、然后判断a的第一个字符与最后一个字符是否相同;

3、如果不同,则跳出循环,输出NO;

4、否则,判断第2个字符,与倒数第2个字符是否相同;

5、这个过程一直继续,直到到a的中间位置时停止。

*/

#define N 100

#include

#include // 处理字符串时,这个库文件必须包含进来

void main() {

char a[N]; // 字符数组

int i, n;

printf("请输入一个字符串:");

gets(a);

// 获取字符串a的长度;

n=strlen(a);

for (i=0; i

{

// 判断第i个字符与第n-i-1个字符是否相同,如果不同,跳出循环

if (a[i] != a[n-i-1])

break;

}

if (i==n/2)

printf("Yes!\n");

else

printf("No!\n");

}

第11题、有一篇文章,共有3行文字,每行有80个字符,统计这篇文章中各个英文字母的个数。(提示:可以定义一个长度为26的整型数组num,

分别记录26个英文字母的个数,比如读入的字母为'a',则num[0]++,

读入的字母为'b',则num[1]++,......)

解题思路:

1、先定义一个二维数组,用于存放输入的三个字符串;

2、定义一个num数组,大小是26,用于存放字母出现的次数,其中num[0]存放字符'a'出现的次数....;

3、首先,读入三个字符串;

4、其次,对每个字符串中的字符,逐个进行统计其次数;

5、对字符转换成num数组下标的方法:将字符的asc码值减去97,就得到对应的下标值。例如'a'为0,'b'为1, ..., 'z'为25。

*/

#define N 100

#include

#include // 处理字符串时,这个库文件必须包含进来

void main() {

char a[3][N]; // 字符数组

int num[26] = {0};

int i, j, n;

printf("请输入三行字符串:");

for (i=0; i<3; i++) {

gets(a[i]);

}

// 下面对每个字符串进行处理;

for (i=0; i<3; i++)

{

// 对a[i]字符串进行处理

j = 0;

while ( a[i][j] !='\0') {

n = a[i][j] - 97; // 将字符的asc码减去97,得到对应的下标

num[n] ++; // 出现次数加1;

j++;

}

}

// 输出各字符串出现的次数

for (i=0; i<26; i++)

{

if ( num[i] !=0 )

printf("字符%c出现的次数为:%d\n", i+97, num[i]);

}

}

第12题、该程序功能:输入1个字符串,按字母出现次序输出其中所出现过的大写英文字母。如运行时输入字符串"FONTNAME and

FILENAME",应输出"F O N T A M E I L"。

/*

解题思路:

1、先定义2个字符数组a和b,其中a存放输入的字符串,而b存放a中出现的大写字母(注意不能重复出现);

2、首先,输入一个字符串,并保存到a中;

3、其次,对数组a中每个字符进行逐个判断,如果a[i]是大写字母,那么做如下处理:

4、在数组b中查找a[i]是否出现,如果没有,则将a[i]加入到数组b中;

5、最后,输出数组b中的字符;

*/

#define N 100

#include

#include // 处理字符串时,这个库文件必须包含进来

void main() {

char a[N], b[N]; // 字符数组

int i, j, n;

printf("请输入字符串:\n");

gets(a);

n = 0; // n用来表示数组b中元素的个数;

// 下面对a中每个字符串进行处理;

for (i=0; a[i]!='\0'; i++)

{

// 对a[i]字符串进行处理

if (a[i]>='A' && a[i]<='Z') { //如果为大写字母

//下面判断a[i]是否已经在数组b中

for (j=0; j

{ // 如果在b中出现,则跳出循环

if (b[j] == a[i]) break;

}

if (j==n) {

//此时表示a[i]在b中没有出现,此时加入到b中

b[j] = a[i]; n++;

}

}

}

b[n] = '\0'; //必须将结束符'\0'存放到数组b的最后位置// 输出数组b的内容

printf("大写字母为:\n");

puts(b);

}

MATLAB课后实验答案

%实验一MATLAB运算基础 %第一题%(1) z1=2*sin(85*pi/180)/(1+exp(2)) %(2) x=[2,1+2i;-0.45,5]; z2=0.5*log(x+sqrt(1+x.^2)) %(3) a=-3.0:0.1:3.0; z3=(exp(0.3*a)-exp(-0.3*a))/2.* sin(a+0.3)+log((0.3+a)/2) %(4) t=0:0.5:2.5; z4=t.^2.*(t>=0&t<1)+(t.^2-1).*( t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t <3)%第二题 A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; A+6*B A-B+eye(size(A)) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2]%第三题 A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25] B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11] C=A*B F=size(C) D=C(F(1)-2:F(1),F(2)-1:F(2)) whos%第四题 %(1): A=100:999; B=rem(A,21); C=length(find(B==0)) %(2): A='lsdhKSDLKklsdkl'; k=find(A>='A'&A<='Z'); A(k)=[] %实验二MATLAB矩阵分析与处理 %第一题 E=eye(3); R=rand(3,2); O=zeros(2,3); S=diag([2,3]);%判断AB是否相等 A=[E,R;O,S];A^2 B=[E,(R+R*S);O,S^2] %第二题 H=hilb(5) P=pascal(5) Hh=det(H) Hp=det(P) Th=cond(H) Tp=cond(P) %第三题: A=fix(10*rand(5)) H=det(A)Trace=trace(A) Rank=rank(A)Norm=norm(A) %第四题: A=[-29,6,18;20,5,12;-8,8,5] [V,D]=eig(A)%数学意义略 %第五题方法一: %(1): A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4, 1/5,1/6]; b=[0.95,0.67,0.52]'; x=inv(A)*b %(2): B=[0.95,0.67,0.53]'; x=inv(A)*B %(3): cond(A) %第五题方法二: A=hilb(4) A(:,1)=[] A(4,:)=[] B=[0.95,0.67,0.52]'; X=inv(A)*B B1=[0.95,0.67,0.53]'; X1=inv(A)*B1 N=cond(B) N1=cond(B1) Na=cond(A) %矩阵A为病态矩阵 %第六题 A=[1,4,9;16,25,36;49,64,81] B=sqrtm(A) C=sqrt(A) %sqrtm函数是以矩阵为单位进行计算,sqrt函数是以矩阵中的元素进行计算 %实验三选择程序结构设计 %第一题程序一 x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5. 0]; y=[]; %建立存放所有y值的矩阵

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询: 1.检索王丽同学所学课程的课程号和课程名。 select Cno ,Cname from c where Cno in (select cno from sc where sno in (select sno from s where sname='王丽' )) 2.检索年龄大于23岁的男学生的学号和姓名。 select sno,sname from s where sex='男' and age>23 3.检索‘c01’课程中一门课程的女学生姓名 select sname from s where sex='女' and sno in (select sno from sc where cno='c01') 4.检索s01同学不学的课程的课程号。 select cno from c where cno not in (select cno from sc where sno ='s01') 5.检索至少选修两门课程的学生学号。 select sc.sno from s,sc where s.sno=sc.sno group by sc.sno having count(https://www.doczj.com/doc/a31655752.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.doczj.com/doc/a31655752.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno ) so,s where s.sno=so.sno 解法二: select sc.sno sno,s.sname,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno,sname

实验5(答案)

实验五 连续系统分析 一、实验目的 1.深刻理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性中的重要作用及意义,掌握根据系统函数的零极点设计简单的滤波器的方法。 2.掌握利用MATLAB 分析连续系统的时域响应、频响特性和零极点的基本方法。 二、实验原理及内容 MATLAB 提供了许多可用于分析线性时不变连续系统的函数,主要包含有系统函数、系统时域响应、系统频域响应等分析函数。 1. 连续系统的时域响应 连续时间LTI 系统可用如下的线性常系数微分方程来描述: ) ()( )()(01)1(1)(t y a t y a t y a t y a n n n n ++++-- )()( )()(01)1(1)(t x b t x b t x b t x b m m m m ++++=-- 已知输入信号x (t )以及系统初始状态)0(,),0('),0()1(----n y y y ,就可以求出系统的响应。 MATLAB 提供了微分方程的数值计算的函数,可以计算上述n 阶微分方程描述的连续系统的响应,包括系统的单位冲激响应、单位阶跃响应、零输入响应、零状态响应和完全响应。 在调用MATLAB 函数时,需要利用连续系统对应的系数函数。对微分方程进行Laplace 变换即可得系统函数: 1110111)()()(a s a s a s a b s b s b s b s X s Y s H n n n n m m m m ++++++++==---- 在MATLAB 中可使用向量和向量分别保存分母多项式和分子多项式的系数: ],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -= 这些系数均按s 的降幂直至s 0排列。 ● 连续系统的单位冲激响应h (t )的计算 impulse(sys)计算并画出系统的冲激响应。 参数:sys 可由函数tf(b,a)获得。其中: ],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -= h=impulse(sys, t) 计算出系统在向量t 定义的区间上的冲激响应, 向 量h 保存对应区间的系统冲激响应的输出值。 ● 连续系统的单位阶跃响应g (t )的计算 step(sys)计算并画出系统的阶跃响应。

大一C语言上机实验试题和答案

实验一上机操作初步(2学时) 一、实验方式:一人一机 二、实验目的: 1、熟悉VC++语言的上机环境及上机操作过程。 2、了解如何编辑、编译、连接和运行一个C程序。 3、初步了解C程序的特点。 三、实验内容: 说明:前三题为必做题目,后两题为选做题目。 1、输出入下信息:(实验指导书P79) ************************* Very Good ************************* 2、计算两个整数的和与积。(实验指导书P81) 3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。(书 P3) 4、在屏幕上显示一个文字菜单模样的图案: ================================= 1 输入数据 2 修改数据 3 查询数据 4 打印数据 ================================= 5、从键盘上输入两个整数,交换这两个整数。 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include void main( ) { printf(“********************\n”); printf(“ Very Good\n”); printf(“********************\n”); } 2、#include void main( ) { int a,b,c,d; printf(“Please enter a,b:”); scanf(“%d,%d”,&a,&b); c=a+b; d=a*b; printf(“%d+%d=%d\n”,a,b,c); printf(“%d*%d=%d\n”,a,b,d);

内蒙古工业大学微机原理实验指导答案.doc

被嗅材尊机原理与旅用实验指导布实验 程禹够告 沽说:信息工程修陇班披, 电8 77-7班g生名:Eg 样号,2011202030 实验一编辑、汇编、 连接、调试程序的使用 程序设计A 设计要求 (1)将FFFFH 送到AX, SI, DI, BP, DS, ES 寄存器 (2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器

内容,并判断是否正确。)程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,0FFFFH MOV SI,AX MOV DI,AX MOV BP,AX MOV DS,AX MOV ES,AX RET STARTENDP CODE ENDS END STT B、设计要求 ⑴将1,2,3,4,5分别送到数据段偏移地址为1000H, 1001H, 1002H, 1003H, 1004H,单元中。 ⑵编程 DATA SEGMENT ORG 1000H DATA ENDS CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV AL,1 MOV DS:[1000H],AL

MOV AL,2 MOV DS:[1001H],AL MOV AL,3 MOV DS:[1002H],AL MOV AL,4 MOV DS:[1003H],AL MOV AL,5 MOV DS:[1004H],AL RET STARTENDP CODE ENDS END STT 实验二、加法程序设计 设计内容A、设计要求 (1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地 址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低 对低),求这两数据之和,并将结果放在流量数据之后。(eg: 1234 56H+78 9AH=12 AC FOH) (2)编程 DATA SEGMENT ORG 1000H H1 DB56H J34H,12H,9AH,78H H2 DB 3DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOVSIJOOOH MOV DI,1003H MOV BX,1005H MOV CX,2 CLC LP:MOVAL,[SI] MOV DL,[DI[ ADCAL,DL MOV [BX],AL INC SI

数据库实验五题目答案

实验五 实验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;

实验五数值积分参考答案

一 实验目的: 1 加深理解积分理论中分割、近似、求和、取极限的思想方法; 2 了解定积分近似计算的矩形法、梯形法与抛物线法; 3 会用MATLAB 语言编写求定积分近似值的程序,会用MALAB 中的命令求定积分。 二 实验准备素材 见附件。 三 实验内容 1.(不定积分)用int 计算下列不定积分,并用diff 验证 ?dx x x 2 sin ,?+x dx cos 1,?+1x e dx ,?xdx arcsin ,?xdx 3sec 2.(定积分)用trapz,int 计算下列定积分 ?10sin dx x x ,?10dx x x ,?π20)2sin(dx x e x ,?-102dx e x 3.(椭圆的周长) 用定积分的方法计算椭圆1492 2=+y x 的周长 4.(二重积分)计算积分??≤+++y y x dxdy y x 222)1( 5. (广义积分)计算广义积分 ?∞∞-+-dx x x 421)exp(,?10)tan(dx x x ,?-1021sin dx x x 7.1 syms x; g1=int(x.*sin(x).*sin(x)) g1 = x*(-1/2*cos(x)*sin(x)+1/2*x)+1/4*sin(x)^2-1/4*x^2

clear;syms x; d1=diff(x*(-1/2*cos(x)*sin(x)+1/2*x)+1/4*sin(x)^2-1/4*x^2) syms x; g2=int(1/(1+cos(x))) g2 = tan(1/2*x) clear;syms x; d2=diff(tan(1/2*x)) syms x; g3=int(1/(exp(x)+1)) g3 = log(exp(x))-log(exp(x)+1) clear;syms x; d3=diff(exp(x))-log(exp(x)+1)) syms x; g4=int(finverse(sin(x))) g4 = x*asin(x)+(1-x^2)^(1/2) clear;syms x; d4=diff(x*asin(x)+(1-x^2)^(1/2)) syms x; g5=int(sec(x).^3) g5 = 1/2/cos(x)^2*sin(x)+1/2*log(sec(x)+tan(x)) clear;syms x; d5=diff(1/2/cos(x)^2*sin(x)+1/2*log(sec(x)+tan(x))) 7.2 x=10e-100:0.001:1; y=sin(x)./x; trapz(x,y) clear all;syms x;

华南农业大学C语言实验上机实验第四版参考答案

C语言程序设计上机实验指导与习题 参考答案(第四版) (学生改编) 实验 1 C语言程序初步 一、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C程序的特点。 (4)在教师的指导下,学会使用在线评判系统。 二、实验内容 1. 运行第一个C程序 [题目:The first C Program] 将下列程序输入visual c++ ,编译、连接和运行该程序。 #include"stdio.h" main() { printf("The first C Program\n"); } [具体操作步骤] (1)在编辑窗口中输入程序。 (2)保存程序,取名为 a1.c。 (3)按照第一章中介绍的方法,编译、连接和运行程序。 (4)按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”,则该题完成。

2. 在在线评判系统中提交实现了计算a+b功能的程序 [题目1001:计算a+b] 由键盘输入两个整数,计算并输出两个整数的和。实现该功能的程序如下, #include "stdio.h" main() { int a, b; scanf("%d%d", &a, &b); printf("%d", a + b); } (1)在程序编辑窗口中输入程序。 (2)保存程序,取名为 a2.c。 (3)按照前二章中介绍的方法,编译、连接和运行程序。 (4)在程序运行过程中,输入 15 30↙ (↙表示输入回车符) (5)如果看到如下输出结果,则表明15+30 的结果正确,如果得不到如下结果,则需检查并更正程序。 45 (6)按照第三章中介绍的方法进入在线评判系统。 (7)显示题目列表,点击题号为1001,题名为“计算a+b”的题目。 (8)查看完题目要求后,点击页面下端的“sumbit”,参照第二章提交程序的方法提交程序a2.c。 (9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。 3 实验 2 基本数据类型、运算和表达式 一、实验目的 (1)掌握C语言数据类型,熟悉如何定义一个整型和实型的变量,以及对它们赋值的方法。(2)掌握不同的类型数据之间赋值的规律。 (3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运 算符的使用。 (4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容 1. 变量的定义 [题目 1117:变量定义,按要求完成程序] 下面给出一个可以运行的程序,但是缺少部分语句,请按右边的提示补充完整缺少的语句。#include "stdio.h" main() { int a, b; /*定义整型变量a和b*/

matlab实验五答案1

实验五 1、编写程序,该程序在同一窗口中绘制函数在 []0,2π之间的正弦曲线和余弦曲线,步长 为200/π,线宽为2个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记并标注sin(x)=cos(x);通过函数方式在生成的图形中添加注释,至少应包括:标题,文本注释,图例和坐标轴标注。%x=linspace(0,2*pi,1000);x=[0:pi/200:2*pi]sinx =sin(x);cosx =cos(x); k=find(abs(sinx-cosx)<1e-2);x1=x(k); plot(x,sinx,'LineWidth',2) hold on ,plot(x,cosx,'r:','LineWidth',2)hold on ,plot(x1,sin(x1),'r*')xlabel('x:(0-2\pi)'); ylabel('y:sin(x)/cos(x)'); title('正弦-余弦曲线'); text(x1+0.1,sin(x1),'sin(x)=cos(x)');legend('sin(x)','cos(x)'); 1 2 34 5 6 7 x:(0-2π) y :s i n (x )/c o s (x ) 正弦-余弦曲线 2、绘制图像:双曲抛物面:22 x y z =- ,1616x -<<,44y -<<,并对绘制的双曲抛物面尝试进行视点控制。 [X,Y]=meshgrid(-16:0.4:16,-4:0.1:4);Z =X.^2/16-Y.^2/4; subplot(1,3,1),plot3(X,Y,Z),view(0,180),title('azimuth =0,elevation =180'); subplot(1,3,2),plot3(X,Y,Z),view(-37.5,-30),title('azimuth =

实验五 连接查询参考答案

--创建学生视图 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_stu]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_stu] go create view v_stu as select sid, sname, ssexy, sbdate, Datediff(year, sbdate, getdate()) as sage, stele, ugrade.gid, gname, gyear, udept.did, dname, daddr, dtele, demail, uteacher.tid, tname, tsexy, tbdate, tfield, tprof, tele, qq, email, msn from ustudent, ugrade, udept, uteacher where ustudent.gid=ugrade.gid and ugrade.did=udept.did and ugrade.tid=uteacher.tid --创建选修课程视图 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_sc]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_sc] go create view v_sc as select ustudent.sname, usc.*, cname, credit, pcid, chour, cattr, cnum from ustudent, usc, ucourse where ustudent.sid=usc.sid and usc.cid=ucourse.cid --1、显示所有学生的详细信息,包括学号、姓名、性别、年龄、班级名称,入学年份select sid, sname, ssexy, sage, gname, gyear from v_stu --2、显示信息科学与技术系同学的名单,包括学号、姓名、性别、年龄、班级名称、入学年份 select sid, sname, ssexy, sage, gname, gyear from v_stu where dname='信息科学与技术系' --3、显示选修了“数据库”的所有同学的学号、姓名 select sid, sname from v_sc where cname='数据库' --4、显示白云同学的班主任老师的姓名、联系电话 select tname, tele from v_stu

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

实验5(2) 参考答案

实验5(2) 类的继承与派生 参考答案 一、实验目的与实验要求 (1)掌握单继承和多重继承下派生类的定义方法,理解基类成员在不同的继承方式下不同的访问属性。 (2)正确定义派生类的构造函数与析构函数,理解定义一个派生类对象时构造函数、析构函数的调用次序。 (3)理解同名冲突的产生原因,会使用虚基类来解决第三类同名冲突问题,并理解引入虚基类后构造函数、析构函数的调用顺序。 (4)理解赋值兼容的相关使用方法。 二、实验内容 题目1:定义一个车基类,派生出自行车类和汽车类,并以自行车类和汽车类为基类共同派生出摩托车类,每个类都要定义带有参数的构造函数。自行车类分别使用private、protected、public三种方式来继承车基类,观察基类成员在派生类中的访问属性;观察自行车类、汽车类和摩托车类对象定义时构造、析构函数的调用顺序。最后将车基类定义为虚基类再观察程序运行结果。题目的具体要求如下。 ①定义基类V ehicle,它具有两个保护成员变量:MaxSpeed、Weight,有3个公有的成员函数:Run( )、Stop( )、Show( ),以及带参数的构造函数、析构函数;再定义一个从Vehicle 公有继承的Bicycle类,增加保护属性的成员变量Height,定义Bicycle类的构造函数、析构函数,改造Show函数,用于输出本类中的完整信息。main( )函数中定义Bicycle类对象,观察构造函数和析构函数的执行顺序,以及各成员函数的调用。使用跟踪的方法观察程序运行的每一步究竟调用的是哪一个函数。 ②在上一步基础上,将继承方式分别修改为protected和private,再重新编译,观察这时的报错信息并进行分析。 ③将Bicycle类的继承方式恢复为public,代码回到①的状态,再在Bicycle类下面增加一个第二层汽车类Car的定义,Car也是公有继承基类Vehicle,其中增加了一个保护成员变量SeatNum,表示汽车有几个座位,其定义方式与类Bicycle类似。主函数中定义该类对象,观察运行结果。 ④在上一步的基础上,再定义一个第三层类MotorCycle,该类以公有方式继承了第二层的Bicycle和Car类。定义其构造函数,要调用两个直接基类的构造函数,再改造函数Show( ),输出所有四个成员变量的信息。主函数中只定义类MotorCycle的对象并调用相应的函数,代码请参考实验指导1的④。程序进行编译,会产生4个错误、8个警告,因为存在二义性问题,在同名成员前增加“基类名::”以消除二义性直到程序正确,观察运行结果。 ⑤再将代码恢复至上一步未修改前,即存在4个错误、8个警告的状态,再作一定的修改,将Vehicle声明为虚基类以消除二义性,同时修改第三层类的构造函数,其余代码不变,具体请参考实验指导1的⑤。观察运行结果,理解此时构造函数、析构函数的调用顺序及用虚基类消除二义性的原理。 参考程序如下:

2010C语言实验报告参考答案

2010C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y);

x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a;

实验5(1) 参考答案

实验5(1) 类的组合 参考答案 一、实验目的与实验要求 (1)理解类组合的概念与作用。 (2)掌握对象成员的定义方法,理解对象成员的构造与析构方法。 (3)理解组合后类的构造函数与析构函数的调用次序。 (4)掌握对象成员中私有成员和保护成员的访问方法。 二、实验内容 题目1:对象成员的定义、构造与访问。 定义三个类Member1、Member2和New。Member2中包含有Member1类型的成员,New中包含有Member1与Member2类型的成员。程序的具体要求如下。 ①在Member1类中,它含有一个int型私有数据成员x以及三个公有成员函数。三个成员函数分别为构造函数、析构函数与显示函数show( )。show( )函数的作用是输出x的值。 ②在Member2类中,它含有三个私有数据成员,分别是Member1型的对象obj1、obj2与int型的数据y。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出y的值。 ③在New类中,它含有三个私有数据成员,分别是Member1型的对象m1、Member2型的对象m2与int型的数据z。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出z的值。 ④main( )函数中定义一个New型的对象,并调用show( )函数。 程序为: #include using namespace std; class Member1 { public: Member1(int a) { x = a; cout << "constructing Member1 " << x << endl; } ~Member1( ) { cout << "donstructing Member1\n"; } void show( ) { cout << "Member1 x = " << x << endl;

数据结构上机实验答案

《数据结构实验指导书》答案 实验一: 1、请编写函数int fun(int *a, int *b),函数的功能是判断两个指针a和b所指存储单元的值 的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。 #include int fun(int *a, int *b) { if (*a*(*b)>0) return(1); else return(0); } main() { int x,y; scanf("%d%d",&x,&y); if (fun(&x,&y)) printf("yes\n"); else printf("no"); } 2、计算1+2+3+……+100,要求用指针进行设计。即设计函数int fun(int *n)实现求 1+2+3+……+*n,在主函数中输入、调用、输出结果。 #include int fun(int *n) { int i,sum=0; for (i=1;i<=*n;i++) sum+=i; return(sum); } main() { int x,sum; scanf("%d",&x); printf("the sum is %d\n",fun(&x)); } 3、函数的功能是求数组a中最大数的位置(位序号)。在主函数中输入10个整数、调用函

数fun、输出结果。 #define N 10 #include void input(int *a,int n) { int i; for (i=0;i*max) max=a+i; return(max-a); } main() {int a[N],maxi; input(a,N); maxi=fun(a,N); printf("\n the max position is %d\n",maxi); } 4、请编写函数fun(int *a,int n, int *odd, int *even),函数的功能是分别求出数组a中所有奇数之和和所有偶数之和。形参n给出数组中数据的个数;利用指针odd和even分别返回奇数之和和偶数之和。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include void input(int *a,int n) { int i; for (i=0;i

微机原理实验答案汇总

1.题目:编程将(AX)=2387、(BX)=192FH、(CX)=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 CODE SEGMENT ASSUME CS:CODE START: MOV AX,2387 MOV BX,192FH MOV CX,9256 CMP AX,BX JAE NEXT1 XCHG AX,BX NEXT1: CMP AX,CX JAE NEXT2 XCHG AX,CX NEXT2: CMP BX,CX JAE NEXT3 XCHG BX,CX NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 2.题目:编程将(BX)=8600H、(CX)=3489H、(DX)=9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 ;CODE SEGMENT ASSUME CS:CODE START: MOV BX,8600h MOV CX,3489H MOV DX,9235 CMP BX,CX JGE NEXT1 XCHG BX,CX NEXT1: CMP BX,DX JGE NEXT2 XCHG BX,DX NEXT2: CMP CX,DX JGE NEXT3 XCHG CX,DX NEXT3:

MOV AH,4CH INT 21H CODE ENDS END START 3.题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。 DATA SEGMENT NUM DB 32,34,89H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DAT START: MOV AX,DATA MOV DS,AX ;初始化DS LEA BX,NUM ;取有效地址到BX,以便访问要排序的数 MOV AL,[BX] CMP AL,[BX+1] JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换 XCHG AL,[BX+1] MOV [BX],AL NEXT1: CMP AL,[BX+2] JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换 XCHG AL,[BX+2] MOV [BX],AL NEXT2: MOV AL,[BX+1];将第二个和第三个数比较 CMP AL,[BX+2] JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换 XCHG AL,[BX+2] MOV [BX+1],AL NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 4.题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segment num db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data

实验五答案

实验内容: 1. 求解非齐次线性方程组?? ???-=+-+=-+-=+-+2534432312w z y x w z y x w z y x 的通解。 2. 一个城镇有三个主要企业:煤矿、电厂和地方铁路作为它的经济系统。生产价值一元的煤,需消耗0.25元的电费和0.35元的运输费;生产价值一元的电,需消耗0.40元的煤费、0.05元的电费和0.10元的运输费;而提供价值一元的铁路运输服务,则需消耗0.45元的煤费、0.10元的电费和0.10元的运输费。假设在某个星期内,除了这三个企业间的彼此需求外,煤矿还得到了50 000元的订单,电厂得到了25 000元的电量供应要求,而地方铁路得到了价值30 000元的运输需求。试问: (1)这三个企业在这个星期各应生产多少产值才能满足内外需求? (2)除了外部需求,试求这星期各企业之间的消耗需求,同时求出各企业新创造的价值(即产值中除去各企业的消耗所剩的部分); (3)如果煤矿需要增加总产值10 000元,它对各个企业的产品或服务的完全需求分别将是多少? 3.在某年经济年度内,各经济部门的投入产出表如下所示(单位:亿元)。假设t 经济年度工业、农业及第三产业的最后需求均为17亿元,预测t 经济年度工业、农业及第三产业的产出(提示:对于一个特定的经济系统而言,直接消耗矩阵和系数矩阵可视作不变)。

表中第一行数字表示工业总产出为25亿元,其中6亿用于工业本身,2亿用于农业,1亿用于第三产业,16亿用于最后需求,二、三可作类似解释。第一列数字表示6亿是工业对自身的投入,2.25是农业对工业的投入,3是第三产业对工业的投入。 1. clear;clc a=[2 1 -1 1;3 -2 1 -3;1 4 -3 5]; b=[1;4;2]; rank(a) rank([a,b]) ans = 2 ans = 3 无解。 2. clear;clc A=[0 0.40 0.45;0.25 0.05 0.10;0.35 0.10 0.10]; E=eye(3); Y=[50000;25000;30000]; X=(E-A)\Y x1=X(1) x2=X(2) x3=X(3) C=eye(3); C(1,1)=x1

C语言实验参考答案11

C语言实验参考答案 实验一 5、输入并运行自已编写的程序(教材第一章P14 三编程题)。 实验二 1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。 #include main() {float x,y,z,s,t,a; printf(“x,y,z=”); scanf(“%f,%f,%f”,&x,&y,&z); s=x+y+z; t=x*y*z; a=s/3; printf(“s=%f,t=%f,a=%f\n”,s,t,a); } 2、编程。要求用户输入两个整数a、b(分别为20、10),读取用户从键盘输入的值,然后: 1)用整数输出这两个数的和、差; 2)用长整型输出这两个数的积,用float输出商; 3)用整数输出这两个数的余数,用float输出平均值。 #include

{int a,b,he,cha,yu; long ji; float shang,aver; printf(“a,b=”); scanf(“%d,%d”,&a,&b); he=a+b; cha=a-b; ji=(long)a*b; shang=1.0*a/b; yu=a%b; aver=(a+b)/2.0; printf(“a+b=%d,a-b=%d,a*b=%ld\n”,he,cha,ji); printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver); } 3. 再次运行程序第2题中的程序,使整数a、b的值分别为10、20,分析程序运行结果,并给出说明。 程序同上。 实验三 1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。例如,输入整数5,程序运行后输出字符5。 #include

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