41. 请写出下列代码的输出内容
#include<stdio.h>
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);
return 0;
}
b,c,d:10,12,120
42. 请问下面的代码有什么问题?
#include <stdio.h>
#include <stdlib.h>
void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,"hello world");
}
int main( )
{
char *str=NULL;
getmemory(str);
printf("%s/n",str);
free(str);
return 0;
}
程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险
43.请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#include"string.h"
main()
{
char*src="hello,world";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
return 0;
}
int main()
{
char* src = "hello,world";
int len = strlen(src);
char* dest = (char*)malloc(len+1);//要为\0分配一个空间
char* d = dest;
char* s = &src[len-1];//指向最后一个字符
while( len-- != 0 )
*d++=*s--;
*d = 0;//尾部要加\0
printf("%s\n",dest);
free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
return 0;
}
44.请用宏定义写出swap(x,y)函数。
#define swap(x, y)\
x = x + y;\
y = x - y;\
x = x - y;
45.请简述嵌入式系统硬件层的组成?
硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。
嵌入式核心模块=微处理器+电源电路+时钟电路+存储器
Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。
46.请问何谓单片机?单片机与一般微型计算机相比,具有哪些特点?
单片机是在一块集成电路上把CPU、存储器、定时器/计数器及多种形式的I/O接口集成在一起而构成的微型计算机。它与通用微型计算机相比,具有如下特点:
(1) 单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM;
(2) 采用面向控制的指令系统,控制功能强;
(3) 多样化的I/O接口,多功能的I/O引脚;
(4) 产品系列齐全,功能扩展性强;
(5) 功能是通用的,像一般微处理机那样可广泛地应用在各个方面。
47.请解释名词:时钟周期、状态周期、机器周期和指令周期?
时钟周期:也称为震荡周期,定义为时钟频率的倒数(时钟周期是单片机外接晶振的倒数,如12Mhz的晶振,它的时钟周期就是1/12us),它是单片机中最基本的、最小的时间单位。
状态周期:它是时钟周期的两倍
机器周期:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作,如取指令、存储器读写等。它由12个时钟周期(6个状态周期)组成。
指令周期:他是指CPU执行一条指令所需要的时间。一般一个指令周期含有1~4个机器周期。
48.请简述你对单片机空闲与掉电模式的了解?
1、空闲模式:除CPU处于休眠状态之外,其余硬件全部处于活动状态。
2、掉电模式:也成为休眠模式,外部晶振停振,CPU,定时器、串行口全部停止工作,只有外部中断继续工作。
49.请问8051单片机内部包含哪些主要逻辑功能部件?
8051单片机是个完整的单片微型计算机。芯片内部包括下列硬件资源:
(1)8位CPU;
(2)4KB的片内程序存储器ROM。可寻址64KB程序存储器和64KB外部数据存储器;
(3)128B内部RAM;
(4)21个SFR;
(5)4个8位并行I/O口(共32位I/O线);
(6)一个全双工的异步串行口;
(7)两个16位定时器/计数器;
(8)5个中断源,两个中断优先级;
(9)内部时钟发生器。
50.请简述51单片机串行口的结构?
串行口结构:51单片机的串行口是一个可编程全双工的通信接口,具有UART(通用异步收发器)的全部功能,能同时进行数据的发送和接收。串行口主要由两个独立的串行数据缓冲寄存器SBUF(一个发送缓冲寄存器,一个接收缓冲寄存器)和发送控制器、接收控制器、输入移位寄存器以及若干控制门电路组成。