单片机嵌入式应聘测试题含答案.docx
《单片机嵌入式应聘测试题含答案.docx》由会员分享,可在线阅读,更多相关《单片机嵌入式应聘测试题含答案.docx(9页珍藏版)》请在冰豆网上搜索。
单片机嵌入式应聘测试题含答案
单片机嵌入式应聘测试题(含答案)
嵌入式工程师初试试题
学校_______________院系________________
姓名________________电话_________________
本试题包括C程序设计(70分)、单片机基础(20分)、逻辑题(10分)
C程序设计部分:
一、选择题(本大题共10小题,每小题3分,共30分)
1.下面定义变量方法错误的一项是(C)
A)intab_2B)int_2a3C)int2_abD)intab2_
2.判断char型变量ch是否为大写字母的正确表达式是(B)
A)‘A’<=ch<=’Z’B)(ch>=’A’)&&(ch<=’Z’)
C)(ch>=’A’)&(ch<=’Z’)D)(‘A’<=ch)AND(‘Z’>=ch)
3.设有说明:
charw;intx;doubley;则表达式w*x-y值的数据类型为(D)
A)floatB)charC)intD)double
4.以下正确的说法是(D)
在C语言中
A)实参和与其对应的形参各占用独立的存储单元
B)实参和与其对应的形参共占用一个存储单元
C)只有当实参和与其对应的形参同名时才共占用存储单元
D)形参是虚拟的,不占用存储单元
5.下面程序运行结果是(C)
#include
inta[3][3]={{1},{2},{3}};
intb[3][3]={1,2,3,4,5};
intmain()
{
printf("%d\n",a[1][0]+b[1][0]);
return0;
}
A)2B)4C)6D)值不一定
6.下面程序运行结果是(D)
#include"stdio.h"
intmain()
{
intx=1,y=0,a=0,b=0;
switch(x){
case1:
switch(y){
case0:
a++;
case1:
b++;
}
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
A)a=1,b=0B)a=1,b=1C)a=2,b=1D)a=2,b=2
7.有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是(D)
A)5 B)6 C)8 D)9
8.下面程序运行结果是(C)
#include
structstu{
intnum;
charname[10];
intage;
};
voidfun(structstu*p){
printf("%s\n",(*p).name);
}
intmain(){
structstustudents[3]={
{100,"zhao",20},
{101,"qian",19},
{102,"sun",18}};
fun(students+2);
}
A)zhaoB)qianC)sunD)101
9.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为(D)
A)编辑、编译、汇编、连接
B)汇编、编译、链接、运行
C)预编译、编译、汇编、链接
D)编辑、编译、连接、运行
10.函数调用语句:
fseek(fp,-20L,SEEK_END);的含义是(A)
A)将文件位置指针移到距离文件头20个字节处
B)将文件位置指针从当前位置向后移动20个字节
C)将文件位置指针从文件末尾处后退20个字节
D)将文件位置指针移到离当前位置20个字节处
二、填空题(本大题共4小题,每小题3分,共12分)
1.初始化值是155的无符号短整型变量a的定义形式为____unsignedshortinta=155_______。
2.已知for(j=1,s=0;j<=9;j+=2)s=s+j;执行循环后,s的值是___25________。
3.该程序实现输出x,y,z三个数中的最大者。
main()
{
intx=4,y=6,z=7;
int__u______;
if(___x>y____)
u=x;
else
u=y;
if(__uu=z;
printf(“u=%d”,u);
}
4.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变;
main()
{
charch;
scanf(“%c”,&ch);
if((ch>=’A’)&&(ch<=’Z’))
ch=ch+32;
elseif((ch>=’a’)&&(ch<=’z’))
ch=ch-32;
printf(“%c”,ch);
}
三、简答题(本大题共4小题,每小题5分,共20分)
1.简述const、volatile、static三个关键字的作用
答:
const用来定义一个常量,使其在程序编译和运行过程中不会随意改变;
Static用以定义一个静态变量,该变量会保留上一次所赋的值。
2.什么是指针?
指针变量和指针所指向的变量的区别和联系是什么?
答:
指针即变量的存储地址;指针变量存储的数据是变量的地址,而指针所指向的变量存储的数据是变量的值,通过指针变量可间接寻址到其所指向变量的值。
3.#include和#include“filename.h”有什么区别?
答:
#include直接在标准头文件中检索文件目录;
#include“filename.h”首先在当前源文件目录中查找,若未找到则按系统规定的标准头头文件检索文件目录。
4.简述union(共用体)和struct(结构体)的不同?
答:
union所占内存大小按内存最大的一个变量计算,而struct所占内存大小为所有变量内存相加。
4、程序分析题(本大题共2小题,共10分)
1.请简述以下两个for循环的优缺点(5分)
//第一个
for(i=0;i{
if(condition)
DoSomething();
else
DoOtherthing();
}
//第二个
if(condition)
{
for(i=0;iDoSomething();
}
else
{
for(i=0;iDoOtherthing();
}
优点:
程序语句简练
缺点:
每次都循环都要判断循环体的执行条件,占用计算机资源较多
优点:
占用资源较少,执行效率高
缺点:
程序语句较多,不够前者简练
2.写出下面程序的运行结果(5分)
答:
运行结果为:
8,10,12,14,16
#include
intsum(inta)
{
autointc=0;
staticintb=3;
c+=1;
b+=2;
return(a+b+c);
}
intmain()
{
inti;
inta=2;
for(i=0;i<5;i++)
{
printf("%d,",sum(a));
}
}
5、单片机基础部分:
(共20分)
1.8051单片机的( D)口的引脚,还具有外中断、串行通信等第二功能。
(2分)
A)P0 B)P1 C)P2 D)P3
2.8051的引脚RST是_IN脚___(IN脚还是OUT脚),当其端出现_高___电平时,8051进入复位状态。
8051一直维持这个值,直到RST脚收到__低__电平,8051才脱离复位状态,进入程序运行状态,从ROM _00__H单元开始取指令并翻译和执行。
(2分)
3.半导体存储器分成两大类 __RAM___和__ROM____,其中__ROM__具有非易失性,常用于存储数据,掉电不丢失,常用于存储程序、代码。
(2分)
4.进制转换:
下列无符号二进制数的十进制数和十六进制数是多少?
(2分)
(1)10110B
(2)11111010
答:
十进制:
22350
十六进制:
16HFAH
5.简述单片机内部构造一般有哪几部分组成?
以你熟悉的单片机为例简述一个可以工作单片机最小系统包括哪些外围电路。
(4分)
答:
单片机内部由CPU、RAM、ROM、定时器/计数器、I/O缓存器等部分组成;以51单片机为例,其最小系统由复位电路、时钟电路等外围电路组成。
6.某单片机控制系统有8个发光二极管:
(8分)
编写程序使他们由上向下轮流点亮(无需写出完整代码,写出核心算法即可,io口可用p0口代替)。
While
(1)
{
P0=11111110B;
DELAY();//延时函数
P0=11111101B;
DELAY();
P0=11111011B;
DELAY();
P0=11110111B;
DELAY();
P0=11101111B;
DELAY();
P0=11011111B;
DELAY();
P0=10111111B;
DELAY();
P0=01111111B;
DELAY();
}
6、逻辑题(10分)
有三炷香,每炷香烧完要1小时,香的粗细是不一样的(如上图),也就是说,香燃烧的速度不一样,怎么才能判断30分钟,45分钟,1个小时?