预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章习题答案 4-2有哪里些数据类型是MCS-51系列单片机直接支持的? 答:见P89,基本类型:字符型,整型,长整型,浮点型,特殊功能寄存器; 构造类型:数组类型,结构体类型,共用体,枚举 指针类型 空类型 4-3C51特有的数据结构类型有哪些? 答:特殊功能寄存器,位类型 4-4C51的存储类型有几种?它们分别表示的存储器区域是什么? 答:见P94页:存储器类型有:data,bdata,idata,pdata,xdata 4-5C51中bit位与sbit位有什么区别? 答:bit是定义一个一般的位变量;而使用sbit定义可位寻址字节或是特殊功能寄存器的 的位,定义时必指定其位地址,其存储空间为内部RAM中的位寻址区20H-2FH(位地址为: 00H~7FH), 4-6在C51通过绝对地址来访问的存储器有几种方式? 答:使用C51运行库中预定义宏,通过指针访问,使用C51扩展关键字_at_ 4-7在C51中,中断函数与一般函数有什么不同? 答:见P112页:7点 4-8按指定存储器类型和数据类型,写出下列变量的说明形式 答:(1)在data定义字符变量var11:chardatavar11 (2)在idata定义整型变量var12:charidatavar12 (3)在xdata定义无符号字符数组var11[4]:unsignedcharxdatavar13[4] (4)在xdata定义一个指向无符号字符的指针px:unsignedcharxdata*px (5)定义可寻址位变量flag:bitflag; (6)定义特殊功能寄存器变量p3:sfrp3=0xb0 (7)定义特殊功能寄存器变量SCON:sfrSCON=0x98 (8)定义16位特殊功能寄存器变量T0:sfr16T0=0x8a(无法真正与实际相匹配) 4-9设a=3,b=4,c=5,写出下列关系表达式或逻辑表达式的结果 答:(1)a+b>c&&b==c(False) (2)a||b+c&&b-c(True) (3)!(a>b)&&!c||1(True) (4)!(a+b)+c-1&&b+c/2(True) 4-10break与continue语句的区别是什么? 答:见P110;使用break语句可以跳出switch和循环体,提前结束循环而接着执行循环 结构下面的语句 continue语句使用在循环体结构中,用于结束本次循环,跳过该语句下面尚未执行的语 句,直接进行下一否执行循环的判断。 4-11用分支结构编程实现,输入”1”时显示“A”,输入”2”时显示“B”,输入”3”时显示“C”, 输入”4”时显示“D”,输入”5”时结束。 答:#include<reg52.h> #include<stdoi.h> #defineucharunsignedchar #defineuintunsignedint ucharI; 1 voidmain() { scanf(“%d”,&i); swtch(i) { case1:printf(“A”),break; case2:printf(“B”),break; case3:printf(“C”),break; case4:printf(“D”),break; case5:break; default:printf(“Error!”); } While(1); } 4-12输入3无符号数据,要求按由大到小的顺序输出。 解:#include<reg52.h> #include<stdoi.h> #defineucharunsignedchar #defineuintunsignedint uinta,b,c; voidmain() { uintmax,min,med; if(a>b&&b>c) {max=a;med=b;min=c;} elseif(a>b&&b<c&&a>c) {max=a;med=c;min=b;} elseif(a>b&&b<c&&a<c) {max=c;med=a;min=b;} elseif(b>a&&b<c) {max=c;med=b;min=a;} elseif(b>a&&b>c&&a>c) {max=b;med=a;min=c;} else {max=b;med=c;min=a;} } 4-13用3种循环结构编写程序实现输出1-10的平方和 解:#include<reg52.h> #include<stdio.h> 2 #defineucharunsignedchar #defineuintunsignedint uintsum=0; voidmain { uchari,Square; for(i=1;i<=10;i++) { sum=sum+i*i; } printf(”sum