当前位置:文档之家› C#语言程序设计基础(第二版)郑宇军部分参考答案

C#语言程序设计基础(第二版)郑宇军部分参考答案

C#语言程序设计基础(第二版)郑宇军部分参考答案
C#语言程序设计基础(第二版)郑宇军部分参考答案

附录B 部分习题参考答案

第1章

1. A

2. D

3. D

4. A C

5.C# 源程序由代码和代码注释组成,代码又可以分为引用部分和主体部分。主体代码都在命名空间之中,包括各种类型及其成员的定义。

6.启动MSIL反汇编程序,通过菜单“文件| 打开”定位到系统Windows文件夹的“https://www.doczj.com/doc/bb7165633.html,\Framework\v2.0.XXXXX”子目录下(后5位表示.NET Framework 2.0的详细版本号),打开其中的mscorlib.dll文件,从中可查看System等命名空间下的类型组织,如图A.1所示:

图A.1 System程序集反汇编

第2章

1.AC

2. B

3.BD

4.CD

5. C

6. B

8.(1)结构类型和枚举类型都是复合类型。结构类型是多个简单值类型的组合,因而结构类型的变量就是多项内容的组合而成的一个实体。枚举类型则表示一组逻辑上相关联的内容,枚举类型的变量在某一时刻只体现其中的一项内容。

(2)值类型的变量直接包含自身的所有数据,每创建一个变量,就在内存中开辟一块区域;只有通过变量才能修改它所包含的数据。而引用类型的变量只存储对目标数据的引用,每创建一个变量,就增加一个指向目标数据的指针;有可能出现多个引用类型的变量指向同一份数据的情况,这时修改一个变量就会影响到其它所有的变量。

9.代码段的输出为:

10.程序的输出为:

11.参考源代码如下:

Console.WriteLine("SByte: {0} ~ {1}", SByte.MinValue, SByte.MaxValue); Console.WriteLine("Byte: {0} ~ {1}", Byte.MinValue, Byte.MaxValue);

Console.WriteLine("Int16: {0} ~ {1}", Int16.MinValue, Int16.MaxValue); Console.WriteLine("UInt16: {0} ~ {1}", UInt16.MinValue, UInt16.MaxValue); Console.WriteLine("Int32: {0} ~ {1}", Int32.MinValue, Int32.MaxValue);

//……

12.不可以,因为整数和枚举都是值类型,而数组转换要求数据元素的类型都是引用类型。

13.可以,但要利用装箱和拆箱技术,看下面的程序:

class Program

{

static void Main()

{

object[][] d = new object[3][];

d[0] = new object[] { 1, 2, 3 };

d[1] = new object[] { 1.5F, 2.5F, 3.0F };

d[2] = new object[] { 1.25, 2.5, 3.14 };

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

for (int j = 0; j < 3; j++)

Console.WriteLine(d[i][j]);

}

}

14.(略)

第3章

1.AD

2.AB

4.方法MyMethod1的重载形式不合法,因为访问限制修饰符和返回类型都不是方法的标识;而方法MyMethod2的重载形式合法。

5.方法的返回值在方法的执行代码中通过return语句得到,而输出型参数则需要在执行代码中赋值。它们都用于得到方法的执行结果,当方法只返回一个结果时通常使用返回值,而返回多个结果时应利用输出型参数;二者还可以同时使用。

6.程序的输出为:

7.对于局部变量、方法的输出参数,以及传递给方法的其它类型的参数,未赋值会导致编译错误。而对于类或结构的字段,以及数组元素,未赋值时其值等于类型的默认值,并且会导致编译警告。

8.程序主方法Main中的最后一行代码是错误的:

Console.WriteLine(OuterClass.inner.z);

因为在类OuterClass的定义中并未对InnerClass类型的变量inner进行初始化,因此只能使用其常数常量y,而不能使用其非静态的只读常量z。修改方法有二,一是将类InnerClass 的字段z定义为静态的,然后在Main方法通过类的原型访问该字段:

public static readonly int z = 13;

Console.WriteLine(OuterClass.InnerClass.z);

二是在类OuterClass的定义中对变量inner进行初始化:

public static readonly InnerClass inner = new InnerClass();

9.(略)

10.(1)重力加速度g,它可作为只读常量,在不同的环境下进行不同的构造初始化,如在地球上是9.8,而在月球上是4.9;(2)万有引力常量,它应作为常数常量,因为其值始终保持不变。

第4章

1. C

2. A

3.BC

4. A

5. A

6.设北京时间为bj,巴黎时间为paris(二者均为int类型的变量),那么从北京时间到巴

