第3章例题源程序
汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。
(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。
二级c语言程序设计习题及解答ch1-3

12)计算机能直接执行的程序是(B )。
A)源程序B)目标程序C)汇编程序D)可执行程序13)以下叙述中正确的是( D )A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整例年真题:#include<stdio.h>main(){Int a;A=5; /*给A变量赋值5A+=3; 再赋值后再加3*/Printf(“%d”,a);}(11)以下叙述中正确的是( C )。
A)C 程序的基本组成单位是语句B)C 程序中的每一行只能写一条语句C)简单C 语句必须以分号结束D)C 语句必须在一行内写完(11)以下叙述中正确的是( C )A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中(12)以下选项中,能用作用户标识符的是( C )A)voidB)8_8C)_0_D)unsigned【解析】A:关键字不可以B:不以数字开头C:正确D:关键字(13)以下选项中合法的标识符是( C )A)1-1 B)1—1C)-11D)1—【解析】A:不以数字开头,出现非法字符-而不是_ B:不以数字开头,非法字符C:正确D: 不以数字开头,出现非法字符(14)以下选项中不合法的标识符是( C )A)print B)FOR C)&a D)_00【解析】C:出现非法字符&(15)以下选项中,能用作数据常量的是( D )A)o115 B)0118 C)1.5e1.5D)115L【解析】A:八进制以0开头而不是以o开头B:八进制最大值为7,范围0-7 C:指数必须为整数D: 长整型正确(13)以下选项中不能作为C语言合法常量的是(A)。
A)'cd'B)0.1e+6 C)"\a" D)'\011'【解析】A:字符常量只能有一个字符(16)以下选项中不属于字符常量的是( B )A)'C'B)"C"C)'\xCC0' D)'\072'【解析】B:字符常量以单引号作为标志,其为字符串(14)表达式:4-(9)%2的值是( B )A)0B)3C)4D)5【解析】(9)%2=1(取余),4-1=3(14)设变量已正确定义并赋值,以下正确的表达式是 ( C )A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0【解析】A:等号左边必须为变量,不可以为表达式,y*5是表达式B:%只适用于整型变量D: %只适用于整型变量(15)若有定义语句:int x=10;,则表达式x-=x+x的值为( B )A)-20B)-10C)0D)10【解析】先算右边得20,x-=20,则10-20=-10(14)设有定义:int x=2;,以下表达式中,值不为6的是 ( D )A) x*=x+1 x=x*(x+1)B) x++,2*xC)x*=(1+x)D)2*x,x+=2【解析】逗号表达式的最终结果看最后一个表达式,x+=2,结果为4(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是 (A)A)x=y==5;B)x=n%2.5;C)x+n=ID)x=5=4+1;【解析】等号左边必为变量,不能为常量或数字排除C 、D,%只能用于整数排除B第三章输入输出习题讲解(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是(A)A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是(D)A)0,0B)1,0C)3,2D)1,2【解析】b=a+b即b=1,a=2*b,a=2(15)程序段:int x=12;double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是(A )A)123.141593B)123.141593C)12,3.141593D)12 3.141593【解析】“%d%8.6f”原样输出,没有,也没有空格,所以x与y相连,小数总共8位,小数点之后6位#include <stdio.h>main(){double a=123.456;printf("%6.2f",a);}结果:123.46例题:int x;x=11/3;int y=5;printf("%%d,%%%d\n",x,y); 结果是:%d,%3【解析】"%%d,%%%d\n"原样输出,%%d中第一个%为转义字符,不是输出占位符,所以原样输出%d,然后%%转义只输出一个%,%d\n只有一个占位符,所以只输出x的值为3[3.5] 若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是( D )A)read(a,b,c); B)scanf(“ %d%d%d” ,a,b,c);C)scanf(“ %D%D%D” ,&a,%b,%c);D)scanf(“ %d%d%d”,&a,&b,&c);【解析】scanf中赋值必须用&(取地址符),即将输入的字符放在指定位置中[3.6] 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c 赋予33,以下不正确的输入形式是( B )A)10 B)10.0,22.0,33.0 C)10.0 D)10 2222 22.0 33.0 3333scanf(“ %f %f %f” ,&a,&b,&c);【解析】输入时可以空格可以回车,但是不可以出现,复合语句:多个语句被{}括起来,当成一条语句来执行。
软件技术基础2实验任务3

