嵌入式工程师预备考试题
学校___ ____________                教师 ___ _____________单片机printf函数
___ ____________                ___ ______________
本次测试包括C编程(70分)、MCU基础(20分)、逻辑题(10分)
C编程部分:
一、选择题(本大题有10个小题,每个小题3分,共30分)
1.以下定义变量方法错误之一是 ( C )
A) int ab_2        B) int _2a3 C) int 2_ab    D) int ab2_
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.有一个描述:char w;int x;double y;表达式w*xy值的数据类型是( D )
A) 浮点 B) 字符 C) 整数 D) 双精度
4.下列说法正确的是( D )   
在 C 语言中
A)实参及其对应的形参各占一个独立的存储单元
  B)实参及其对应的形参占用一个存储单元
  C)只有当实参与其对应的形参同名时,才一起占用存储单元
  D)形式参数是虚拟的,不占用存储单元
5.运行以下程序的结果是( C
#include <stdio.h>
int a[3][3]={{1},{2},{3}};
诠释 b[3][3]={1,2,3,4,5};
主函数()
{
    printf("%d\n",a[1][0] + b[1][0]);
    返回0;
}
A) 2            B) 4 C) 6            D)值不一定
6.运行以下程序的结果是( D
#include “stdio.h”
主函数()
{
    int x=1, y=0, a=0, b=0;
    开关(x){
        情况1:
            开关(y){
                案例0:a++;
                案例1:b++;
            }
        案例2:a++; b++;
    }
printf("a=%d, b=%d\n", a, b) ;
}
A) a= 1,b=0        B) a=1,b=1 C)a=2,b=1            D) 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 <stdio.h>
结构研究{
    整数;
    字符名称[1 0];
    年龄;
};
无效乐趣(结构 stu *p){
    printf("%s\n",(*p).name);
}
诠释主要(){
    结构学生[3]={
        {100,"赵",20},
{101,"钱",19},
{102,"太阳",18} };
    有趣(学生+2);
}
A) 赵 B) 钱 C) 孙 D) 101
9.完成C源文件的编辑后,到可执行文件的生成,C语言处理系统必须执行的步骤是( D
A) 编辑、编译、组装、链接
B) 组装、编译、运行
C) 预编译、编译、汇编、
D) 编辑、编译、链接、运行
10.函数调用语句:fseek(fp,-20L,SEEK_END);意思是(
      将文件位置指针从文件头移动到 20 个字节
      乙 将文件位置指针从当前位置向后移动 20 个字节
      三 将文件位置指针从文件末尾移回 20 个字节
      D ) 将文件位置指针从当前位置移动 20 个字节
二、题(共4小题,每小题3分,共12分)
1.初始化值为 155 的无符号短整型变量 a 以 ____ unsigned short int a=155 _______ 的形式定义。
2.已知为(j=1,s=0;j<=9;j+=2) s=s+j;执行循环后,s 的值为___ 25_ _______。
3.该程序实现了三个数字 x、y 和 z 中最大的输出。
主要的()
{
    诠释 x=4,y=6,z=7;
诠释________ ;
如果(___ x>y__ __ )
          u=x;
别的
          u=y;
如果 ( __ u<z ____ )
u=z ;
printf("u=%d",u);
}
4.输入一个字符,如果是大写字母,则转为小写字母;如果是小写字母,则转成大写字母;其他字符保持不变;
主要的()
{
字符 ch;
scanf( %c ,&ch);
if( ( ch>='A') && (ch<='Z') )
ch = ch+32;
否则 if( (ch>='a') && (ch<='z') )
    ch=ch-32;
printf( %c ,ch);
}
三、简答题(共4个小题,每个小题5分,共20分)
1.简述const、volatile、static这三个关键字的作用
答:const用于定义一个常量,使其在程序编译和运行过程中不会随意改变;
    static用于定义一个静态变量,该变量保留最后分配的值。
2.什么是指针?指针变量和指针指向的变量有什么区别和联系?
答:指针是变量的存储地址;指针变量中存储的数据就是变量的地址,指针指向的变量中存储的数据就是变量的值,通过指针变量可以间接寻址到指向的变量的值。
3.#include <filename.h>#include "filename.h"
答: #include <filename.h>直接在标准头文件中检索文件目录;
    #include "filename.h"首先在当前源文件目录中查,如果没有到,则按照系统指定的标准头文件查文件目录。
4.简述union和struct的区别?
答: union的存储大小是根据最大的变量计算的,struct的存储大小是所有变量的总和。
四、程序分析题(2个子题,共10分)
1.请简述以下两种for循环的优缺点(5分)
// 第一的
对于 (i=0; i<N; i++)
{
如果(条件)
做一点事();
别的
做其他事情();
}
// 第二
如果(条件)
{
对于 (i=0; i<N; i++)
做一点事();
}
别的
{
对于 (i=0; i<N; i++)
做其他事情();
}
优势: 简洁的程序语句
缺点:每次执行循环都必须判断循环体的执行条件,占用大量计算机资源
优势: 占用资源少,执行效率高
缺点:程序语句较多,对前者不够简洁
2.写出运行以下程序的结果(5分)
答:运行结果为:
8,10,12,14,16
#include<stdio.h>
整数总和(int a)
{
    汽车  诠释 c=0;
    静止的 诠释 b=3;
    c+=1;
    b+=2;
    返回 (a+b+c);
}
主函数()
{
    诠释我;
    诠释一个= 2;
    for(i=0;i <5;i++)
    {
        printf("%d,", sum(a) );
    }
}
         
       
五、MCU基础部分:(共20分)
1.8051微控制器 D  ) 它还具有外部中断和串行通信等辅助功能。 (2分钟)
A ) P0 B ) P1 C ) P2 D ) P3
       
2.8051的RST引脚为_IN引脚___( IN引脚或OUT引脚)。当_high___电平出现在其末尾时8051进入复位状态。 8051保持这个值直到RST管脚接收到__low__电平,8051离开复位状态,进入程序运行状态,开始从ROM_00__H单元取指令、翻译和执行指令(2分钟)
3.存储器分为两类: __ RAM____ROM____ ,其中__ROM__是非易失性的,常用于存储数据,掉电不丢失,常用于存储程序和代码。 (2分钟)
4.以下无符号二进制数的十进制和十六进制数? (2分钟)
(1) 10110 B (2) 11111010
    答案:十进制:22 350
十六进制:16H FAH
5.简述单片机的一般结构。以您熟悉的单片机为例,简要介绍可与单片机配合使用的最小系统中包含的外围电路。 (4 分)
答:单片机部分由CPU、RAM、ROM、定时器/计数器、I/O缓冲器等部分组成;以51单片机为例,最小系统由复位电路、时钟电路等外围电路组成。
6.一个单片机控制系统有8个发光二极管:(8分)
写一个程序它们从上到下开启(不需要写完整的代码,只写核心算法,io口可以换成p0口)