黎时间的转换表达式为:

paris = (24 + bj - 7) % 24;

而从巴黎时间到北京时间的转换表达式为:

bj = (paris + 7) % 24;

7.当两个操作数均为布尔类型时,与运算“&”和逻辑与运算“&”的求值效果相同,或运算“|”和逻辑或运算“||”的求值效果相同。但异或运算“^”不存在对应的条件逻辑运算。

8.(略)

9.和类型判断操作符is相比,as操作符强制要求左操作数为引用类型,而且表达式返回结果不同:如果左右操作数类型兼容,is运算返回布尔值true,而as运算将左操作数转换为右操作数所代表的类型,并返回其值;如果转换失败,is运算返回布尔值false,而as运算返回空值null。

在左右操作数类型兼容时,as类型转换表达式与一般的强制类型转换表达式效果相同;不同之处在于:类型转换失败时,as表达式将返回空值null,而不会引发异常。

10.程序的输出为:

第5章

1.CD

2. C

3. D

4. A

5. B

6. D

7.BC

8.代码如下(注意即使变量ch在循环体内赋值,也要事先声明,否则while子句中就不能使用该变量):

char ch = '0';

do

{

Console.WriteLine("请输入分数(按X键退出):");

ch = Console.ReadKey().KeyChar;

switch (ch)

{

case'5':

Console.WriteLine("优秀");

break;

case'4':

Console.WriteLine("良好");

break;

case'3':

Console.WriteLine("及格");

break;

case'2':

Console.WriteLine("不及格");

break;

case'1':

Console.WriteLine("不及格");

break;

default:

Console.WriteLine("请输入~之间的整数");

break;

}

}

while (ch != 'x' && ch != 'X');

9.可以,但break和continue语句都只能跳出本层循环,只有使用return语句或goto语句才有可能跳出外层循环,其中return语句会直接结束当前方法的执行。

10.参考代码如下(注意数据类型转换)

a) while循环:

int i = 1;

double s = 1.0;

while (i < 100)

s += (double)i++ / i;

b) do-while循环:

int i = 1;

double s = 1.0;

do

s += (double)i++ / i;

while (i < 100)

c) for循环:

double s = 1.0;

for(int i = 1; i<100; i++)

s += (double)i / (i + 1);

11.参考代码如下:

public static long Fib(int n)

{

if (n == 0)

return 0;

long x = 0, y = 1, tmp;

for (int i = 1; i <= n; i++)

{

tmp = y;

y += x;

x = tmp;

}

return y;

}

12.循环语句用于代码段的重复执行,其中while、do-while和for语句都是通过循环变量来控制循环的过程,它们之间可以互换,也就是说其中一种循环语句能够实现的功能,也可以通过另外两种来实现。而foreach语句则对于集合中的每个元素都执行一次循环,它的功能总是可以通过前三种循环语句来实现;反之则不然,即while、do-while和for语句所实现的功能未必都可以使用foreach语句来实现。

13.(略)

14.提示:字符'0'~'9'的对应ACSII代码为48~57。

15.(略)

第6章

1. D

2. A

3. D

4. B

5.AC

6.(略)

7.类的属性属于特殊的方法成员,它通过属性访问函数来控制对字段的访问。字段中包含了变量的值,在内存中占用存储区域,而属性则没有。和类的普通方法相比,属性可以包括两个内部方法,一个是get访问函数,而另一个是set访问函数。

8.代码中存在两处错误:

●静态的构造函数中不能访问非静态的字段x,而需要通过类的实例进行;

●常量字段z也是静态,因此在方法Main中不能通过类的实例访问,而需要通过类

的原型进行。

9.代码中没有错误。但它在属性的get访问函数中修改了所封装的字段值,这违反了访问函数的设计原则,容易引起误解。应避免使用这类代码。

10.(略)

11.(略)

第7章

1. C

2. A

3. B

4.AC

5.ABD

6.(略)

7.使一个类不能被创建实例的办法有:

●对该类只定义非公有的构造函数;

●将该类定义为抽象类。

8.this关键字可以用来访问当前对象;而base关键字则可以用来访问当前对象的基类对象,进而调用基类对象的成员。

9.代码中存在两处错误:

●在派生类B的属性X中不能访问基类A的私有成员base.m_x,可将其替换为A的

公有属性base.X,或将基类中m_x的修饰符改为protected。

●派生类B的属性Y在重载基类A的属性Y时,必须同时重载其get和set访问函