《软件技术基础2》实验报告3学院机械学院专业能源与动力工程年级2015姓名666任课教师葛卫民实验指导葛卫民2016年10月日实验三一、实验目的通过本试验,使学生理解数组、指针的概念及基本用法;掌握数组与指针程序的设计方法;掌握求最大最小、排序、字符串处理等基本算法的思想和使用方法。
二、实验内容1.通过程序实例,理解数组及指针的概念及基本语法。
2.编写教材第三章习题3中1、2、3、5、6、7要求的程序,并完成上机调试的实验任务。
其中第3题的第7小题需要分别用数组、指针结合动态内存分配两种方法来实现。
三、实验准备1.复习第三章的内容,重点是3.1、3.2、3.5节的内容及相关例题;2.编写教材第三章习题3中1、2、3、5、6、7要求的程序。
四、实验任务任务一:第1小题1.内容:向数组a中输入十个整数,求其中最大值,最小值和十个数的算术平均值。
2.源程序:#include <iostream.h>void main( ){int a[10],amax,amin,sum(0);double ave;cout<<"输入10个数:";for (int i=0; i<10; i++) cin>> a[i];for(i=0;i<10;i++) sum+=a[i];ave=sum/10.0;amax=amin=a[0];i=1;while(i<10){ if(a[i]>amax) amax=a[i];if(a[i]<amin) amin= a[i];i++;}cout<<"算术平均值="<<ave<<endl;cout<<"最大值="<<amax<<endl;cout<<"最小值="<<amin<<endl;}3.运行结果:4.实验中遇到的主要问题及解决方法无任务二:第2小题1.内容:输入十个学生一门课的成绩,分别统计大于平均值的人数和小于60分的人数。
《C语言程序设计》第三章 顺序结构程序设计

第三章顺序结构程序设计3.1 基本要求z掌握C语言中使用最多的一种语句——赋值语句的使用方法。
z掌握各种类型数据的输入输出的方法,并能正确使用各种格式转换符。
z掌握文件包含预处理命令#include。
3.2 内容小结本章主要介绍了一些为编写简单程序所必须的语句及基本的输入输出方法。
它们是C语言中5类基本语句:控制语句、函数调用语句、表达式语句、空语句和复合语句。
格式输入输出函数scanf( )和printf( ):在C语言中没有专用的输入输出语句,但可通过调用输入输出函数及C系统提供的9种格式字符,进行各种类型数据、各种格式的输入输出。
单个字符的输入输出函数getchar( )和putchar( )。
文件的包含:函数是C程序的构成单元,C程序中的函数调用可分为两类,本源程序中函数的调用和非本源程序中函数的调用,如是后者需用#include 文件包含预处理命令把该函数所在的源文件包含到本源文件中来。
3.3 典型例题分析z例题1 printf( )函数的功能main( ){ int a , b;a=10;b=25;printf(“a=%d b=%d\n”,a,b);printf(“a+b=%d\na-b=%d\n”,a+b,a-b);}运行结果:a=10 b=2529a+b=35a-b=-15从上例中可以看出,转换说明符不仅规定了输出格式,而且也决定了输出项在整个输出信息中的位置。
此外,从上例也可以看出,输出项还可以是运算表达式,这时输出的是它的运算结果值。
z例题2 scanf( )函数的功能main( ){ int x, y;printf(“Enter integer x:”);scanf(“%d”,&x);printf(“Enter integer y:”);scanf(“%d”,&y);printf(“x+y=%d\n”,x+y);printf(“x-y=%d\n”,x-y);}该程序是以人机对话方式给变量x和y赋值,它的某次运行情况如下所示:Enter integer x:16〈CR〉Enter integer y:25〈CR〉x+y=41x- y=-9其中划有下横线的部分是从键盘打入的字符,其中〈CR〉表示回车键。
《精通C程序设计教程》二~九章习题答案

