第4章 指针思考与练习题答案

合集下载

C++第4章 习题 参考答案

C++第4章 习题 参考答案

《计算机软件技术基础2》教学要求
说明:教学要求分为了解、掌握和熟练掌握三个层次,它们的含义大致为:了解即掌握概念,掌握就是能够理解和分析现有知识,熟练掌握就是会运用所学知识解决实际问题。

凡教学要求上没列举的内容不做要求。

第四章函数
教学要求:
1)熟练掌握C++函数的定义和函数的调用方法;
2)熟练掌握函数原型说明;
3)了解对函数的嵌套调用和递归调用;
4)熟练掌握函数间参数的各种传递机制;
5)了解变量的作用域、生存期和可见性;
6)了解函数参数的缺省、函数的重载;
7)了解函数返回指针和返回引用;
8)掌握对C++的主要系统函数的使用及其相应头文件的包含,例如:exit(), strcat(), strcmp(), strcpy(), strlen(), sqrt() 等;
9)了解编译预处理的概念;掌握包含文件命令的两种写法。

部分习题参考答案第四章
1、问答题(略)
2、写出下列程序运行结果:
(1)(2)(3)
(4)(5)(6)
3.
4.
5.
6.
7.
8.模板函数没有讲,不要求
9.
10.
11.
12.需用模板函数
13.
14.
15.
16.。

电路与电子技术基础第四章习题答案

电路与电子技术基础第四章习题答案
a b i (t ) iR(t) R + u(t) (a) 题图 4-3 i L (t ) L 0 -100V (b) 习题 4-4 电路及波形图 t 0 -10mA (c) t uL 10mA i
解:本题是求零输入响应,即在开关处于 a 时,主要是电感储能,当开关投向 b 后, 讨论由电感的储能所引起的响应。所以对图(a)t≥0 时的电路可列出 di L L + Ri L = 0 t≥0 dt 及 iL(0)=i(t)=10(mA) 其解为: i L (t ) = 10e

t≥0
i R (t ) = −i L (t ) = −10e −10 t (mA)
7
t≥0
其波形图见图(b)、图(c)所示。 4-5 电路如题图 4-4 所示,开关接在 a 端为时已久,在 t=0 时开关投向 b 端,求 3Ω电 1Ω a b 阻中的电流。 i (t ) 解:因为 u c (0) = 3 × 2 = 6(V ) (注意:当稳态以后电容为开路,所以流过 1 3A Ω和电容串联支路的电流为零, 因此电容两端的电 压就是并联支路 2Ω支路两端的电压) 当开关投向 b 时电流的初始值为
S 12Ω + 24V iL 4H 6Ω
题图 4-1
习题 4-2 电路
解:由于电路原已达稳态,电感两端电压为 0,合上开关 S 后,加在 6Ω电阻两端电压也为 0,该电阻中电流为 0,电路直接进入稳态,故电感电流为合上开关 S 前的稳态电流,即: iL(t)=24V/12Ω=2A。 用三要素公式可以得到同样的结果,电感电流初始值 iL(0+)=2A,稳态值 iL(∞)=2A,时间常 数τ=L/R=4/(12//6)=1s,所以:
当 t=0 时,开关打开,由于电感电流、电容电压均不跃变,有: i L (0 + ) = i L (0 − ) = 0.03( A) 1k u c (0 + ) = u c (0 − ) = 120(V ) 当 t≥0 时,根据基尔霍夫定律有

C语言指针精选习题和答案(精心整理)

C语言指针精选习题和答案(精心整理)

一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <stdio.h>void swap(int *pa,int *pb){int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){int a,b,c,temp;scanf("%d%d%d",&a,&b,&c);if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(a>c)swap(&a,&c);printf("%d,%d,%d",a,b,c);}二、C语言用指针方法输入3个字符串按由小到大顺序输出#include "stdio.h"#include "string.h"int main(int argc, char* argv[]){char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch1[20]={0},ch2[20]={0},ch3[20]={0};p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);printf("No2:");scanf("%s",p2);fflush(stdin);printf("No3:");scanf("%s",p3);fflush(stdin);if(strcmp(p1,p2)>0){t=p1;p1=p2;p2=t;}if(strcmp(p1,p3)>0){t=p1;p1=p3;p3=t;}if(strcmp(p2,p3)>0){t=p2;p2=p3;p3=t;}printf("%s\n%s\n%s\n",p1,p2,p3);return 0;}9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<stdio.h>void main(){int a=0,b=0,c=0,d=0,e=0,i=0;char *p,s[20];while((s[i]=getchar())!='\n')i++;p=s;while(*p!=10){if(*p>='A'&&*p<='Z')a++;else if(*p>='a'&&*p<='z')b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9')d++;else e++;p++;}printf("大写字母 %d 小写字母 %d\n",a,b);printf("空格 %d 数字 %d 非字符 %d\n",c,d,e);}9.5写一个函数,将3 3矩阵转置#include "stdio.h"void Transpose(int (*matrix)[3]){int temp;int i, j;for(i=1;i<3;i++)/*转置*/{for(j=0;j<i;j++){temp = *(*(matrix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j); *(*(matrix+i)+j) = temp;}}}void main(){int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};Transpose(a);for(int i = 0;i<3;i++){for(int j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}}9.6用指向一维数组的指针做函数参数#include<stdio.h>#include<string.h>int main(){void sort(char (*s)[6]);//一维数组的指针做函数参数int i;char str[10][6];char (*p)[6];//定义一维数组的指针做函数参数printf("please input string:/n");for(i=0;i<10;i++)scanf("%s",&str[i]);p=str;//将str一维数组指针,赋值给p;sort(p);printf("the output sequence :/n");for(i=0;i<10;i++)printf("%s/n",str[i]);return 0;}void sort(char (*s)[6])//s指向一维数组的指针做函数参数;{int i,j;char temp[6], *t;t=temp;for(i=0;i<9;i++)//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for(j=0;j<9-i;j++)//第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],t);}}9.7编一程序,用指针数组在主函数中输入十个等长的字符串。

C语言指针练习答案讲解

C语言指针练习答案讲解

第七章指针7.1 选择题1.若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。

A. p=q; B. *p=*q; C. a=*q; D. q=a;a是整型数,int *p,*q定义了指针,p,q是指向整型的指针。

p取得a的地址,而q取得p的地址p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值)。

A)把q的地址赋给p,则p和q完全一样了,都指向一个数2B)把q中数据个pC)把q中数据给aD)a中数据是2,不能够给一个地址。

除非*q=a2.若定义:int a=511, *b=&a;,则printf("%d\n", *b);的输出结果为:D A.无确定值 B. a的地址 C. 512 D. 511int a=511,*b=&a;a 是整形变量b 是整形指针变量,指向 aprintf("%d\n",*b);就是输出指针变量 b,所指变量的值输出结果5113.已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。

A. a=*p1+*p2; B. p1=a; C. p1=p2; D. a=*p1*(*p2);47、已知在程序中定义了如下的语句:int *P1,*P2;int k;p1=&k;p2=&k;则下列语句中不能正确执行是( B )A、k=*P1+*P2;B、p2=k;C、P1=P2;D、K=*P1 * (*P2);P1 P2是指针,K是整型变量,变量怎么可以赋值给指针呢?A其实是执行了K=K+K(P1和P2都指向K,所以*P1 *P2其实都是指K)C是赋值语句D其实执行了K=K*K4.变量的指针,其含义是指该变量的(B)。

A.值 B.地址 C.名 D.一个标志5.若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。

数据结构(C语言版)第三四章习题答案(可编辑修改word版)

数据结构(C语言版)第三四章习题答案(可编辑修改word版)

第3 章栈和队列习题1.选择题(1)若让元素1,2,3,4,5 依次进栈,则出栈次序不可能出现在()种情况。

A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1 (2)若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi 为()。

