当前位置:文档之家› C语言程序设计专题复习与细节整理学习

C语言程序设计专题复习与细节整理学习

C语言程序设计专题复习与细节整理学习
C语言程序设计专题复习与细节整理学习

目录

1.动态内存分配 (1)

2.结构 (2)

3.结构指针 (2)

4.递归函数 (3)

5.宏定义 (3)

6.文件包含 (4)

7.条件编译 (5)

8.外部变量,多文件 (6)

9.函数指针 (7)

10.typedef的用法 (8)

11.链表 (8)

12.图形程序设计 (8)

13.算法分析 (10)

1.动态内存分配

(1)动态内存分配函数malloc()

函数原型:void* malloc(unsigned size)

申请成功,返回指向所分配内存空间的起始地址的指针;申请失败,返回NULL。

注意:void* 类型要强制转化成相应的类型如(int*)

例如: if ((p = (int*) malloc (n*sizeof(int)) == NULL){} (2)计数动态存储分配函数calloc()

函数原型:void* calloc(unsigned n, unsigned size)

函数功能:在内存的动态存储区中分配n个连续空间,每个存储空间的长度为

size,并且分配后还把存储块里全部初始化为0

申请成功,返回指向所分配内存空间的起始地址的指针;申请失败,返回NULL。

例如:if ((p = (int*) calloc (n, sizeof(int))) == NULL){}

(3)动态存储释放函数free()

注意分配了就要释放,释放后就不能再访问。

只能还申请来的空间的首地址

(4)分配调整函数realloc()

函数原型: void* realloc ( void* ptr, unsigned size)

函数功能:更改以前已经分配到内存空间的指针如指针p的内存分配。将开辟

的空间大小变为了size,新开辟的空间与以前size大小的数据一样。

注意分配成功不能再用ptr了,要用新的指针。

(5) char *str = “Hello”;正确,将str指向一个常量字符串,但是无法修改。

char str[] = “Hello” char str[10] = “Hello”正确,相当于将字符串常量存储在str分配的空间中,可以修改。

char *str : 变量指针; str =“Hello”,将地址赋给变量指针,正确

char *str[10]; 常量指针 str =“Hello”,不可以,必须strcpy(),而

char *str[] = “HELLO”可以的原因是,这是初始化,不是赋值。

char *str; 不可以直接用指针来scanf,如scanf(“%d”,str);因为,str没有存储空间,必须给str分配一段内存空间才可以。

输出的话printf(“%s”,str);只要一个指针即可,会到’\0’为止

2.结构

struct student{

int num;

char name[20];

};

(1)定义结构变量: struct student s1, s2; //struct student 表示一个新类型结构变量初始化: struct student s1 = {100, “xx”};//初始化表

struct student s1 ={.name = “xx“};

结构变量之间可以赋值: s1 = s2; //类型相同

s1 = (struct student){100,“xx”}; //这样也行

结构变量访问成员: s1.num https://www.doczj.com/doc/3917238674.html, 嵌套结构:class1.student[1].num (2)结构变量作为函数参数:

与数组不同注意结构变量的名字并不是结构变量的地址。

(3)结构的嵌套定义, 嵌套定义时,必须先定义成员的结构类型,在定义柱结构类型.

(4)结构数组:

struct class{

struct student students[50]; //定义结构数组

};

注意:结构数组之间所有元素都属于相同的结构类型,因此数组之间可以相互

赋值。如 students[1] = students[2];

3.结构指针

(1)比如:

struct student *p; //p是指向结构的指针

p = (struct student*) malloc (sizeof(struct student));

(2)结构指针的值实际上是结构变量的首地址,即第一个成员的地址。

与数组不同注意结构变量的名字并不是结构变量的地址。

(3)使用结构指针的方法:

p = &s1; //让p指向结构变量s1 注意取地址符,结构数组就不要了

或者给p开辟一段新的内存空间来读入数据:

p = (struct student*) malloc (sizeof(struct student));

(4)用指针变量访问结构成员的方法:

(*p).num; 相当于 s1.num; 注意要加括号,否则会成为*(p.num)

p->num; //一般都用这样来访问

(5)结构指针作为函数参数

void func(struct student *p); //函数声明

func(&s1); // 函数调用,传地址

若是结构数组struct students[50];

那么函数调用的时候是:func(students); //数组名就是地址

同时注意函数中用指针访问结构成员。

如果需要保护传?的结构不被函数修改

? const struct point *p

?返回传?的指针是?一种套路

(6)结构指针定义时的问题:https://https://www.doczj.com/doc/3917238674.html,/topics/390595592

typedef struct Node *PtrToNode;

这个定义其实编译并不需要知道struct node具体的结构,仅仅是定义了一个

指针。只有你在程序中使用到了struct Node,那么编译器才会要知道struct

Node的结构,

(7) 一些优先级的问题:

*优先级很高 ->是不可分割的一部分

*p++; //*的优先级高于++,先取*p,然后,p++后移;

++p->num 先取p->num,然后将(p->num)加1,字符?数字?

不是(++p)->num

4.递归函数

递归出口与递归式子,一定要有递归出口

5.编译预处理

(1)gcc 编译的四大过程(预处理-编译-汇编-链接),

(2)预处理命令(文件包含、宏定义、条件编译)

(3)预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

(4)编译工作的任务之一就是语法检查,预处理不做语法检查;

6.宏定义

(1)基本宏定义

#define PI 3.1415 //#define 宏名宏定义字符串(后面没有分号,否则分

号也会被替换进去)

编译预处理指令,编译之前,将所有出现宏名的地方全部替换,

宏的值后面出现的注释不会被当作宏的值的一部分

允许嵌套定义:#define S PI*r*r //PI是前面已经定义的

(2)带参数的宏定义(可以实现简单的函数)

#define MAX(a,b) a>b? a:b

X= MAX(x,y); 宏替换过程是将a与b用x和y替换(得到x>y? x:y),然后MAX

用后面的字符串替换,替换后是这样: x = x>y? x:y;

在编译时如果遇到MAX,并且后面带括号,并且括号中的参数个数与定义的相符,

那么就将括号中的参数换到定义的内容里去,然后替换掉原来的内容。

宏定义时,每个参数都要加括号。

#define SQR(x) x*x

Y= SQR(x+y) ----> Y =x+y*x+y

#define SQR(x) (x)*(x)

Y= SQR(x+y) -- Y = (x+y)*(x+y)

宏CTOD将数字字符转换成相应的十进制整数,-1表示出错。

#define CTDO(c) (((c)>=‘0‘) && ((c)<= ‘9’)? c-‘0’:-1)

参数要带括号,整个值也要带括号

#define MIN(A,B) ((A) < (B) ? (A) : (B))

(3)宏比函数的优点:

更为重要的是函数的参数必须声明为特定的类型。所以函数只能在类型合适的

表达式上使用。反之这个宏怎可以适用于整形、长整型、浮点型等可以用于>来

比较的类型。宏的参数与类型无关的

宏函数不能出现递归

(4)宏替换:

在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。

如果是,它们首先被替换。

替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值替

换。

最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。

如果是,就重复上述处理过程。

(5)宏定义写在函数的花括号外边,作用域为其后的程序,所以通常写在文件的最开头;

7.文件包含

#include<需要包含的文件名>

到c系统设置好的include文件夹中寻找指定文件

#include“需要包含的文件名”

先到当前工作文件夹寻找,若找不到再到系统的include文件夹中寻找

头文件怎么写?

(1)define 保护

#ifndef _HEADERNAME_H //如果if没有no定义了def xxx

#define _HEADERNAME_H //就定义#define xxx

...//(头文件内容)

#endif 可以防止重定义//结束end如果if

(2)通常,每一个.c文件(C源文件)都有一个对应的.h文件(头文件),也有一些例外,如单元测试代码和叧包含main()的.c文件。

(3)头文件写些什么?

头文件应该只用于声明,而不应该包含或生成占据存储空间的变量或函数的定义。

#ifndef _HEADER_H

#define _HEADER_H

extern void Foo1(); /*函数声明*/

extern int a1; /*外部变量声明*/

extern int a1 = 1; //外部变量定义, error

struct A; /*前置声明*/

typedef struct ;

{ int i;

struct A m;

}B; /* typedef */

#define PI 3.14 /*宏定义*/

#define SUM(x,y) (x) + (y) /*带参数的宏*/

void Foo2() //函数定义,error

{ }

int a2; //全局变量定义,error

#endif

//oneFile.c

#include "header.h"

int a1 = 0; /*defination 正确,在头文件中声明了*/

(4)为什么头文件中不能有定义?

// 头文件header.h

#ifndef _HEADER_H

#define _HEADER_H

char school[] = “大学”;

#endif

//oneFile.c

#include "header.h"

//otherFile.c

#include "header.h" link-time error:"multiple definition of

8.条件编译

#define DEBUG/*此时#ifdef DEBUG为真*/

//#define DEBUG 0 //此时DEBUG 为0 ,但是 ifdef DEBUG 仍然为真

int main()

{

#ifdef DEBUG //也可以 #ifndef DEBUG

代码段A;

#else

代码段B;

#endif

代码段C;

return 0;

}

这样就可以实现debug功能,每次要输出调试信息前,只需要#ifdef DEBUG判断一次。不需要了就在文件开始定义#define DEBUG 0

代码段不应被“注释掉”(comment out)。当源代码段不需要被编译时,应该使用条件编译来完成

9.外部变量、静态全局变量、静态函数、多文件程序的组织

(1)一个大程序可有几个程序文件模块组成

(2)外部变量

全局变量在整个程序所有的文件模块中起作用,如果在每一个文件模块中都定义一次局部变量,多文件链接时会产生一个变量重复定义的错误。解决方

法是,全局变量在某个模块中定义一次,如果其他模块要使用该全局变量,需

要通过外部变量的声明,程序链接时会同意指向全局变量定义的模块。

外部变量声明格式:

extern 变量名表; //只起声明作用,不定义存储单元

extern用在变量声明中常常有这样一个作用:你要在*.c文件中引用另一个文件中的一个全局的变量,那就应该放在*.h中用extern来声明这个全局变

量。extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个

标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你

要放行!”

extern int a;//声明一个全局变量a

int a; //定义一个全局变量a

extern int a =0 ;//定义一个全局变量a 并给初值。一旦给予赋值,一定是定义,定义才会分配存储空间。

定义只能出现在一处,extern int a可以出现很多次。

(3)静态全局变量

静态全局变量可以把变量的作用范围仅局限于当前的文件模块中。

(4)函数与程序文件模块

如果要让一个文件模块中调用另一个模块中的函数,就需要对函数进行外部声

明。声明格式:

extern 函数类型函数名(参数说明表)//事实上extern没有什么用

静态函数:

static 函数类型函数名(参数表说明)

将函数的适用范围限制在当前文件模块内。

(5)静态局部变量被编译器放在全局存储区.data。静态局部变量如果没有被用户初始化,则会被编译器自动赋值为0,以后每次调用静态局部变量的时候都用上次

调用后的值。这个比较好理解,每次函数调用静态局部变量的时候都修改它然

后离开,下次读的时候从全局存储区读出的静态局部变量就是上次修改后的值。

10.函数指针

(1)函数指针定义的一般格式:

类型名(*变量名)(参数类型表);

例如: int (*funptr) (int, int);

funptr是一个函数指针,他可以指向有两个整形参数而且返回值类型是int的函数。

(2)通过函数指针调用函数

int fun(int x, int y){return x + y;};

int (*funptr) (int, int);

//如果是int * funptr(int,int)是一个返回值为int*的函数

funptr = fun;

调用函数的方法: (*funptr)(3, 5); 等价于 fun(3, 5);

funptr(3,5)这样可不可以?

还是:赋值用:funptr = fun;使用时:(*funptr)(3,5)(3)函数指针作为函数的参数

double (*funp) (double); // 函数指针

funp = fun;

cal(funp, 1, 2); //将函数指针作为参数给函数cal调用

double cal(double (*funp)(double), int x, int y); //函数声明

应用举例:

bool Greater2(int n1,int n2) {return n1 > n2;}

bool Greater1(int n1,int n2) {return n1 < n2;}

bool Greater3(double d1,double d2){return d1 < d2;}

template

void mysort(T1* p1, T1* p2, T2 Pred)

{

for (T1* ptr1 = p1; ptr1 < p2; ++ptr1){

for (T1* ptr2 = ptr1+1; ptr2 < p2; ++ptr2){

if (!Pred(*ptr1,*ptr2)){

T1 temp = *ptr1;

*ptr1 = *ptr2;

*ptr2 = temp;

}

}

}

}

mysort(an,an+NUM,Greater1); //从小到大排序

mysort(an,an+NUM,Greater2); //从大到小排序

(4)这是什么意思: int (*funptr[5])(int a, int b); 函数指针数组

if ( a==0 )a0(); else if ( a==1 )a1();else if ( a== 2 )a2();

怎么改?

void (*fa[])() = {a0,a1,a2};

if ( a>=0 && a < sizeof(fa)/sizeof(fa[0]))(*fa [a])();

重要例子:

11. Typedef的用法

(1)typedef <已有类型名> <新类型名>;

typedef char* string;

string p1; <====> char *p1;

(2)一般步骤:

第一步:定义变量 int i;

第二步:将原来的变量名改成新类型名将i改成INTEGER;变成 int INTEGER

第三步:在前面加上typedef 变成 typedef int INTEGER;

(3)定义一个具有10个整型元素的数组类型NUM:

第一步:定义变量 int num[10];

第二步:将原来的变量名num改成新的类型名NUM, int NUM[10];

第三步:加上typedef ,即为 typedef int NUM[10] ;

(4)如何定义如下函数的指针类型 FunPtr?void fun(int a, int b);

第一步:定义函数指针变量 void (*funptr)(int a, int b);

第二步:改变量名 void (*FunPtr)(int a, int b);

第三步:加上typedef typedef void (*FunPtr)(int a, int b);

那么:FunPtr fptr; <==> void (*fptr)(int a,int b);

(5) char * a[5] 与 char (*a)[5]

Typedef char(*AP)[5] 指向一个(指向长度为5的字符数组的指针)的指针

(5)int* p1,p2; //p1是指针,p2是int类型

int *p1,*p2 //这样才表示两个指针

typedef int* POINT;

POINT p1,p2; //这样表示两个指针,不容易犯错误。

12.图形程序设计

(1)在Main()函数中,首先要调用InitGraphics()来初始化图形窗口,以便绘制图形

(2)MovePen(x, y)将把画笔移到(x,y)——画笔当前位置.

GetCurrentX() 获得当前画笔位置

(3)DrawLine(dx, dy);其中,dx和dy是相对于画笔当前位置的偏移量。

假设画笔当前位置是(x,y),则该函数从(x,y)到(x+dx, y+dy)画一条直线。

画完直线后,画笔当前位置移到(x+dx,y+dy)。

(5)DrawArc(r, start, sweep)

(6)DrawTextString(string)从当前位置开始输出文本(字符串)string,string 是字符串指针。

(7)函数sprintf()可将格式化数据输出到一个缓冲区中,形成一个字符串:

(8)回调函数

Main()函数结束时就进入消息循环,当事件发生时,回来调用鼠标,键盘,定

时器,(要不要再加一个字符)回调函数。

1. 给将来会发生事件的地方注册一个回调函数.

2. 当事件发生时,该回调函数被调用(执行).

关于交互的四类回调函数原型:

键盘消息回调函数 void KeyboardEventProcess(int key, int event);

字符消息回调函数 void CharEventProcess(char c); c表示按键的ASCII码

鼠标消息回调函数

void MouseEventProcess(int x, int y, int button, int event);

定时器消息回调函数

void TimerEventProcess(int timerID);/*timerID定时器号-哪个定时器触

发了消息*/

定义键盘消息回调函数指针类型

typedef void (*KeyboardEventCallback) (int key, int event);

直接举例怎么用吧:

比如,对键盘消息做出响应:

在 main()函数中,写上下面这条语句,注册键盘消息回调函数

registerKeyboardEvent(KeyboardEventProcess);

//参数是一个键盘消息回调函数,传的是指针

typedef void (*KeyboardEventCallback) (int key, int event); //新类型

void registerKeyboardEvent(KeyboardEventCallback callback);

注册键盘消息回调函数——告诉系统用哪个函数来处理键盘消息

当程序受到键盘的消息时,就会去调用回调函数,这个回调函数是程序员自己写的,让程序员可以根据不同的消息,实现不同的功能

注册函数已在系统中定义,直接调用即可;回调函数需要自己写。

void KeyboardEventProcess(int key,int event)

/*每当产生键盘消息,都要执行 key表示哪个键,event表示按下或松开等事件*/ {

switch (event) {

case KEY_DOWN:

switch (key){

case VK_F1:/*F1: 随机生成直线*/

}

}

记一下:

字符消息:

typedef void (*CharEventCallback) (int key);

void registerCharEvent(CharEventCallback callback);

鼠标消息

typedef void (*MouseEventCallback) (int x,int y,int button,int event);

void RegisterMouseEvent(MouseEventCallback callback);

定时器消息:

?typedef void (*TimerEventCallback) (int timerID);

?void RegisterTimerEvent(TimerEventCallback callback);

?void startTimer(int timerID, int timeinterval);

/*启动定时器,timerID表示某个定时器,timeinterval表示定时间隔*/

?void cancelTimer(int timerID);

/*关闭某个定时器*/

13.算法分析

(1)算法效率的度量

首先算法设计要求:正确性,可读性,健壮性(输入数据不合法时,算法能做

出相应的处理),时间效率高,存储量低。

(2)算法时间复杂度:

相关的:算法采用的策略,方法(根本);问题规模(n的大小);硬件;软件

算法的时间复杂度,记作:T(n) = O(f(n))(即大O记法)

一般都是做坏情况下的时间复杂度

(3)算法的空间复杂度S(n)是对算法在运行过程中,临时占用存储空间大小的量度。

(4)查找算法:

线性查找法,知道比较的顺序

二分查找法:只适用于已经排好序的数组O(log2N)

int i, a[N], searchKey, low, high, middle, flag;

low=0; high=N-1; flag=0;

while (low<=high){ //递归出口

middle=(low + high)/2;

if (searchKey == a[middle])

{

flag=1;

printf(“Found value in a[%d]\n”, middle);

break;

}

else if (searchKey < a[middle])

high=middle-1;

else

low=middle+1;

}

if (flag==0) printf(“Value not found\n”);

(5)排序算法

三个排序中,只有选择排序是不稳定排序,冒泡与归并是稳定的

选择排序

找出a[i]-a[N-1]之间的值最小的数组元素下标,才交换

for(i = 0; i < n-1; i++){

index = i;

for (j = i+1; j < n; j++){

if (a[j] < a[index]) index = i; //找最小元素的

}

temp=a[index]; a[index]=a[k]; a[k]=temp;

}

演示:

第一次选择:1 6 2 8 7 4 5

第二次选择:1 2 6 8 7 4 5

第三次选择:1 2 4 8 7 6 5

冒泡排序

for (i=0; i

for (j=0; j

if (a[j]>a[j+1])小数上冒大数下沉每轮过后最大的数将沉到底

{ //等于的时候不交换是这样才稳定的吗??

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

}

演示:每轮都是相邻两个元素比较

归并排序(每一层N次,一共logN层,所以时间按复杂度O(NlogN))

归并排序就是一个典型的分治法的例子,将一个数列分成两部分,分别排序,然后合并(不断地从两个数组中的第一个元素选择较小者,直到整个数组被填满)。

平均时间:

)

log

(

2

n

n

o

最坏时间:

)

(2n

o

,辅助空间

)

(log

2

n

o

算法描述:首先判断数组大小,若无元素或只有一个元素,则数组必然已被排序;若包含的元素多于1个,则执行下列步骤:

step1: 把数组分为大小相等的两个子数组;

step2: 对每个子数组递归采用归并算法进行排序;

step3: 合并两个排序后的子数组。

void Merge (int array[], int arr1[], int n1, int arr2[], int n2) {

int p, p1, p2;

p = p1 = p2 = 0;

while (p1 < n1 && p2 < n2) {

if (arr1[p1] < arr2[p2])

array[p++] = arr1[p1++];

else

array[p++] = arr2[p2++];

}

while (p1 < n1) array[p++] = arr1[p1++];

while (p2 < n2) array[p++] = arr2[p2++];

}

void SortIntegerArray (int array[], int n)

{

int i, n1, n2, *arr1, *arr2;

if (n > 1) {

n1 = n / 2;

n2 = n – n1;

arr1 = NewArray (n1, int);

arr2 = NewArray (n2, int);

for (i = 0; i < n1; i++) arr1[i] = array[i];

for (i = 0; i < n2; i++) arr2[i] = array[n1 + i];

SortIntegerArray (arr1, n1);

SortIntegerArray (arr2, n2);

Merge (array, arr1, n1, arr2, n2);

FreeBlock (arr1);

FreeBlock (arr2);

}

}

高级语言程序设计综合复习资料-考试必备

C语言程序设计综合复习资料 要求掌握的章节: 第1章、第3章~第8章、 第10章(前4节)、第11章(前6节)重点章节: 第3章~第8章、第10章(前4节) 难点章节: 第8章、第10章(前4节) 考试题型: ①选择题(填空题)(20%) ②读程序题(40%) ③编程序题(40%)第1章C语言概述一、选择题 1.能将高级语言编写的源程序转换为目标程序 的软件是 A)汇编程序B)编辑程序C)解释程序D)编译程序 2.在一个C程序中 A)main函数必须出现在所有函数之前B)main 函数可以在任何地方出 现 C)main函数必须出现在所有函数之后D)main 函数必须出现在固定位 置 3.C语言中用于结构化程序设计的三种基本结 构是 A)顺序结构、选择结构、循环结构B)if、switch、break C)for、while、do-whileD)if、for、continue 4.C语言程序的基本单 位是 A)函数B)过程C)子例程 D)子程序 二、填空题 1.C语言程序总是从函 数开始执行。 2.C语言是种面向 _____的程序设计语言, 其程序的基本单位是。. 3.C语言中的函数由、 两部分组成。 4.结构化程序设计中所 规定的三种基本控制结 构是、和。 第3章数据类型、运 算符与表达式 一、选择题 1.下列关于C语言用户 标识符的叙述中正确的 是 A)用户标识符中可以出 现下划线和中划线(减 号) B)用户标识符中不可以 出现中划线,但可以出现 下划线 C)用户标识符中可以出 现下划线,但不可以放在 用户标识符的开头 D)用户标识符中可以出 现下划线和数字,它们都 可以放在用户标识符的 开头 2.C语言中基本数据类 型有 A)整型、实型、逻辑型 B)整型、字符型、逻辑 型 C)整型、实型、字符型 D)整型、实型、字符型、 逻辑型 3.在计算机中,一个字 节所包含二进制位的个 数是 A)2B)4C)8D)16 4.用8位无符号二进制 数能表示的最大十进制 数为 A)127B)128C)255D) 256 5.在计算机系统中,存 储一个汉字的国标码所 需要的字节数为 A)1B)2C)3D)4 6.在C语言中,char 型数据在内存中的存储 形式是 A)原码B)补码C)反 码D)ASCII码 7.十六进制数100转换 为十进制数为 A)256B)512C)1024D) 64 8.十六进制数7A转化 成八进制数是 A)123B)122C)173D)17 2 9.十进制数32转化成十 六进制数是 A)20B)ffC)10D)21 10.与十进制数511等 值的十六进制数为 A)1FFB)2FFC)1FED)2F E 11.以下选项中可作为C 语言合法整数的是 A)10110BB)0386C) 0XffaD)x2a2 12.以下选项中合法的实 型常数是 A)5E2.0B)E-3C).2E0D) 1.3E 13.依据C语言的语法 规则,下列()是用户定 义的合法标识符。 A)intB)INTC)jin#2D)8f 14.依据C语言的语法 规则,下列合法标识符是 A)ElseB)elseC)user$2D )5_examp 15.以下不正确的字符常 量是 A)'8'B)'\xff'C)'\887'D)'' 16.以下不正确的字符常 量是 A)'\0'B)'\xgg'C)'0'D)'a' 17.以下选项中不合法的 八进制数是 A)01B)077C)028D)00 18.下列运算符优先级最 高的是 A) B)+C)&&D)!= 19.若有说明: chars1='\067',s2='1';则 变量s1,s2在内存中各占 的字节数是。 A)11B)41C)31D)12 20.以下不能定义为用户 标识符的是 A)scanfB)VoidC) _3com_D)inte 21.在C语言中,可以 作为用户标识符的一组 标识符是 A)voiddefineWORDB)a s_b3_224Else C)Switch-wercaseD)4b DOSIG 22.若有:intx=1,n=5;则 执行语句x%=(n%2)后, x的值为 A)3B)2C)1D)0 23.设所有变量均为整 型,则表达式 (a=2,b=5,a++,b++,a+b) 的值是

C++语言程序设计复习题

《C++程序设计》复习题 一、选择题 1.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( ) A、类 B、对象 C、函数体 D、数据块 2.面向对象的程序设计语言必须具备的关键要素是( ) A、抽象和封装 B、抽象和多态性 C、抽象、封装、继承和多态性 D、抽象、封装和继承性 3.类的构造函数被自动调用执行的情况是在定义该类的( ) A、成员函数时 B、数据成员时 C、对象时 D、友元函数时 4.设有函数模板 template Q Sum(Qx,Qy){ return(x)+(y); } 则下列语句中对该函数模板错误的使用是( ) A、Sum(10,2); B、Sum(5.0,6.7); C、Sum(15.2f,16.0f); D、Sum(″AB″,″CD″); 5.已知类A是类B的友元,类B是类C的友元,则( ) A、类A一定是类C的友元 B、类C一定是类A的友元 C、类C的成员函数可以访问类B的对象的任何成员 D、类A的成员函数可以访问类B的对象的任何成员 6.静态成员函数没有( ) A、返回值 B、this指针 C、指针参数 D、返回类型 7.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中( ) A、都是虚函数 B、只有被重新说明时才是虚函数 C、只有被重新说明为virtual时才是虚函数 D、都不是虚函数 8.下面叙述不正确的是( ) A、派生类一般都用公有派生 B、对基类成员的访问必须是无二义性的 C、赋值兼容规则也适用于多重继承的组合 D、基类的公有成员在派生类中仍然是公有的 9.在C++中实现封装是借助于( )

语言程序设计复习题

《C语言程序设计》复习题库 1、计算下面公式的值。T=1/1!+1/2!+1/3!+……+1/m! 当m=5时的结果(按四舍五入保留3位小数)。(注:所有变量用float数据类型定义!)答案:1.717 #include main() {float T,m,i,n; T=0; for(m=1;m<=5;m++) {n=1; for(i=1;i<=m;i++) {n=n*i;} T=T+(1/n);} printf("%.3f",T);} 2、程序填空:用*号输出字母C的图案。 #include "stdio.h" #include "conio.h" main() { _____________ printf(" *\n"); _____________ _____________ getch(); } 3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。(注:所有变量用long数据类型定义!) 答案:1533459 #include main() {long a,b,c,d,s,n; s=0; for(n=1000;n<=9999;n++) {if(n%2==1) {a=n/1000%10; b=n/100%10; c=n/10%10; d=n%10; if((a+b+c+d)%15==0) s=s+n;} }

printf("%ld",s);} 4、/*下面程序的功能是:计算并输出700以内的最大的10个能被13或者17整除的自然数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注:只有一处错误!)*/ 答案:6591 #include void main() { int total=0, mc=1, k=700; 改成mc=0 int pm[10],count=0; while( (k>=2) && mc<=10 ) { if ((k%13==0) || (k%17==0)) { pm[mc] = k; mc++; } k--; } for( k=1;k<=10;k++ ) total += pm[k-1]; printf(" %d\n",total); } 5求x = 1+1/5+1/7+1/9+…的近似值,直到最后一项的绝对值小于10-5为止。 5、#include 6、#include 7、main() 8、{ 9、 float x,t; 10、x=1,t=5; 11、do 12、{x=x+1/t; 13、t=t+2;}while(abs(1/t)>0.0001); 14、printf("%f",x); 15、} 16、 6、计算如下公式的A20值。 A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ......(按四舍五入保留10位小数)。答案:0.6180339850 #include main() { double n,x; x=1; for(n=2;n<=20;n++) x=1/(1+x);

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.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

汇编语言程序设计复习2(带答案)1

汇编语言程序设计练习题2 一、单项选择题(答案BDDBA BDADC CCAC CBBDA BDADA BCCB ) 1、使计算机执行某种操作的命令是( ) A.宏指令 B.指令 C.伪指令 D.语句 2、某存储单元的物理地址是12345H,可以作为它的段地址有()。 A.2345H B.12345H C.12340H D.1234H 3、8088/8086存储器分段,每个段不超过() A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4、计算机能直接识别并执行的语言是( ) A.汇编语言 B.机器语言 C.高级语言 D.低级语言 5. 8086/8088系统执行传送指令MOV时() A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 6、以下各个指令中正确的是()。 A. MOV CS, DX B. MOV DS, BP C. IN 20H,AL D. MOV AH, BX 7、下列对OUT指令的叙述正确的是()。 A. 实现从端口中读出数据 B. 能直接访问的端口范围是0~1KB C. 能访问的端口为64KBit D. 只能用DX做为间接寻址的寄存器 8、已有汇编语句“V AR EQU 1220H”,则语句“mov AX, V AR”中源操作数的寻址方式为()。 A. 立即寻址 B. 直接寻址 C. 寄存器间接寻址 D. 基址寻址 9、与MOV BX,OFFSET DATA1指令完全等效的指令是()。 A.MOV BX,DATA1 B.LDS BX,DATA1 C.LES BX,DATA1 D.LEA BX,DATA1 10、下列指令中段默认为堆栈段的是() A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB BX,[BP][DI] D. MOV DX,[1000H] 11、已知DS=2000H,ES=1000H, SI = 0800H,内存10880H开始的两个单元中存放5678H,内存20880H开始的两个单元中存放8765H,则语句“LEA BX,[SI+80H]”执行后BX 的值为()。 A. 5678H B. 1000H C. 0880H D. 8765H 12、汇编结束语句有()种格式,为()。

程序设计基础(知识点)

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

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

汇编语言程序设计