《精通C程序设计教程》部分习题答案2005年4月说明:本答案没有仔细校对,如果发现错误,请自行更正;蓝色的程序经过了上机验证.第二章 C源程序基本语法与顺序结构简单程序设计2.10 ABEFG2.11 A CFHJMNPQRT2.12 (1)3 (2)0 (3)0 (4)1 (5)–1 (6)160 (7)4 (8)4 (9)8 (10)8(11)1 (12)2 (13)1 (14)0 (15)6 (16)0 (17)29(18)3 (19)1 (20)12.13 2.52.143.52.15(1) 4 3 1 1 (2) 4 2 2 2 (3) 3 2 1 22.16(1) 0 0 (2) 100 100 (3) 2 2 (4) 1 1(5) 20 20 (6) 114 1152.17(1) –y*y*y*y*(a*a-b*b) (2) sin(y/sqrt(x*x+y*y))(3) sqrt(1+3.14/2*tan(48.5/180*3.14))(4) a/x/(a/(a+y)+b/(a+b/(a+b/z)))(5) p*q*(r+1)*(r+1)/((r+1)*(r+1)-1)(6) fabs(3-exp(-x)*log(fabs(1+x)))2.20 #include “stdio.h”void main(){long a;int b; double x;float y;scanf(“%l d%d%l f%f”,&a,&b,&x,&y);printf(“a=%l o,b=%.0f,x=%0G,y=%Lg\n”,a,(float)b,x,(long double)y);}2.22#include “stdio.h”#inclu de “math.h”void main(){ double a,b,c,p,s;printf(“Input a b c:”);scanf(“%lf%lf%lf”,&a,&b,&c);p=0.5*(a+b+c);s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“s=%.4f\n”,s);}2.23解:第1月开始: a(尚未还清的借款本金)第2月开始: a(1+p)-x第3月开始: (a(1+p)-x)(1+p)-x=a(1+p)2-x(1+p)-x第4月开始: (a(1+p)2-x(1+p)-x)(1+p)-x=a(1+p)3-x(1+p)2-x(1+p)-x…第n+1月开始:a(1+p)n -x((1+p)n-1+(1+p)n-2+…+1)=0 于是()1)1(1)1(1))1(1(1)1(1)1()1()1(21-++=+-+-+=+⋅⋅⋅+++++=--nnnn n n n p pp a p p p a p p p a x#include "stdio.h" #include "math.h" void main(){ double a,p,x;int n;printf("Input a n p:");scanf("%lf%d%lf",&a,&n,&p); x=a*p*pow(1+p,n)/(pow(1+p,n)-1); printf("x=%.2f\n",x); }输入a n p 为100000 120 0.004,输出为1050.91第三章 选择结构与循环结构3.3 a=2, b=1, c=2 3.4 x=10, y=6 3.5 BCD153.6 循环体共执行了3次,输出为: 12 9 3.7 abcd43.8 解:a 的值就是循环体被执行的次数 先分析内两层循环: 最内层循环次数 j=1 1 j=2 2 ... ... j=i i 总计: 1+2+ (i)2)1(+i i由于i 从1循环到n-1,因此,总的循环次数是4)1(12)12)(1(21212)1(1111112nn n n n i i i i n i n i n i -+++=+=+∑∑∑-=-=-=3.9 BF3.10#include <stdio.h> main(){ char c,i , ;long s =0; for(i=1;i<=10;i++) ; { c=getchar();if(…1‟<=c<=‟9‟ c>=‟1‟&&c<=‟9‟) putchar(c);else if(c= =‟0‟) putchar(…*‟);else s+=(long)c*c;printf(“\ns=%d\n”,s);}printf(“\ns=%l d\n”,s);}3.12 解:/* if 语句求解*/#include “stdio.h”void main(){ double I,p=0;printf(“Input I=”);scanf(“%lf”,&I);if(I>100) { p+=(I-100)*0.01; I=100; } if(I>60) { p+=(I-60)*0.015;I=60; }if(I>40) { p+=(I-40)*0.03;I=40; }if(I>20) { p+=(I-20)*0.05;I=20; }if(I>10) { p+=(I-10)*0.075;I=10; }p+=I*0.1;printf(“p=%f\n”,p);}/* switch语句求解*/#include “stdio.h”void main(){ double I, p=0;printf(“Input I=”);scanf(“%lf”,&I);if(I>=100) { p+=(I-100)*0.01;I=100; } swith((int)(I/10)){ case 10: case 9:case 8:case 7:case 6: p+=(I-60)*0.015;I=60;case 5:case 4:p+=(I-40)*0.03;I=40;case 3:case 2:p+=(I-20)*0.05; I=20;case 1:p+=(I-10)*0.075;I=10;default:p+=I*0.1;}printf(“p=%f\n”,p);}3.19 解:#include “stdio.h”void main(){ int s1,s2,s3; float av; char level;while(1){ printf(“Input three scores of one student:\n”); scanf(“%d%d%d”,&s1,&s2,&s3); if(s1<0||s2<0||s3<0) break; av=(s1+s2+s3)/3.0F; switch((int)(av/10)){ case 9:case 10: level=‟A ‟;break; case 8:level=‟B‟;break; case 7:level=‟C‟;break; case 6:level=‟D‟;break; default:level=‟F‟; }printf(“level=%c \n”,leve l); } }第四章 基本程序设计技术4.3 解:#include “stdio.h” void main(){ double s,a;int k,n;printf(“Input n=”);scanf(“%d”,&n); s=0;a=1;for(k=0;k<=n;k++) { s+=a;a=(n+1)*a;} printf(“s=%.0f \n”,s); }4.4 根据本章打印杨辉三角形例题中组合数的递推计算方法计算组合数:m n C ,要求输入n 、m 值,输出组合数。
java程序设计使用教程(第2版)答案

第一章习题答案一、简答题1.Java语言有哪些特点?主要用于能够哪些方面的软件开发?特点:(1)面向对象,(2)平台无关性,(3)分布式,(4)可靠性和安全性,(5)多线程,(6)简单性,(7)健壮性,(8)高性能,(9)灵活性。
适用范围:(1)所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等。
(2)计算过程的可视化、可操作化的软件的开发。
(3)动态画面的设计,包括图形图象的调用。
(4)交互操作的设计。
(5)Internet 的系统管理功能模块的设计,包括 Web 页面的动态设计、管理和交互操作设计等。
(6)Intranet上的软件开发(直接面向企业内部用户的软件)。
(7)与各类数据库连接查询的 SQL 语句实现。
(8)网络通信与移动通信,网络集成方面。
2.Java程序分为哪两类?各有什么特点?如何区分它们?Java语言程序分为两类:应用程序Application和小程序Applet,它们是利用Java语言生成的可运行代码中最常用的两种,两者都必须在Java虚拟机上运行。
Application更象我们平常用VB,VC等编写的桌面程序,多以控制台(CONSOLE)方式运行,当然也很容易实现窗口应用。
Applet则需要嵌入Web页面中,在支持Java虚拟机的浏览器上运行。
区分办法:应用程序Application中一定包括一个主方法main,而小程序Applet没有这个方法。
3.简述Java程序的运行过程。
一个Java源的运行需要经过三个步骤:(1)编辑源程序,产生.Java的源程序文件(2)运用Java虚拟机JVM将源文件编译为.class的字节码文件(3)根据程序的不同类型运行程序。
对于应用程序直接调用运行命令执行字节码文件,而对于小程序Applet,需要先将字节码文件嵌入HTML文件,然后用浏览器软件打开HTML文件。
4.什么是Java虚拟机?简述其工作机制。
Java虚拟机(Java Virtual Machine—JVM)是一种利用软件方法实现硬件功能的抽象化的计算机,它基于下层的操作系统和硬件平台,可以在上面执行Java的字节码程序。
C语言一、二级章节总结

第一章程序设计的基本概念·01-01.程序设计的基本概念计算机语言高级语言远离硬件 C语言--- C++ ---- JAVA低级语言贴近硬件机器语言汇编语言基本概念:1、机器语言:计算机能接受和处理的由0和1代码构成的二进制指令或数据,是面向机器的。
2、源程序:由高级语言编写的程序称为“源程序”。
3、目标程序:二进制代码表示的程序称为“目标程序”。
4、编译程序:5、C源程序:6、C语言源程序文件名的后缀是.c,经过编译后生成目标文件的后缀名是.obj,经过连接后生成的可执行文件后缀名是.exe。
例题:在Visual C++环境下运行一个C程序时,所运行的程序的后缀名是?7、程序设计一般包含以下步骤:1)确定数据结构;2)确定算法;3)编译;4)运行调试程序;5)整理并写出文档资料。
8、算法:特点:1)有穷性;2)确定性;3)可行性;4)有零个或多个输入;5)有一个或多个输出。
算法的描述方法:1)伪代码;2)一般流程图(传统的结构化流程图);3)N-S流程图;4)PDA图等。
传统的结构化流程图:开始框处理框输入/输出框判断框流程线连接点N-S流程图:9、结构化的语言的三种结构:1)顺序结构;2)选择结构;3)循环结构。
顺序结构:语句1 语句1语句2语句2一般流程图 N-S图选择结构:判断表达式 满足语句1 语句2循环结构:判断表达式当判断表达式满足a )当型循环 先判断,后执行 最少循环0次b )直到型循环 先执行,后判断 最少循环1次不满足语句1语句2满足不满足判断表达式不满足满足循环体循环体第二章 C语言基础知识·02-01.简单C语言的构成和格式例:#include “stdio.h”main(){float a,b,area;a=1.2;b=3.6;area=a*b;printf(“a=%f,b=%f,area=%f\n”,a,b,area);}1、命令行:1)命令行必须以“#”开头,最后不能加“;”号。
经典C++源程序