A.i B.n-i C.n-i+1 D.不确定(3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()。

A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n (4)链式栈结点为:(data,link),top 指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到x 中,则应执行操作()。

A.x=top->data;top=top->link;B.top=top->link;x=top->link;C.x=top;top=top->link;D.x=top->link;(5)设有一个递归算法如下int fact(int n) { //n 大于等于0if(n<=0) return 1;else return n*fact(n-1); }则计算fact(n)需要调用该函数的次数为()。

A.n+1 B.n-1 C.n D.n+2 (6)栈在()中有所应用。

A.递归调用 B.函数调用 C.表达式求值 D.前三个选项都有(7)为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。

主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。

该缓冲区的逻辑结构应该是()。

A.队列B.栈C.线性表D.有序表(8)设栈S 和队列Q 的初始状态为空,元素e1、e2、e3、e4、e5 和e6 依次进入栈S,一个元素出栈后即进入Q,若6 个元素出队的序列是e2、e4、e3、e6、e5 和e1,则栈S 的容量至少应该是()。

指针测试题及答案大全

指针测试题及答案大全

指针测试题及答案大全一、选择题1. 指针变量的声明方式正确的是()。

A. int *p;B. int *p[];C. int *p[10];D. int (*p)[10];答案:A2. 指针变量可以存储()。

A. 整型数据B. 浮点型数据C. 函数名D. 任意类型的地址答案:D3. 指针变量的值是()。

A. 它所指向的变量的值B. 它所指向的变量的地址C. 它自己的值D. 它自己的地址答案:B4. 指针变量的类型转换时,以下说法正确的是()。

A. 可以将任何类型的指针转换为void指针B. 可以将void指针转换为任何类型的指针C. 可以将char指针转换为int指针D. 可以将int指针转换为char指针答案:A5. 指针变量的算术运算中,以下说法正确的是()。

A. 指针变量可以进行加法运算B. 指针变量可以进行减法运算C. 指针变量可以进行乘法运算D. 指针变量可以进行除法运算答案:B二、填空题1. 指针变量的值是它所指向的变量的________。

答案:地址2. 指针变量的类型转换时,可以将void指针转换为________类型的指针。

答案:任何类型3. 指针变量的算术运算中,指针变量可以进行________运算。

答案:减法三、简答题1. 描述指针变量与数组之间的关系。

答案:指针变量可以指向数组的首元素,从而可以通过指针访问数组中的所有元素。

数组名在大多数情况下可以作为指向数组首元素的指针使用。

2. 解释指针变量的类型转换规则。

答案:指针变量的类型转换遵循C语言的类型转换规则,可以将任何类型的指针转换为void指针,也可以将void指针转换为任何类型的指针。

但是,不同类型的指针之间不能直接转换,除非它们指向的数据类型是兼容的。

结束语:以上是指针测试题及答案大全,希望对您的学习有所帮助。

C语言 第4章 思考与练习

C语言 第4章 思考与练习

思考与练习4-3:
在Visual C++6.0的安装路径下查找文件stdio.h, 找到后打开该文件,请认真查看该文件中对printf() 和scanf()的函数声明部分。
思考与练习4-4: 上机运行例4.4、例4.5和例4.6,并分析实验结果。
课后习题:
4.1-4.3 要求:4.3需上机实验。
的返回值
#include <stdio.h> main() {
char ch; int a=0; printf("Press a key and then press Enter:"); ch = getchar(); /* 从键盘输入一个字符,按回车键结束输入,该字符被存入变量 ch */ ch = ch + 32; /* 将大写英文字母转换为小写英文字母 */ a=putchar(ch); /* 在屏幕上显示变量ch中的字符 */ putchar('\n'); printf("a1=%d\n",a); a=putchar('\n'); /* 输出一个回车换行控制符 */ printf("a2=%d\n",a); }
C语Visual C++6.0的安装路径下查找文件stdio.h, 找到后打开该文件,请认真查看该文件中对 getchar()和putchar(ch)的函数声明部分,并对照 课本4.1.2的说明,思考是否有不同。
思考与练习4-2:
将例4-1程序修改为如下代码,分析并运行观察putchar()和getchar()函数

操作系统第4章习题带答案

操作系统第4章习题带答案

操作系统第4章习题带答案第四章⼀、问答题1、同步机制应遵循的准则是什么?2、死锁产⽣的4个必要条件是什么?它们是彼此独⽴的吗?3、简述死锁的定义和死锁产⽣的原因。

4、简述死锁定理和解除死锁的⽅法。

5、什么是安全状态?怎么判断系统是否处于安全状态?6、同步机制应遵循的准则是什么?7、死锁产⽣的4个必要条件是什么?它们是彼此独⽴的吗?⼆、计算题(共20分)1、当前系统中出现下述资源分配情况:利⽤银⾏家算法,试问如果进程P2提出资源请求Request(1,2,2,2)后,系统能否将资源分配给它?答:Request(1,2,2,2)<=(2,3,5,6)申请合法Request(1,2,2,2)<=Available,开始试探性分配,Available=(0,4,0,0) 测试系统是否安全:work= Available,finish=1没有进程的need满⾜<=work系统处于不安全状态,系统拒绝此次资源分配。

2、当前某系统有同类资源7个,进程P,Q所需资源总数分别为5,4。

它们向系统申请资源的次序和数量如表所⽰。

回答:问:采⽤死锁避免的⽅法进⾏资源分配,请你写出系统完成第3次分配后各进程占有资源量,在以后各次的申请中,哪次的申请要求可先得到满⾜?答:第1次申请,Q申请资源2,系统安全,分配第2次申请,P申请资源1,系统安全,分配第3次申请,Q申请资源1,系统安全,分配资源剩余3个,P占有1个资源,Q占有3个资源,第4次分配不安全,拒绝,第5分配系统安全,满⾜。

3、⼀个计算机系统有6个磁带驱动器和4个进程。

每个进程最多需要n个磁带驱动器。

问当n为什么值时,系统不会发⽣死锁?并说明理由答:n=2理由同第4题(进程资源最⼤需求-1)×进程数量+1≤系统资源数量4、若系统有某类资源m×n+1个,允许进程执⾏过程中动态申请该类资源,但在该系统上运⾏的每⼀个进程对该资源的占有量任何时刻都不会超过m+1个。

思考与练习题参考答案

思考与练习题参考答案

第1章操作系统概述思考与练习题参考答案1. 选择题(1) C (2) D (3) C (4) C (5) B (6) C (7) B (8) C (9) B (10)B(11) A2. 填空题(1) 硬件软件(2) 存储管理设备管理(3) 软硬件资源(4) 批处理操作系统分时操作系统实时操作系统(5) 20ms 时间片轮转调度算法3. 判断题(1) × (2) × (3) √ (4)× (5) × (6). √ (7) √ (8)√4. 问答题(1) 简述操作系统的概念答:操作系统是一组能控制和管理计算机系统的硬件和软件资源,合理地组织计算机工作流程并为用户使用计算机提供方便的程序和数据的集合。

(2) 什么是批处理系统为什么要引入批处理系统答:批处理系统指用户的作业成批的处理,作业建立、过渡、完成都自动由系统成批完成。

因为1958~1964年,晶体管时代,计算机速度、容量、外设品种和数量等方面和第一代计算机相比都有了很大发展,计算机速度有几十倍、上百倍的提高,故使手工操作的慢速度和计算机运算的高速度之间形成一对矛盾。

只有设法去掉人工干预,实现作业自动过渡,这样就出现了成批处理。

(3) 什么叫多道程序试述多道程序涉及技术的基本思想及特征,为什么对作业进行多道批处理可以提高系统效率答:多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插交替运行。

当某道程序因某种原因不能继续运行下去时,管理程序就将另一道程序投入运行,这样使几道程序在系统内并行工作,可使中央处理机及外设尽量处于忙碌状态,从而大大提高计算机使用效率。

在批处理系统中采用多道程序设计技术形成多道批处理系统,多个作业成批送入计算机,由作业调度程序自动选择作业运行,这样提高了系统效率。

(4) 何为分时系统简述其特点。

答:分时系统采用时间片轮转法,使一台计算机同时为多个终端服务。

第4章第3节平面镜成像2024-2025学年人教版(2024)初中物理八年级上册

第4章第3节平面镜成像2024-2025学年人教版(2024)初中物理八年级上册
提出问题
设计与进行实验
分析论证
得出结论
交流评估
猜想假设
分析论证
得出结论
平面镜成像特点
1.像与物的大小相等
2.像和物到平面镜的距离相等
3.像和物对应点的连线与镜面垂直
平面镜所成的像与物体关于平面镜对称!
提出问题
设计与进行实验
分析论证
得出结论
交流评估
猜想假设
得出结论
交流评估
通过实验我们发现像与物的大小相等,那么为什么在生活中我们会有“近大远小”的感觉?
1、选用什么器材? 2、怎样比较像与物体的大小? 3、如何确定像与物到平面镜的距离?
用两个完全相同的蜡烛,便于比较像与物的大小
A
B
用玻璃代替平面镜,便于确定像的位置
提出问题
设计与进行实验
分析论证
得出结论
交流评估
猜想假设
设计与进行实验
数据记录与分析
序号
物到镜的距离/cm
像到镜的距离/cm
比较像与物的大小
位置1
位置2
位置3
操作时注意: ①玻璃板竖立放置②玻璃板位置只画一条线③在寻找像的位置时,物体的位置不能动。眼镜从物这边观察。
提出问题
设计与进行实验
分析论证
得出结论
交流评估
猜想假设
设计与进行实验
分析论证
投影学生的实验数据,并请两小组同学派代表做实验汇报......
课前准备
平面镜成像

目 录
课堂导入
平面镜的概念
探究平面镜成像特点
平面镜成像原理
课堂小结
拓展练习
魔术表演:猜纸牌(老师手上有一副纸牌背对我,你们随便选一张我都知道是什么牌。)

《数据结构》第四章习题参考答案

《数据结构》第四章习题参考答案

《数据结构》第四章习题一、判断题(在正确说法的题后括号中打“√”,错误说法的题后括号中打“×”)1、KMP算法的特点是在模式匹配时指示主串的指针不会变小。

( √)2、串是一种数据对象和操作都特殊的线性表。

( √)3、只包含空白字符的串称为空串(空白串)。

( ×)4、稀疏矩阵压缩存储后,必会(不会)失去随机存取功能。

( ×)5、使用三元组表示稀疏矩阵的非零元素能节省存储空间。

( √)6、插入与删除操作是数据结构中最基本的两种操作,因此这两种操作在数组中也经常使用。

(×)7、若采用三元组表存储稀疏矩阵,只要把每个元素的行下标和列下标互换(错的),就完成了对该矩阵的转置运算。

(×)二、单项选择题1.下面关于串的的叙述中,哪一个是不正确的?( B )A.串是字符的有限序列B.空串是由空格构成的串(空串是长度为零的串)C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2.有串S1=’ABCDEFG’,S2 = ’PQRST’,假设函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回中s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是( D )。

A.BCDEF B.BCDEFG C.BCPQRST D.CDEFGFG3、串的长度是指( B )A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数三、填空题1、串是一种特殊的线性表,其特殊性表现在_数据元素为字符,操作集也不同__;串的两种最基本的存储方式是_顺序存储_、__ 链式存储_;两个串相等的充分必要条件是__两串的长度相等且两串中对应位置的字符也相等__。

2、设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为_O(m+n)__。

指针经典练习题及答案

指针经典练习题及答案

二、程序题1、计算字符串中子串出现的次数。

要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。

2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。

算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。

例如,China转换成密文为G l m r e。

要求:在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。

3、字符替换。

要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。

4、编写一个程序,输入星期,输出该星期的英文名。

用指针数组处理。

5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。

要求:利用字符串指针和指针数组实现。

6、定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。

7、实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,输它们相同的数字个数(使用动态内存分配)。

/*1、计算字符串中子串出现的次数。

要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。

*/#include<stdio.h>int subString(char *a, char *b){int i = 0;int j = 0;int m = 0;char *p = b;while(*a){while(*a){if(*a == *b){break;}a++;}while(*b){if(*a != *b){return m;}else{m = m;}b++;a++;}// a++;b = p;++m;}return m;}int main(){char a[100];char b[100];printf("请输入字符串a:");gets(a);printf("请输入字符串b:");gets(b);printf("%d", subString(a, b));return 0;}/*2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。

微机原理第4章练习题及答案

微机原理第4章练习题及答案

微机原理第4章练习题及答案第4章80某86指令系统一、自测练习题㈠选择题1.MOVA某,[B某+SI]的源操作数的物理地址是()。

A.(DS)某16+(B某)+(SI)B.(ES)某16+(B某)+(SI)C.(SS)某10H+(B某)+(SI)D.(CS)某10H+(B某)+(SI)2.MOVA某,[BP+Sl]的源操作数的物理地址是()。

A.(DS)某10H+(BP)+(SI)A.(ES)某16+(BP)+(SI)C.(SS)某16+(BP)+(SI)D.(CS)某10H+(BP)+(SI)3.MOVA某,ES:[B某+SI]的源操作数的物理地址是()。

A.(DS)某16+(B某)+SI)B.(ES)某10H+(B某)+(SI)C.(SS)某10H+(B某)+SI)D.(CS)某16+(B某)+(SI)4.JMPWORDPTR[DI]是()。

A.段内间接转移B.段间间接转移C.段内直接转移D.段间直接转移5.JMPFARPTRBlOCK(BLOCK是符号地址)是()。

A.段内间接转移B.段间间接转移C..段内直接转移D.段间直接转移6.INC指令不影响()标志。

A.OFB.CFC.SFD.ZF7.条件转移指令JNE的测试条件是()。

A.ZF=1B.CF=0C.ZF=0D.CF=18.下列指令中,有语法错误的是()。

A.MOV[SI],[DI]B.INAL,D某C.JMPWORDPTR[B某+8]D.PUSHWORDPTR20[B某+S1]9.假定(SS)=2000H,(SP)=0100H,(A某)=2107H,执行指令PUSHA某后,存放数据21H的物理地址是()。

A.20222HB.20221HC.200FEHD.200FFH10.对于下列程序段:AGAIN:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPAGAIN也可用指令()完成同样的功能。

A.REPMOVSBB.REPLODSBC.REPSTOSBD.REPESCASB11.对于下列程序段:AGAIN:MOVES:[DI],ALINCDILOOPAGAIN可用指令()完成。

大学计算机第四章 练习题答案

大学计算机第四章 练习题答案

第四章练习题答案(1) 下面叙述正确的是______ 。

(C)A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)以上三种描述都不对(2) 算法的时间复杂度是指 ______ 。

(C)A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法执行过程中所需要的基本运算次数D. 算法程序中的指令条数(3) 算法的空间复杂度是指 ______ 。

(D)A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间(4) 下列叙述中正确的是______ 。

(B)A) 算法的效率只与问题的规模有关,而与数据的存储结构无关B) 算法的时间复杂度是指执行算法所需要的计算工作量C) 数据的逻辑结构与存储结构是一一对应的D) 算法的时间复杂度与空间复杂度一定相关(5)算法的有穷性是指 ______ 。

( A )A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6) 数据的存储结构是指______ 。

( B )A. 数据所占的存储空间量B. 数据的逻辑结构在计算机中的表示C. 数据在计算机中的顺序存储方式D. 存储在外存中的数据(7) 下面描述线性表的链式存储结构错误的是 ______ 。

(A)A)线性表顺序存储B)线性表随机存储C)线性表的链式存储结构也称为线性链表D)线性表的链式存储结构只能顺序存取(8)数据的存储结构是指 ______ 。

( B)A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据(9) 下列叙述中正确的是______ 。

(D )A)一个逻辑数据结构只能有一种存储结构B)数据的逻辑结构属于线性结构,存储结构属于非线性结构C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(10)下列叙述中正确的是 ______ 。

数据结构课后习题答案第四章

数据结构课后习题答案第四章

第四章串一、单项选择题1.B2. B3.B4.C5. C二、填空题1.空、字符2.由空格字符(ASCII值32)所组成的字符串空格个数3.长度、相等、子、主4.55.011223126.(1)char s[ ] (2) j++ (3) i >= j7.[题目分析]本题算法采用顺序存储结构求串s和串t的最大公共子串。

串s用i指针(1<=i<=s.len)。

t串用j指针(1<=j<=t.len)。

算法思想是对每个i(1<=i<=s.len,即程序中第一个WHILE循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二个WHILE循环)开始的连续字符串的最大匹配。

程序中第三个(即最内层)的WHILE循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。

若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要修改。

(1) i+k<=s.len && j+k<=t.len && s[i+k]==t[j+k] //所有注释同上(a)(2) con=0 (3) j+=k (4) j++ (5) i++三、应用题1.空格是一个字符,其ASCII码值是32。

空格串是由空格组成的串,其长度等于空格的个数。

空串是不含任何字符的串,即空串的长度是零。

2.(a)A+B “ mule”(b)B+A “mule ”(c)D+C+B “myoldmule”(d)SUBSTR(B,3,2) “le”(e)SUBSTR(C,1,0) “”(f)LENGTH(A) 2(g)LENGTH(D) 2(h)INDEX(B,D) 0(i)INDEX(C,”d”) 3(j)INSERT(D,2,C) “myold”(k)INSERT(B,1,A) “m ule”(l)DELETE(B,2,2) “me”(m)DELETE(B,2,0) “mule”3.朴素的模式匹配(Brute-Force)时间复杂度是O(m*n),KMP算法有一定改进,时间复杂度达到O(m+n)。

单片机第四章答案

单片机第四章答案

第四章习题与思考答案4-3外设端口有哪两种编址方法?各有什么特点?答:微型计算机对 I/O 端口进行编址的方式有两种:单独编址和统一编址。

1.外设端口单独编址特点:(1) 需要专用 I/O 指令,实现 CPU 和外设间数据传送。

(2)I/O端口地址的独立。

2.外设端口与存储器统一编址特点: (1) 无需专用 I/O 指令(2)I/O端口地址是内存地址中的一部分。

4-4 I/O 数据有哪四种传送方式?各有什么特点?CPU 与外设之间的数据传送方式有无条件传输方式、查询方式、中断方式和 DMA 方式。

1.无条件传输方式无条件传送又称为同步传送或直接传送方式。

CPU 在与外设进行数据交换时,外设随时处于准备好的状态,这样 CPU 不必查询外设的状态,也不必等待,而是直接进行数据的输入输出。

2.查询传输方式查询传输方式也称为异步传输、条件传输方式。

采用查询方式时, CPU 每次与外设进行数据传输前,都要先读取状态端口的信息,查询外设是否准备就绪,只有在外设处于“就绪”状态时,才能向外设的数据端口发送数据或从其中读取数据,如果外设未就绪,就需要 CPU 原地循环等待外设完成准备工作,所以 CPU 的工作效率不高。

3.中断传输方式在中断传输方式中,以外设为主动方,每次外设准备好就可以向 CPU 发出一次中断请求,使 CPU 暂停当前正在执行的程序,转去与外设进行一次数据传输工作,当完成了本次数据的输入或输出后,再回到原先被打断的地方继续执行原来的程序。

中断方式可以大大提高 CPU 的效率和系统的实时性。

4. DMA 方式DMA 方式即直接存储器存取方式,是一种在DMA控制器的控制下实现的外设与存储器之间的直接数据传输方式。

在整个DMA 传输过程中,是不需要 CPU 参与的,完全是通过硬件逻辑电路用固定的顺序发地址和读写信号来实现的,数据不需要经过 CPU 而是在外设和存储器之间高速传输。

4-5 8051 内部的并行I/O 口有哪些?各有什么功能?1.P0 口P0 口的第一功能是作为通用I/O 口使用。

C++指针习题参考答案

C++指针习题参考答案

《C++指针》习题参考答案(总9页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《C++指针》习题学号姓名一、选择题1、有定义如下:int a[5], *p; 则下列描述错误的是 BA.表达式p=p+1是合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的2、函数定义为Fun(int &i),变量定义n=100,则下面调用该函数正确的是 CA.Fun(20) B.Fun(20+n) C.Fun(n)D.Fun(&n)3、若有说明int I,j=2,*p=&i;则能完成i=j赋值功能的语句是 BA.i=*p; B.*p=*&j; C.i=&j; D.i=**p;4、设已有定义char *st = "how are you";下列程序中正确的是 AA.char a[11],*p;strcpy(p=a+1,&st[4]);B.char a[11];strcpy(++a,st);C. char a[11];strcpy(a,st);D. char a[],*p;strcpy(p=a[1],st+2);5、设有数组int array[3][4],下列引用数组元素的方法中错误的是 DA.array[i][j] B.*(*(array+i)+j)C. *(array[i]+j)D. *(array+i*4+j)6、有定义int s[4][5],(*ps)[5];ps=s;则对数组s中元素引用的正确的是 CA.ps+1 B.*(ps+3) C. ps[0][2] D. *(ps+1)+37、设有说明int b[4][4],以下不能等价表示元素b[3][3]的是: BA.*&b[3][3] B.(*(*(b+3))+3) C.*(b[3]+3) D.*(*(b+3)+3)8、若有说明"char *s[]={"234","5678","9012","3456","7890"};",则表达式*s[1]> *s[3]比较的是 BA."1234"和"9012" B.'5'和'3' C.'l'和'9' D."5678"和"3456"9、设语句"char *s[]={"Student","Teacher","Father","Mother"},*ps=s[2];",执行语句"cout<<*s[1]<<','<<ps<<','<<*ps<<'\n';",则输出结果是 AA.T,Father,F B.Teacher,F,FatherC.Teacher,Father,Father D.语法错无输出10、设有以下说明语句:char sl[20]="hello",s2[20]="china";const char *ptr=s1;以下语句中不符合C++语法规则的语句是 DA.strcpy(s2,ptr); B.ptr=s2; C.ptr=ptr+4; D.*ptr=*s2;11、设s和t分别为指向两个长度相同的字符数组的指针,则循环语句while( C );可以正确实现字符串t到s的完整复制功能。

(2021年整理)指针综合练习题(带答案).

(2021年整理)指针综合练习题(带答案).

(完整)指针综合练习题(带答案).编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)指针综合练习题(带答案).)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)指针综合练习题(带答案).的全部内容。

指针综合练习题一、选择题1.若有以下定义,则对a数组元素的正确引用是____d_____。

int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)2.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为__d____.a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j3.若有以下定义,则p+5表示___a____。

int a[10],*p=a;a)元素a[5]的地址 b)元素a[5]的值c)元素a[6]的地址 d)元素a[6]的值4.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是____b____。

a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);5.若有说明语句char a[]="It is mine";char *p=”It is mine”;则以下不正确的叙述是___d_____。

a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符二、填空题1 指针变量保存了另一变量的(1)值,不可以任意给指针变量赋一个地址值,只能赋给它 (2)和(3)的地址。

使用变量名来访问变量,是按(4)来直接存取变量称为 (5)方式;而借助指针变量取得另一变量的地址,访问该变量称为(6) 方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章指针
思考与练习题
1、什么叫内存单元的地址?什么叫指针?
答:在计算机内部的存储器(简称内存)中,每一个字节单元,都有一个编号,称为地址。

内存单元的编号,称为内存单元的地址。

在C++语言中,内存单元的地址称为指针。

2、什么叫指针变量?什么叫指针的目标?
答:专门用来存放地址的变量,称为指针变量(pointer variable)。

指针指向的内存区域中的数据称为指针的目标。

3、什么叫空指针?其作用是什么?
答:所谓空指针就是指针变量的内容为零的状态。

4、指针运算的实质是什么?
答:指针运算是以指针变量所存放的地址量作为运算量而进行的运算。

因此,指针运算的实质就是地址的计算。

5、指针有哪些运算?请枚举这些计算。

答:指针运算的种类是有限的,它只能进行算术运算、关系运算和赋值运算。

6、什么叫数组的指针?什么叫指针数组的指针?
答:在C++语言中,数组的指针是指数组在内存中的起始地址。

指针变量数组和普通的一般变量数组一样,编译系统在处理指针数组说明时,按照指定的存储类型为它在内存中分配一定的连续存储空间,这时指针数组名就表示该指针数组的存储首地址,即指针数组的指针。

7、什么叫二级指针变量?什么叫多级指针变量?
答:对于指向处理数据的指针变量称为一级指针变量,简称一级指针。

而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针。

我们把一个指向指针变量的指针变量,称为多级指针变量。

8、new运算符的作用是什么?delete运算符的作用是什么?
答:运算符new主要用于分配内存,并获得分配到的内存的首地址,通常需要将其赋给相应数据类型的指针。

如果程序中不再需要由new分配的内存空间时,用运算符delete
释放这些空间。

9、什么叫引用?
答:所谓引用是指给一个变量或一个数组起一个别名。

使用引用进行运算的实质是操作原来的变量或数组本身的另一个使用名称。

10、const型指针有几种形式?其作用是什么?
答:const型指针主要有下面三种形式:
( a ) 常量化指针目标表达式:常量化指针目标是限制通过指针改变其目标的数值。

( b ) 常量化指针变量:常量化指针变量,使得<指针变量>的地址值不能修改。

但可以通过*<指针变量名称>可以修改指针所指向变量的数值。

( c ) 常量化指针变量及其目标表达式:常量化指针变量及其目标表达式,使得既不可以修改<指针变量>的地址,也不可以通过*<指针变量名称>修改指针所指向变量的值。

11、什么叫void型指针?其作用是什么?
void型的指针变量是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量或数组。

12、如说明int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *pa=a;
请给出访问第i+1个元数即a[i]的几种等价表达形式。

答:a[i],*(pa+i),*(a+i),pa[i]
13、请给出下列问题的计算结果:
(1)若int x=8, y(10), *p=&x ; 则经过y += x+2, *p=++x+y- - ; 的运算之后,cout<<x << "" << y<<endl; 的输出结果是什么?
答:29 19
(2)若int x(1), y=2, z(3), *pw=&z ; 则经过语句y+=*pw+1, x+=++y, *pw += x -y;
的运算, 则x, y, z 的结果值各是什么?
答:8 7 4
(3)若int a[4]={1,2 ,3,4}; 则a[2]=a[0]+*(a+3)+a[1]++ 运算之后,a的各元素存放的是什么?
答:a[4]={1, 3, 7, 4}
(4)若说明int a[8]={7,6,5,4,3,2,1,0}, *p=&a[7]; 则经过表达式
*(p-1) += ( *p+=1, *(p - = 6) +=3, *(p+4) += 1 ); 运算后,则数组a各元素的值是什么?
答:10 9 5 4 3 3 1 1
(5)若说明int x, data[8]={1,2 ,3,4,5,6,7,8}; 则x=*(data+1)+*(&data[5]-2)之后,
x存放的数是什么?
答:6
(6)若说明int a=16; int &ra = a; 经过语句a += 2; ra +=2 ; 执行之后,表达式ra+1 的结果是多少?
答:21
(7)若说明int a[3]={8, 18, 28}; int (&ra)[3] = a;
经过语句ra[0] +=12; a[1] +=2 ; 执行之后,则数组a各元素的值是什么?
答:20 20 28
(8) 若说明int x=16 ; const int *px =&x; 经过语句x=26;
则表达式*px+4 的结果是多少?
答:30
(9) 若说明int a=82 , b(28) ; const int * pa = &a; 经过语句pa = &b;
则表达式*p x+2 的结果是多少?
答:30
(10) 若说明int x=99; int * const px =&x ; 经过语句x += 1;
则表达式*px 的结果是多少?
答: 100。

相关文档
最新文档