数。修改时要么为B的属性Y增加set访问函数,要么去掉A的属性Y中的set访问函数声明(注意不能在B中覆盖A的属性Z,因为它必须实现A的抽象成员)。

10.代码能够通过编译,但在逻辑上是错误的,因为A的构造函数中调用了B的构造函数,而B的构造函数又会调用基类A的构造函数,从而导致死循环(堆栈溢出)。这样A和B 都不能被创建实例。

11.(略)

第8章

1.BCD

2.AD

3. C

4. A

5. D

6.AD

7.参考源代码如下:

public static bool Quadratic(double a, double b, double c, out double x1, out double x2)

{

x1 = double.NaN;

x2 = double.NaN;

double d = b * b - 4 * a * c;

if (d < 0)

return false;

d = Math.Sqrt(d);

x1 = (d - b) / (2 * a);

x2 = (-d - b) / (2 * a);

return true;

}

8.(略)

9.可先用String.Trim方法删除首尾的空格,而后构造一个新的StringBuilder对象,将剩余字符中不为空格的字符添加到对象中。参见下面的代码段:

public static string TrimAll(string s)

{

char[] chs = s.Trim().ToCharArray();

StringBuilder sb = new StringBuilder(s.Length);

foreach (char ch in chs)

if (ch != ' ')

sb.Append(ch);

return sb.ToString();

}

10.参见下面的代码段:

public static StringBuilder PadLeft(StringBuilder sb, int count, char ch)

{

for (int i = sb.Length; i < count; i++)

sb.Insert(0, ch);

return sb;

}

public static StringBuilder PadRight(StringBuilder sb, int count, char ch) {

for (int i = sb.Length; i < count; i++)

sb.Append(ch);

return sb;

}

public static StringBuilder TrimStart(StringBuilder sb, params char[] chs) {

string str = new string(chs);

while (str.IndexOf(sb[0]) >= 0)

sb.Remove(0, 1);

return sb;

}

public static StringBuilder TrimEnd(StringBuilder sb, params char[] chs)

{

string str = new string(chs);

while (str.IndexOf(sb[sb.Length - 1]) >= 0)

sb.Remove(sb.Length - 1, 1);

return sb;

}

11.图书类信息及其输入控件可以是:书名(TextBox)、作者(TextBox)、出版社(ComboBox)、目录(RichTextBox)、是否附光盘(CheckBox)等。

第9章

1.ABCD

2. A

3. C

4.BC

5.BC

6.泛型类D的定义中存在错误,它的类型限制要求构造类型A要有默认的无参构造函数,但A是抽象类,它定义的默认构造函数仅供非抽象的派生类使用,而对自身不起作用。修改方法只能是取消D的类型限制,或者将A改为非抽象类。

7.程序的输出为:

8.普通类的方法成员中,方法参数、返回值、以及方法代码中的变量类型都必须是封闭类型(包括基础类型和泛型类的封闭构造类型);而对于泛型类的方法成员,使用的类型可以是封闭类型,也可以是开放类型,只要开放类型中未封闭的类型参数都在泛型类的定义中出现即可。

9.(略)

10.(略)

第10章

1.CD

2.AD

3. C

4. C

5.代码段的输出如下(注意除以null以及null除以0都不会引发异常):

6.不可以,因为将值为null的可空字符类型转换到字符类型时会发生异常。

7.是的,因为传递给泛型结构Nullable构造函数的参数总是值类型,而不允许是空值null。

8.(略)

第11章

1.AC

2.ABCD

3. D

4. B

5.AC

6.泛型类B的定义中存在错误。它继承了抽象泛型类A和泛型接口IB,就必须实现A定义的抽象方法和IB定义的接口方法。尽管类型B可以隐式地转换到类型A和IB,但B中定义的Add方法和抽象基类以及接口中的方法标识并不相同,因此没有满足继承要求。

7.类型推断的结果见下面的说明:

A.F(i); //不成功

A.F(i); //A.F(int)

A.F(i); //A.F(long)

A.F(s, i); //不成功

A.F(s, i); //A.F(short, int)

A.F(s, s); //A.F(short, int)

A.F(i, i); //不成功

A.F(i, i); //A.F(int, long)

A.F(sArray, s); //A.F

A.F(sArray, i); //不成功

A.F(iArray, i); //A.F(int[], long)

8.下面对泛型方法的调用不能简写,否则会引起歧义:

A.F(s, s);

A.F(i, i);

9.第2个与第1个、第7个和第5个泛型方法之间存在重复定义。

第12章

1.AD

2. C

3. C

4.(略)

5.90次

6.使用非默认的遍历器,通过遍历器方法参数来指定要输出的元素类型,在遍历器代码中比较集合元素类型是否与指定的类型一致。看下面的示例代码:

public IEnumerable ClassifyEnumerator(string type)

{

for (int i = 0; i < m_count; i++)

{

if (m_list[i].GetType().ToString() == type)

yield return m_list[i];

}

}

第13章

1. C

2. B

3.ABD

4.使用匿名方法的优点有:

●省去方法的声明部分,简化程序代码。

●通过外部变量的捕获,实现程序状态的共享。

●将封装匿名方法的委托对象作为其它方法的参数或返回值使用,从而能够以“变量”

的方式来使用“方法”,提高了应用程序的抽象性和可适应性。

5.程序的输出如下:

6.程序的输出如下(最后一行为空行):

7.参考代码如下:

class Program

{

static void Main()

{

int a = 1, b = 2;

DG dg1 = delegate()

{

int iTmp = a;

a = b;

b = a + iTmp;

Console.WriteLine("{0} + {1} = {2}", iTmp, a, b);

};

for (int i = 0; i < 30; i++)

dg1();

}

public delegate void DG();

}

8.提示:相关程序可从网上下载

第14章

1.ABCD

2.BCD

3.C、B

4. C

5.可以,指定Exception异常或不指定异常类型的catch语句能够捕获所有的异常;而使用Exception异常时,通过其GetType方法可以获得实际异常的具体类型。

6.程序的输出分别为:

7.(略)

第15章

1.BD

2. A

3. C

4. D

5.(略)

6.通过路径名打开文件的途径有:

●将文件路径名作为方法的参数,使用File类的静态方法Open来打开文件;

●将文件路径名作为构造函数的参数创建FileInfo对象,使用对象的Open方法来打

开文件;

●将文件路径名作为构造函数的参数创建FileStream对象,直接打开文件;

●将文件路径名作为方法的参数,根据不同的文件类型和操作方式,选用File类的

静态方法AppendAll、AppendText、OpenText、OpenRead或OpenWrite来打开文件。

7.程序的输出为:

8.设日志文件名为“MyProgram.log”,那么在程序每次退出时,可将当前运行时间以文本方式追加到文件最后一行。而在程序启动时,可先判断该文件是否存在,是则读取文件中的最后一行内容,并显示为上次运行的时间;否则表示文件为首次运行。参考源代码如下:

static void Main()

{

DateTime dt = DateTime.Now;

if (!File.Exists("MyProgram.log"))

{

Console.WriteLine("这是该程序首次运行");

}

else

{

StreamReader sr = File.OpenText("MyProgram.log");

string last = "";

while (!sr.EndOfStream)

last = sr.ReadLine();

Console.WriteLine("程序上次运行时间:" + last);

sr.Close();

}

StreamWriter sw = File.AppendText("MyProgram.log");

sw.WriteLine(dt);

sw.Close();

}

9.(略)

第16章

1. D

2. D

3.AD,C

4.BC

5.提示:在程序中使用Process类的GetCurrentProcess方法获取当前进程,并通过当前进程的Threads属性来判断进程中的线程数量。

6.也就是说,如果存在多个线程访问同一资源的情况,那么每个线程占用共享资源的时间越短,或是每个线程访问共享资源的频率越低,那么发生冲突(两个以上的线程同时要求使用共享资源)的概率就越小。

7.(略)

8.如果传递给Monitor的Enter和Exit方法的参数不是同一个对象,那么将无法保护共享资源,而且会引发SynchronizationLockException异常。

而由于这两个方法要求的参数为object类型,如果传递的是值类型的变量,那么在方法调用时会自动进行装箱转换,两次方法调用实际上是使用了两个不同的对象,这和前一种情况的结果是一样的。

9.程序最后一行的输出语句不会被执行。这是典型的死锁情况:线程t1占用了资源A,并请求资源B;而线程t2占用了资源B,并请求资源A。二者的请求都无法成功,资源A 和资源B也都不会被释放,那么两个线程就一直处于等待状态。一种解决办法是设置超时等待时间,如果请求仍不成功则释放已占用的资源。例如可以将线程t1的创建代码改为:

Thread t1 = new Thread(delegate()

{

m1.WaitOne();

Thread.Sleep(10);

if (m2.WaitOne(100, true))

{

x++;

y *= x;

m2.ReleaseMutex();

}

m1.ReleaseMutex();

});

第17章

1.没有错误。注意代码中只有非泛型的类PB存在分布定义。

2.程序A18_1.cs的输出为:

3.(略)

高级语言程序设计(VB)随堂练习答案DOC

高级语言程序设计(VB)随堂练习答案 第1章概述·1.1程序设计语言 当前页有1题,你已做1题,已提交1题,其中答对1题。 1. https://www.doczj.com/doc/bb7165633.html,是一种( )程序设计语言。 A. 面向事件 B. 面向属性 C. 面向对象 D. 面向过程 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 第1章概述·1.2程序设计 当前页有2题,你已做2题,已提交2题,其中答对2题。 1.把源程序代码翻译为目标程序代码可以使用的翻译方式为( )。 A. 嵌入方式 B. 运行方式 C. 连接方式 D. 解释方式或编译方式 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 2.编译程序时出现的错误称为( ) 错误。 A. 语法或编译 B. 运行 C. 逻辑 D. 计算 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 第1章概述·1.3建立简单控制台应用程序 当前页有3题,你已做3题,已提交3题,其中答对3题。 1.存储数据不属于数据处理功能。

答题:对. 错. (已提交) 参考答案:× 问题解析: 2.控制台应用程序至少有一个Main过程。 答题:对. 错. (已提交) 参考答案:√ 问题解析: 3.上机时,程序编译和连接成功后,系统自动生成以.exe为扩展名的可执行文件。 答题:对. 错. (已提交) 参考答案:√ 问题解析: 第2章基本数据类型与表达式·2.1基本字符集和词汇集 当前页有3题,你已做3题,已提交3题,其中答对3题。 1.下面选项中()是算术运算符。 A. % B. & C. Mod D. And 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 2.下面不合法的标识符是()。 A. Go_To B. Integer C. 姓名 D. Int1 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 3.在程序设计语言系统中具有固定语法含义的符号串称为标识符。 答题:对. 错. (已提交) 参考答案:× 问题解析: 第2章基本数据类型与表达式·2.2 基本数据类型

《高级语言程序设计》复习题及答案

一、选择题 1.以下叙述正确的是( ): A)在C程序中,main函数必须位于程序的最前面 B) C程序的每行只能写一条语句 C) C语言使用库函数实现输入输出操作 D)注释中的拼写错误会影响编译结果 2、以下说法中正确的是() A) C语言程序总是从第一个的函数开始执行 B) C语言程序总是从main()函数开始执行 C)在C语言程序中,要调用的函数必须在main()函数中定义 D)C语言程序中的main()函数必须放在程序的开始部分 3、下列选项种说法正确的是( ) A)函数由声明部分和执行部分两部分组成 B)语言中main函数一定在程序的开始部分 C)C语言程序总是从第一个定义的函数开始执行 D)C程序的每行中只能写一条语句 4、设有说明:int a;float b; char c; double d; 则表达式1.3*a+2*b*c+d*(int) 2.6 值的类型为( )。 A)doubleB) char C) floatD) int 5、C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 6、以下不正确的C语言标识符是( )。 A) ABC B) abc C)a_bc D) void 7、下列运算符中优先级最高的是( ) A)< B)+ C)&& D)!= 8、以下选项中属于C语言中合法关键字的是( ) A)Float B)abc C)int D)CASE 9、若x、i、j和k都是int型变量,计算下面表达式后,x的值为( ) x=(i=4,j=16,k=32) A)4 B)16 C)32 D)52 10、在C语言中,要求数据必须是整型的运算符是( ) A)/ B)+ + C)!=D) % 11、若整型变量x的值为8,则下列表达式中值为1的表达式是 A)x+=x-=x B) x%=x-1 C) x%=x%=3 D) x/=x+x 12、若w=1,x=2,y=3,z=4,则条件表达式“w > x? w : y< z ? y : z”的值是( ) A)4 B)3 C)2 D)1 13、有以下程序,程序运行后的输出结果是。 main() {inti=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }

Java语言程序设计基础篇前三章课后习题要点

第1章计算机、程序和Java概述 1.1(显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science和Programming is fun。 程序: 显示: 1.2(显示五条消息)编写程序,显示Welcome to Java五次 程序: 显示: 1.3(显示图案)编写一个程序,显示下面的图案:

程序: 显示: 1.4(打印表格)编写程序,显示以下表格: 程序: 显示:

1.5(计算表达式)编写程序,显示(9.5x4.5- 2.5x3)/(45.5- 3.5)的结果 程序: 显示: 1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果 程序: 显示: 1.7(近似求π)可以使用以下公式计算π: Π=4x(1-1/3+1/5-1/7+1/9-1/11+1/13+...) 编写程序,显示4x(1-1/3+1/5-1/7+1/9-1/11+1/13...)的结果。在程序中用1.0代替1 程序: 显示:

第2章基本程序设计 2.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换华氏温度,并显示结果。转换公式如下所示: Fahrenheit-=(9/5)*celsius+32 (华氏度=(9/5)*摄氏度+32) 程序: 显示: 2.2(计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱体的体积 面积=半径x半径xπ 体积=面积x高 程序: 显示:

2.3(将英尺转换为米)编写程序,读入英尺数,将其转换为米数并显示结果。一英尺等于0.305米。 程序: 显示: 2.4(将磅转换为千克)编写程序,将磅数转换为千克数。程序提示用户输入磅数,然后转换成千克并显示结果。1磅等于0.454千克。 程序: 显示: 2.5(财务应用程序:计算小费)编写一个程序,读入一笔费用与酬金率,就算酬金和总钱数。例如,如果用户读入10作为费用,15%作为酬金率,计算结果显示酬金为$1.5,总费用为$11.5. 程序:

《高级语言程序设计》答案

1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include int main() { int i,j,t; int max(int,int); int min(int,int); scanf("%d%d",&i,&j); if(i int main() { int max4(int,int,int,int); //对max4的函数声明 int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个数 printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者 return 0; } int max4(int a,int b,int c,int d) //定义max4函数 { int max2(int,int); //对max2的函数声明 return max2(max2(max2(a,b),c),d); //调用max2把作为函数值带回main函数} int max2(int a,int b) { return(a>b?a:b); //返回条件表达式的值,即a和b中的大者 } 3. 用递归调用的方法求5!。 #include int main() { int fac(int); int n; scanf("%d",&n);

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

程序设计基础(知识点)

第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。

它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,

2020年10月全国高级语言程序设计(一)自考试题及答案解析.docx

??????????????????????精品自学考料推荐?????????????????? 全国 2018 年 10 月高等教育自学考试 高级语言程序设计(一)试题 课程代码: 00342 一、单项选择题(本大题共20 小题,每小题 1 分,共 20 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括 号内。错选、多选或未选均无分。 1.下列不正确的转义字符是() . A. ′ ′ B. ′ ″ C. ′ \086′ D. ′ \0′ 2.下列运算符中,优先级最高的是() A. [] B.++ C.% D.&& 是 C 语言保留字的是 () 3.下列标识符中,不. A. char B. while C. min D. default 4.下列数据中,不.是 C 语言常量的是 () A. ′ \n′ B. ″ a″ C. e-2 D. 012 5.若定义了 int a; char b; float c ;,则表达式a*b-c 的类型是 () A. float B. int C. char D. double 6.若定义了 int a, x,y;,则下列语句中不.正确的是 () A. x=3 ,y=5 ; B. ++x ; C. x=y+=x*30 ; D. a=y+x=30 ; 7.调用函数时,若实参是一个数组名,则向函数对应的形参传送的是() A. 数组的长度 B.数组的首地址 C. 数组第一个元素的值 D. 整个数组元素的值 8.在 C 语言中,函数返回值的类型是由() A. 定义的函数类型决定 B.return 语句中表达式的类型决定 C.调用该函数的主调函数类型决定 D. 调用该函数时系统状态决定 9.若定义了 int b [][ 3]={ 1,2, 3,4, 5, 6, 7};,则 b 数组第一维的长度是 () A. 2 B. 3 C. 4 D.无确定值 1

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

高级语言程序设计答案

《高级语言程序设计答案 一、选择题(每题2分,共30分,请将答案写在后面的答题栏...上) 1-5 BDBBB 6-10 BBDCC 11-15 CDBAB 二、填空题(1-3题每空1分,4-8题每空2分,共20分) 1、对象,事件驱动 2、frm ,vbp 3、函数 过程 4、31 5、9 6、countn<5 n mod 3=1 and n mod 5=1 and n mod 7=1 8、7 7、*n s+1/f 三、综合题(每题5分,共25分) 1、 (2*y)/(a*x+b*y)(a*x-c*z) 2、(x+sqr(x^2+1))^(1/3) 3、30 60 4、7 5、1)建立界面。先建立窗体,再利用控件在窗体上创建各种对象。 2)设置属性。设置窗体或控件等对象的属性。 3)编写代码。编写对象的事件代码。 四、程序设计题(8+8+9,共25分) 1:x 的值由文本框输入,计算分段函数的值:y=???????≥<≤<≤<2 ,321,210,10,0x x x x 。 private sub command1_click( ) Dim x% x=text1.text if x>=2 then y=3 elseif x>=1 then y=2 elseif x>=0 then y=1 2:统计100以内被3整除的数比被5整除的数多多少。 Private Sub Command1_Click() Dim i%, s1%, s2% For i = 1 To 100 If i Mod 3 = 0 Then s1 = s1 + 1 If i Mod 5 = 0 Then s2 = s2 + 1 Next i

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

C语言程序设计基础测试题-答案

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2] 下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4] 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6] C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8] 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

C语言程序设计基础知识 习题一及参考答案

第一章:程序设计基础知识 一、单项选择题 1、以下( )是面向过程的程序设计语言。 A)机器语言B)汇编语言C)高级语言D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是( )。 A)设计数据结构和算法B)建立数学模型 C)编写程序D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是( )。 A)枚举法B)递推法C)分治法D)排序法 4、以下不属于算法基本特征的是( )。 A)有穷性B)有效性C)可靠性D)有一个或多各输出 5、以下描述中不正确的是( )。 A)程序就是软件,但软件不紧紧是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是( ) A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是( )。 A)递归法的关键是必须有一个递归终止的条件。

B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是( )。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(数据结构算法) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性) 11、用模块组装起来的程序被成为________结构化程序。(模块化) 12、采用自上而下,逐步求精的设计方法便于____________。(结构化和模块化) 三、应用题

《高级语言程序设计》期末考试试卷附答案

《高级语言程序设计》期末考试试卷附答案 一、选择题(共20题,每题3分,共60分) 1. 下列四个选项中,均是合法的整型常量的选项是() A.160 –0XFFFF 011 B. -0XCDF 01A 0XE C. -01 986,012 0688 D. -0X48a 2e5 0x 2. 下列四个选项中,均是不合法的浮点数的选项是() A.160.0.12 e3 B. 123 2e4.2 .e5C.18 0.0 123e4 D. e3. 234 1e3 3. 合法的C语言字符常数是() A.'\t' B. "A"C.54 D. A 4. 在C语言中,要求运算数一定是整型的运算符是() A./ B. ++C.!= D. % 5. 字符串常量”mine”的字符个数是() A.4 B. 5C.6 D. 7 6. 以下属于非法的C语言转义字符的是() A.'\b' B. '0xf'C.'\037' D. '\' 7. 若x、y、z均为int型变量,则执行以下语句后的输出是() x=(y=(z=10)+5)-5; printf("x=%d, y=%d, z=%d\n",x,y,z); y=(z=x=0,x+10); printf("x=%d, y=%d, z=%d\n",x,y,z); A. x=10, y=15, z=10 B.x=10, y=10, z=10 x=0, y=10, z=0x=0, y=10, z=0 C.x=10, y=15, z=10 D. x=10, y=10, z=10 x=10, y=10, z=0 x=10, y=10, z=0 8. 在以下一组运算符中,优先级最高的运算符是() A.<= B. =C.% D. && 9. 已知:int x; float y; 所用的scanf调用语句格式为: scanf( “x=%d, y=%f”, &x, &y ); 为了将数据10和66.6分别赋给x和y,正确的输入应当是() A.x=10, y=66.6<回车> B. 10, 66.6<回车> C.10<回车>66.6<回车> D. x=10<回车>y=66.6 <回车> 10. 已有如下定义的输入语句,若要求A1,A2,C1,C2的值分别为10,20,A和B,当从第一列开

第四章MCS-51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

C++语言程序设计基础考试卷.doc

1. 在面向对象的程序设计C++中, 当用cin> cout输入、输出时程序头部要() 2. 3. A、#include C、#include 类的概念是() A、对象的抽象。 C、同一类数据的集合。 C++源程序文件的扩展名为 A、. CPP B 、 D 、 B 、 D 、 # i nc1ude< i ostream. h> #include 同一类记录的集合。 所有对象的集合。 C、.DLL D 、 .EXE 有二维字符数组char s[4] [6] = ( "zhang” , " gao"," 4. cout?*s [2],屏幕上显示 A、gao B、tang 编译程序的功能是() tang” , ” wang” },执行程 C、g D 、 考试试卷 2007 — 2008学年2学期时间ioo分钟 C++语言程序设计基础课程64学时3学分考试形式:闭卷专业年级:总分100分,占总评成绩追% 注:此页不作答题纸,请将答案写在答题纸上 一、单选题(本题24分,每小题1分) A、将汇编语言程序转换为目标程序 B、将汇编语言程序转换为高级语言程序 C、将高级语言程序转换为目标程序 D、将高级语言程序转换为汇编语言程序 6,下面的函数声明中,哪一个是” void BC(int a, int b); ”的重载函数?() A、int BC(int a, int b) void BC(int a, char b) C^ float BC(int a, int b, int c = 0) D、void BC(int a, int b=0) 7.设&和b为整型变量,执行语句比(a=2+3,&*4),a+5;后a和b的值为 A、5, 10 B、20, 25 C、5, 25 D、5, 20

