单片机课后习题答案(4)

2019-04-21 20:13

16 (4)

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

#include

extern serial_initial(); main() {

int a,b;

unsigned int x,y; serial_initial();

a=b=0xaa55;x=y=0xaa55;

printf(\ a=a<<1;b=b>>1; x=x<<1;y=y>>1;

printf(\printf(\ printf(\

printf(\

while(1); }

执行结果:

a=aa55 b=aa55 x=aa55 y=aa55 a=54aa b=d52a x=54aa y=552a That is all.

11. break和continue语句的区别是什么?

答:break语句可以跳出switch结构,使程序继续执行switch结构后面的一个语句。break语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。

continue语句用在循环结构中,用于结束本次循环,跳过循环体中continue下面尚未执行的语句,直接进行下一次是否执行循环的判定。

continue语句和break语句的区别在于:continue语句只是结束本次循环而不是终止整个循环;break语句则是结束循环,不再进行条件判断。

12. 用分支结构编程实现:输入“1”显示“A”,输入“2”显示“B”,输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。

参考程序:

#include #include void main(void) {

unsigned char x; SCON=0x52; TMOD=0x20;

//串口初始化

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

TH1=0XF3; TR1=1; while(1) {

printf(\ //输出提示信息 scanf(\ switch(x) {

case '1':printf(\case '2':printf(\case '3':printf(\case '4':printf(\case '5':printf(\default: printf(\}

if (x=='5') break; }

while(1); }

13. 输入3个无符号的字符数据,要求按由大到小的顺序输出。 参考程序:

#include #include void main(void) {

unsigned char x,y,z,m; SCON=0x52; TMOD=0x20; TH1=0XF3; TR1=1;

printf(\ scanf(\printf(\

if (x

printf(\while(1); }

14. 用3种循环结构编写程序实现输出1到10的平方之和。 参考程序:

(1)while循环

#include #include void main(void) {

//输出

17

//串口初始化

//输出提示信息

//包含特殊功能寄存器库

//包含I/O函数库 //主函数

18 错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。 int i,s=0; //定义整型变量 i=1;

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

while (i<=10) //累加1到10的平方之和在s中 {

s=s+i*i; i++; }

printf(\到10的平方之和=%d\\n\while(1);

}

(2)do while循环

#include //包含特殊功能寄存器库 #include //包含I/O函数库 void main(void) //主函数 {

int i,s=0; //定义整型变量 i=1;

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; do //累加1到10的平方之和在s中 {

s=s+i*i; i++; }

while (i<=10);

printf(\到10的平方之和=%d\\n\while(1); }

(3)for循环

#include //包含特殊功能寄存器库 #include //包含I/O函数库 void main(void) //主函数 {

int i,s=0; //定义整型变量 SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

for (i=1;i<=10;i++) s=s+i*i; //累加1到10的平方之和在s中 printf(\到10的平方之和=%d\\n\while(1); }

错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

15. 对一个由5个元素组成的无符号字符数组按由小到大的顺序进行排序。 参考程序:

#include //包含特殊功能寄存器库 #include //包含I/O函数库 main() {

unsigned char f[5],m,i,j;

SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

printf(\输入任意5个字符:\

scanf(\printf(\

for (i=0;i<5;i++)

for (j=0;j<5-i;j++) if (f[j]>f[j+1])

{m=f[j];f[j]=f[j+1];f[j+1]=m;}

printf(\由小到大的顺序为:%c,%c,%c,%c,%c \printf(\while(1); }

16. 用指针实现,输入3个无符号字符数据,按由大到小的顺序输出。 参考程序:

#include //包含特殊功能寄存器库 #include //包含I/O函数库 main() {

unsigned char x,y,z;

unsigned char *p,*p1,*p2,*p3; SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

printf(\scanf(\printf(\

p1=&x;p2=&y; p3=&z;

if (*p1<*p2) {p=p1;p1=p2;p2=p;} if (*p2<*p3) {p=p2;p2=p3;p3=p;} if (*p1<*p2) {p=p1;p1=p2;p2=p;}

printf(\while(1); }

19

20 错误!使用“开始”选项卡将 标题 1,部分标题 1 应用于要在此处显示的文字。

17. 有3个学生,每个学生都包括学号、姓名和成绩,要求找出成绩最高的学生的姓名和成绩。 参考程序:

#include //包含特殊功能寄存器库 #include //包含I/O函数库 struct student {

unsigned char number[10]; unsigned char name[10]; unsigned int grade; }p1[3]; main() {

unsigned char i,j=0; SCON=0x52; //串口初始化 TMOD=0x20; TH1=0XF3; TR1=1;

printf(\for (i=0;i<3;i++) {

printf(\scanf(\printf(\scanf(\printf(\scanf(\}

for (i=1;i<3;i++) {

if (p1[i].grade>p1[j].grade) j=i; }

printf(\成绩最高的学生是:%s,成绩是:%d\printf(\}

while(1); }

第五章

1.单片机C语言与汇编语言混合编程有哪几种方式?通常采用什么方式?

答:单片机C语言和汇编语言混合编程分为汇编中调用C51函数和C51程序中引用汇编,通常使用的是在C51程序中引用汇编。在C51程序中使用汇编语言有两种情况:一种是汇编程序部分和C51程序部分为不同的模块,或不同的文件,通常由C51程序调用汇编程序模块的变量和函数(也可称为子程序或过程);另一种是嵌入式汇编,即在C51程序中嵌入一段汇编语言程序。

2.简述C51程序调用汇编程序时如何实现参数传递。


单片机课后习题答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学物理综合练习六[KH3D]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: