计算机技术及计算机语言
考试科目:计算机技术及计算机语言
一、真空题
1.四个无符号数(10111100)2+(10010110)BCD+(24)8+(14)16
=( )10 。
2.将十进制数-0.3125表示成补码二进制浮点规格化数为 。设二进制浮点规格化数的模式为阶符1位,阶码3位,数符1位,尾数7位。
3.已知:(A)=02H,(R1)=40H,(40H)=50H,按序连续执行以下三条指令,写出执行每条指令后A的内容:
ANL A,#32H;A= H
ORL A,@R1;A= H
RR A ;A= H
4.RS-232最少可用 根线完成双向数据通讯,其标准规定最大传输距离为 米。
二、问答题
1.8051在什么情况下响应中断请求?
2.A机向B机通过串行口异步传送数据,每帧饮食1位起始位、1位停止位以及8位ASCII码。数据为三字节尾数和一字节阶码表示的单精度实数。如每秒需传送130个数据,问9600bps的波特率能否满足?为什么?
三、编程题
已知:4000H~4FFFH的内存中有一批数据,每个数据由二个字节组成,用补码表示。;要求;
1)统计这批数据中的正、负数个数,分别放入以PCONT、NCONT为首地址的片外RAM中。
2)把所有正数和所有负数累加起来,正数累加值、负数累加值分别放入以PACC、NACC为首地址的片外RAM中。
PACC、NACC为首地址的片外RAM中。
请画出程序框图,并按子程序要求编写程序(子程序名为TEST。PCONT、NCONT、PACC、NACC等使用首先用伪指令定义)。
四、设计题
实现功能:8031共有16根地址总线A0~A15,即基本内存空间为64K,在某智能仪表设计中,使用数据存储空间超过64K,所以采用了一片静态RAM 628128(128K8),并用CPU的P1口作为A16,进行分区寻址,如下图。其中内存的分配要求:
0000H—0EFFH:公共内存区
0F00H—0FFFH:扩展的输出端口74LS374
01000H—0FFFFH:片外内存区0
11000H—1FFFFH:片外内存区1
其中,公共内存区、片外内存区0和片外内存区1在同一片628128内。
要求:0000H—0FFFH的寻址与分区选择无关,即A16=0或A16=1时,都可直接读或写这段内存区。
1.画出译码逻辑硬件电路以实现上述功能。(下图提供了628128,74LS138的引脚配置以及74LS138的真值表供参考。)
2.编一子程序,将上述公共数据区内地址从100H开始的100个字节的数据顺序存入到首址为15000H的内存区中。
五、多项选择题,根据题意请选出所有正确的选项
(1)不正确的C语言标识符是
①_Control ②#Control
③3Control ④iControl
(2)C语言整形常量0100等于十进制
①4 ②100
③1 ④64
(3)以下程序段的运行结果是
……
int a=2;
printf(“%d%d%d”, a,a- -,++a);
①212 ②213 ③233 ④223
(4)已知整形变量i1=9,i2=5
i1|i2的运行结果是
i1||i2的运行结果是
①1 ②14 ③0 ④13
(5)C语言中可以表示逻辑“真”的值是
①?T? ②YES
③非0整数 ④整数1
(6)已知int*P,a,b[10]
以下正确的语句是
(7)C语言中有关数组的定义正确的是
①int n=3, a[n];
②#define L3
int a[L];
③int a[3]={0,1,2};
④int a[]={0,1,2,3};
(8)以下程序段的运行结果是
……
main(){
int k,a=2;
for(k=0;k<3;k++)printf(“%d”,F1(&a));
}
F1(int *a){
int b=0;
b++;(*a)++;
return((*a)+b);
}
①468 ②456 ③333 ④357
六、已知x,y,z为浮点数变量,试根据以下要求编制程序:
(1) 通过键盘输入x,y的值;
(2) 当x=y时,显示“Divided by zer0!”,并退出程序;
(3) 当x≠y时完成右式计算,显示z的计算结果。
七、用牛顿迭代法求: 迭代公式
要求:(1) 输入a,若a≤0则重新输入;
(2) 迭代初值x0=1
(3) 满足 时显示迭代结果,结束运行。
八、编写一个程序,要求实现以下功能:
(1) 从键盘输入一个字符串(不超过20个字符);
(2) 删除字符串中所有的数字,组成一个新字符串并显示出来。
(如:输入:abcdEF1234G 删除数字后组成的新字符串为:abcdEFG)
九、分析下面的C语言程序,完成下列问题:
(1) 给出的程序中存在一些语法或使用错误,请指出并写出正确的代码:
(2) 分别写出函数main(…)、Fc(…)和display(…)的功能。
1./*文件名:Fc.c*/
#include
#include
define SIZE 128
void display (int);
void Fc(char *, char *);
main(int argc, char argv[]){
int k, sect, No;
char buf[128];
FILE *fpl;
If(argc<=2){
Printf(“Usage:Fc F1 F2 F3\n”);
fpl=fopen(argv[1],”r”);
do{
sect=-1;
printf(“Enter Sector:”);
scanf(“%ld”,sect);
if(sect>=0){
if(fseek(fpl,sect*SIZE,0)>=0){
No=fread(buf,sizeof(char),SIZE,fpl);
If(No>0)display(No);
}
}
}while(sect>=0);
fclose(fpl);
}
2.Void Fc(char *target, char *source){
FILE *fpl, *fp2;
If((fp1=fopen(source,”r”))=NULL)
exit(1);
If((fp2=fopen(source,”r”))=NULL)
exit(1);
while(fgets(buffer, 80,fp2))
fputs(buffer, fp1);
fclose(fp1);fclose(fp2);
}
void display(int No){
int a,b;
for(a=0;a for(b=0;b<16;b++){
if(a*16+b printf(“%3x”,buf[a*16+b]);
}
}
}
展开阅读全文