实验一基础汇编语言程序设计

实验一基础汇编语言程序设计 实验目的 1.学习和了解TEC-XP十六位机监控命令的用法; 2.学习和了解TEC-XP十六位机的指令系统; 3.学习简单的TEC-XP十六位机汇编程序设计。 实验内容 1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容; 2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。 3.学习联机使用TEC-XP教学试验系统和仿真终端软件。 实验要求 在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。 实验步骤 1.关闭电源,将大板上的COMl口与PC机的串口相连; 2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可; 3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。其它实验相同; 4.按一下“RESET”按键,再按一下“START”’按键,主机上显示: 5.用R命令查看寄存器内容或修改寄存器的内容 1.用R命令查看寄存器或修改寄存器内容 1)在命令行提示符状态下输入: R↙;显示寄存器的内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入: R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格, 也可有—个或数个空格 主机显示: 寄存器原值:xxxx 在后面输入新的值0036 再用R命令显示寄存器内容,则R0的内容变为0036。 2.用D命令显示存储器内容 在命令行提示符状态下输入: D 2000↙ 会显示从2000H地址开始的连续128个字的内容; 连续使用不带参数的D命令,起始地址会自动加128(即80H)。

高级语言程序设计作业及答案(2017.1)

《高级语言程序设计(https://www.doczj.com/doc/bb7165633.html,)》作业 2017.1 教学中心:新疆产业发展研究中心校外学习中心 专业层次: 高中升大专 学 号:2009 姓 名: 王 成 均 分 数: 注意事项:1. 本作业共五大题,满分100分; 2. 请将以上各项信息填写清楚,否则,作0分处理; 3. 所有答案直接做在答案栏上,做在其它地方无效。 一.判断题(如正确打√,否则,打×。) 1.源程序中的错误一般分为编译错误、运行错误和逻辑错误等三种。 2.控制台应用程序至少有一个Main 过程。 3.在程序设计语言系统中具有固定语法含义的符号串称为标识符。 4. 判别a 是否等于b ,若a=b ,则输出字符串 “a is equal to b ”的块结构条件语句为: If a=b Then WriteLine(“a is equal to b ”) End If 5. 输入结构变量的值就是输入该变量的各个元素的值。 6.若某个模块中以关键字private 定义函数过程,则该函数过程只能在该模块中使用。 7. 关键字private 用于声明私有成员。私有成员可以在类中和类外访问。 8.在程序运行期间,用户可以用文本框显示信息。文本框接受输入的内容的属性是Text 。 9.列表框ListBox 中项目的序号从1开始到Listcount 结束。 10.以数据流的方式对文本文件中的数据进行读/写操作,需要StreamReader 类和StreamWriter 类。 答案栏: 1.√ 2.√ 3.√ 4.√ 5.√ 6.× 7.√ 8.× 9.√ 10.×二.单项选择题 1.下列变量名中错误的是( )。 A. n B. 名称 C. ab# D.“年龄” 2.设X 为整型变量,不能正确表达1< X < 5的逻辑表达式是( )。 A. 1< X <5 B. X=2 or X=3 or X=4 C. 1=5) 3.设有数组说明语句:Dim c( 10) AS Integer ,则下面表示数组c 的元素选项中( )是错误的。 A. c(i-1) B. c(5+0.5) C. c(0) D. c(11) 4.在过程的形式参数前面加上关键字( ),则该参数说明为引用参数。 A. Val B. ref C. Byref D. ByVal 5. 设已定义函数过程f ,它有三个实型传值参数;设a,b 和c 为实型变量,则调用该函数的正确形式为( )。 A. f B. f( a+b, b+c ) C. f ( a+b, b+c ,c+a ) C. f a+b, b+c, c+a 6. 若使命令按钮不可见,可以设置Visible 属性的值为( )。 A. False B. True C. T D. F 7.要使单选按钮RadioButton 处于选中或未选中状态,需由( )属性来决定。 A. Show B. List C. Text D. Checked 8.要删除列表框中的某一个项目,需要使用( )方法。 (密封线内不答 题 )

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