求数组最大值,最小值及其下标# include<iostream.h>void cout_max(void*p,int x,int n){int max=0,min=0;if(x==4){float*p1;p1=(float*)p;for(int i=1;i<n;i++){if(p1[i]>p1[max])max=i;if(p1[i]<p1[min])min=i;}cout<<"float型数组中:\n";cout<<"最大值为:"<<p1[max]<<"其下标为:"<<max<<endl;cout<<"最小值为:"<<p1[min]<<"其下标为:"<<min<<endl;}if(x==8){double*p1;p1=(double*)p;for(int i=1;i<n;i++){if(p1[i]>p1[max])max=i;if(p1[i]<p1[min])min=i;}cout<<"double型数组中:\n";cout<<"最大值为:"<<p1[max]<<"其下标为:"<<max<<endl;cout<<"最小值为:"<<p1[min]<<"其下标为:"<<min<<endl;}}void main(){float a[]={12.3,25.3,21,36,21.0,54.32,1,9,8.53,4};double b[]={12.3,60,25.3,21,21.0,54.32,1,0.56,9,8.53,4};cout_max(a,sizeof(a[0]),sizeof(a)/sizeof(a[0]));cout_max(b,sizeof(b[0]),sizeof(b)/sizeof(b[0]));}统计字母,数字等各类字符# include<iostream.h># include<string.h>void choose(char*p,int n){int sum1=0,sum2=0,sum3=0,sum4=0;for(int i=0;i<n;i++){if(p[i]>='A'&&p[i]<='z'||p[i]>='a'&&p[i]<='z')sum1++;if(p[i]==' ')sum2++;if(p[i]>='0'&&p[i]<='9')sum3++;elsesum4++;}cout<<"统计结果为:\n";cout<<"字母总数为:"<<sum1<<endl;cout<<"空格总数为:"<<sum2<<endl;cout<<"数字总数为:"<<sum3<<endl;cout<<"其他字符总数为:"<<sum4<<endl;}void main(){char ch[100];cout<<"请输入一段字符";cin.getline(ch,81);choose(ch,strlen(ch));}用调用函数,实现从两个数为输出较大者(要求用指针变量传递参数值# include<iostream.h>void cout_max(float*a,float*b){cout<<"最大数为:"<<((*a>*b)?*a:*b);cout<<endl;}void main(){float a,b;cout<<"请输入要比较的两个数:\n";cin>>a>>b;cout_max(&a,&b);}坐标系下的坐标转化为极坐标下的坐标# include<iostream.h># include<math.h>void cout_change(float&x,float&y){float c,q;x=sqrt(x*x+y*y);y=atan(y/x);}void main(){float x,y;cout<<"请输入直角坐标系下的坐标:\n";cout<<"x=";cin>>x;cout<<"y=";cin>>y;cout_change(x,y);cout<<"极坐标系下的坐标为:\n";cout<<"c="<<x<<endl;cout<<"q="<<y<<endl;}C++程序链表例题# include<iostream.h># include<string.h>struct node{char num[12];char name[20];int age;node*next;};struct LikedList{node*head;int size;};struct student{char num[12];char name[20];int age;};LikedList create(){LikedList list;node*p;p=new node;list.head=p;list.size=0;strcpy(p->name,"0");strcpy(p->num,"0");p->age=0;p->next=NULL;return list;}LikedList create(student*a,int n){LikedList list=create();list.size=n;node*p1,*p2;p2=list.head;for(int i=0;i<n;i++){p1=p2;p2=new node;strcpy(p2->num,(a+i)->num);strcpy(p2->name,(a+i)->name);p2->age=(a+i)->age;p1->next=p2;}p2->next=NULL;return list;}void search(LikedList&list,int a){node*p1,*p2;p2=list.head;int sum=0;for(int i=0;p2->next!=NULL;i++){p1=p2;p2=p2->next;if(p2->age==a){cout<<"在链表中找到一个这个年龄的学生,并已删除该结点!\n";p1->next=p2->next;delete p2;p2=p1;sum++;list.size--;}}if(sum!=0){cout<<"共删除"<<sum<<"个结点\n";}else{cout<<"无该年龄的学生,该结点已插入到链表尾端。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例3.1分别建立3×3、3×2和与矩阵A同样大小的零矩阵。
(1) 建立一个3×3零矩阵。
zeros(3)
ans =
0 0 0
0 0 0
0 0 0
(2) 建立一个3×2零矩阵。
zeros(3,2)
ans =
0 0
0 0
0 0
(3) 设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵。
A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A
zeros(size(A)) %产生一个与矩阵A同样大小的零矩阵
ans =
0 0 0
0 0 0
例3.2建立随机矩阵:
(1) 在区间[20,50]内均匀分布的5阶随机矩阵。
(2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。
x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
例3.3将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。
M=100+magic(5)
例3.4求4阶希尔伯特矩阵及其逆矩阵。
命令如下:
format rat %以有理形式输出
H=hilb(4)
H=invhilb(4)
format short %恢复默认输出格式
例3.5求(x+y)5的展开式。
pascal(6)
例3.6先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。
A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;...
11,18,25,2,19];
D=diag(1:5);
D*A %用D左乘A,对A的每行乘以一个指定常数
例3.7 求方阵A的逆矩阵,且验证A与A-1是互逆的。
A=[1,-1,1;5,-4,3;2,1,1];
B=inv(A);
A*B
B*A
例3.8 用求逆矩阵的方法解线性方程组。
⎪⎩
⎪⎨⎧=++-=++=++6278294532z y x z y x z y x
A=[1,2,3;1,4,9;1,8,27];
b=[5,-2,6]';
x=inv(A)*b
也可以运用左除运算符“\”求解线性代数方程组。
例如,本例也可以用下面的命令求解:
A=[1,2,3;1,4,9;1,8,27];
b=[5,-2,6]';
x=A\b
例3.9 用求特征值的方法解方程。
3x 5-7x 4+5x 2+2x-18=0
p=[3,-7,0,5,2,-18];
A=compan(p); %A 的伴随矩阵
x1=eig(A) %求A 的特征值
x2=roots(p) %直接求多项式p 的零点。