计算机语言Doc,计算机技术及计算机语言.doc

计算机技术及计算机语言

考试科目:计算机技术及计算机语言

一、真空题

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]);

}

}

}

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值