汇编语言程序设计 一、选择题 (共72题) 1、 用于指针及变址寄存器的有()。 A、 AX,BX,CX,DX B、 SP,BP,IP C、 CS,DS,SS D、 PSW 考生答案:B 2、 完成把汇编语言源程序模块转换为目标模块的程序是()。 A、 编辑程序 B、 汇编程序 C、 连接程序 D、 调试程序 考生答案:B 3、 指令JMP FAR PTR DONE中的寻址方式属于()。 A、 段内转移直接寻址 B、 段内转移间接寻址 C、 段间转移直接寻址 D、 段间转移间接寻址 考生答案:C 4、 对于下列程序段: AGAIN:MOV AL,[SI]

MOV ES:[DI],AL INC SI INC DI LOOP AGAIN 也可用()指令完成同样的功能。 A、 REP MOVSB B、 REP LODSB C、 REP STOSB D、 REPE SCASB 考生答案:A 5、 在程序执行过程中,IP寄存器中始终保存的是()。 A、 上一条指令的首地址 B、 下一条指令的首地址 C、 正在执行指令的首地址 D、 需计算有效地址后才能确定地址 考生答案:B 6、 在汇编语言程序的开发过程中使用宏功能的顺序是()。 A、 宏定义,宏调用 B、 宏定义,宏展开 C、 宏定义,宏调用,宏展开 D、 宏定义,宏展开,宏调用 考生答案:C 7、 CPU要访问的某一存储单元的实际地址称()。 A、 段地址

偏移地址 C、 物理地址 D、 逻辑地址 考生答案:C 8、 AND、OR、XOR、NOT为四条逻辑运算指令,下面解释正确的是()。 A、 指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B、 指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C、 指令AND AX,OFH执行后,分离出AL低四位 D、 NOT AX,执行后,将AX清0 考生答案:C 9、 完成对CL寄存器的内容乘以2的正确操作是()。 A、 ROL CL,1 B、 MUL 2 C、 SHL CL,1 D、 SHR CL,1 考生答案:C 10、 检查两个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP A L,BL”指令后应跟的分支指令是()。 A、 JE LOP1 B、 JAE LOP1 C、 JC LOP1 D、 JGE LOP1 考生答案:B 11、 已知变量VAR为字型,则TYPEVAR=()。

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

(完整版)《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.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

C语言程序设计期末考试复习题及答案[1]

C语言考试期末考试复习题及答案 一、选择题 (1) 一个C语言程序总是从(C )开始执行 A) 书写顺序的第一个函数 B) 书写顺序的第一条执行语句 C) 主函数main() D) 不确定 (2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( D ) A) ‘x’&&’y’B) x||y+z&&y-z C) x<=y D) !((x

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

实验一基础汇编语言程序设计 实验目的 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)。

C++语言程序设计复习资料

第1章 C++语言概述 1.2 单选题 1.下列关于面向对象概念的描述中,错误的是(C)。 A.面向对象方法比面向过程方法更加先进 B.面向对象方法中使用了一些面向过程方法中没有的概念 C.面向对象方法替代了结构化程序设计方法 D.面向对象程序设计方法要使用面向对象的程序设计语言 2.下列各种高级语言中,不是面向对象的程序设计语言是(D)。 A.C++ B.Java C.VB D.C 3.下列关于类的描述中,错误的是(A )。 A.类就是C语言中的结构类型 B.类是创建对象的模板 C.类是抽象数据类型的实现 D.类是具有共同行为的若干对象的统一描述体 4.下列关于对象的描述中,错误的是(C )。 A.对象是类的一个实例 B.对象是属性和行为的封装体 C.对象就是C语言中的结构变量 D.对象是现实世界中客观存在的某种实体 5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C )。 A.提取符是对右移运算符(>>)重载得到的 B.插入符是对左移运算符(<<)重载得到的 C.提取符和插入符都是双目运算符,它们要求有两个操作数 D.提取符和插入符在输入/输出语句中不可以连用 1.3 填空题 1.C++语言具有面向对象方法中要求的三大特性:封装性、继承性和多态性。 2.C++程序中,有且仅有一个主函数。 3.C++程序是由类和函数组成的。 4.C++源程序的扩展名是cpp。 5.使用插入符进行标准输出文件输出时,使用的输出流对象名是cout 。 1.4 上机调试下列程序,并分析输出结果 1. #include void main() { int i,j; cout<<"Enter i j: "; cin>>i>>j; cout<<"i="<

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