嵌入式软件工程师C语言笔试题
- 格式:doc
- 大小:86.50 KB
- 文档页数:7
1、将一个字符串逆序2、将一个链表逆序3、计算一个字节里( byte )里面有多少bit被置14、搜索给定的字节 (byte)5、在一个字符串中找到可能的最长的子字符串6、字符串转换为整数7、整数转换为字符串/**题目:将一个字符串逆序*完成时间: 2006.9.30 深圳极讯网吧*版权归刘志强所有*描述:写本程序的目的是希望练一下手,希望下午去面试能成功,不希望国庆节之后再去找工作拉!*/#include <iostream>using namespace std;//#define NULL ((void *)0)char * mystrrev(char * const dest,const char * const src){if (dest==NULL && src==NULL)return NULL;char *addr = dest;int val_len = strlen(src);dest[val_len] = '\0';int i;for (i=0; i<val_len; i++){*(dest+i) = *(src+val_len-i-1);}return addr;}main(){char *str="asdfa";char *str1=NULL;str1 = (char *)malloc(20);if (str1 == NULL)cout<<"malloc failed";cout<<mystrrev(str1,str);free(str1);str1=NULL;//杜绝野指针}p=head;q=p->next;while(q!=NULL){temp=q->next;q->next=p;p=q;q=temp;}这样增加个辅助的指针就行乐。
ok 通过编译的代码:#include <stdio.h>#include <ctype.h>#include <stdlib.h>typedef struct List{int data;struct List *next;}List;List *list_create(void){struct List *head,*tail,*p;int e;head=(List *)malloc(sizeof(List));tail=head;printf("\nList Create,input numbers(end of 0):"); scanf("%d",&e);while(e){p=(List *)malloc(sizeof(List));p->data=e;tail->next=p;tail=p;scanf("%d",&e);}tail->next=NULL;return head;}List *list_reverse(List *head){List *p,*q,*r;p=head;q=p->next;while(q!=NULL){r=q->next;q->next=p;p=q;q=r;}head->next=NULL;head=p;return head;}void main(void){struct List *head,*p;int d;head=list_create();printf("\n");for(p=head->next;p;p=p->next)printf("--%d--",p->data);head=list_reverse(head);printf("\n");for(p=head;p->next;p=p->next)printf("--%d--",p->data);}编写函数数 N 个 BYTE的数据中有多少位是1。
嵌入式C语言笔试题及答案预处理器(Preprocessor)1. 用预处理指令define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)define _PER_YEAR (60 某 60 某 24 某 365)UL我在这想看到几件事情:1). define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。
记住,第一印象很重要。
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
define MIN(A,B) ((A) 6") : puts("6”。
原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。
因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。
这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。
如果你答错了这个问题,你也就到了得不到这份工作的边缘。
13. 评价下面的代码片断:unsigned int zero = 0;unsigned int compzero = 0某FFFF;/某1's complement of zero 某/对于一个int型不是16位的处理器为说,上面的代码是不正确的。
应编写如下: unsigned int compzero =~0; 这一问题真正能揭露出应试者是否懂得处理器字长的重要性。
在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。
到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。
四川九洲电器集团有限责任公司成都技术中心嵌入式软件开发人员笔试试题本笔试试题分为C语言基础、算法、思维能力三部份。
总分100分,描述思路和最后结果都很重要。
一、C语言基础1. 语句实现x是否为2的若干次幂的判断。
(5分)2. 宏定义写出swap(x,y)。
(5分)3. 用变量a给出下面的定义。
(16分,各两分)a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)d) 一个有10个整型数的数组(An array of 10 integers)e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer )4. 定义int **a[3][4],占有的内存空间为多少。
(4分)5. 写一段程序判断大小端(endian)的问题。
(10分)6. 写一段程序判断大小端(endian)的问题。
(10分)二、算法7. 给出一个函数来输出一个字符串的所有排列。
嵌入式C开发人员的最好的0x10道笔试题约定:1) 下面的测试题中,认为所有必须的头文件都已经正确的包含了2)数据类型char 一个字节1 byteint 两个字节2 byte (16位系统,认为整型是2个字节)long int 四个字节4 bytefloat 四个字节4 byetdouble 八个字节8 bytelong double 十个字节10 bytepointer 两个字节2 byte(注意,16位系统,地址总线只有16位)第1题: 考查对volatile关键字的认识#include<setjmp.h>static jmp_buf buf;main() { volatile int b; b=3; if(setjmp(buf)!=0) { printf("%d ", b); exit(0); } b=5; longjmp(buf , 1);}请问,这段程序的输出是(a) 3(b) 5(c) 0(d) 以上均不是第2题:考查类型转换main(){ struct node { int a; int b; int c; }; struct node s= { 3,5,6 }; struct node *pt = &s; printf("%d" , *(int*)pt);}这段程序的输出是:(a) 3(b) 5(c) 6(d) 7第3题:考查递归调用int foo ( int x , int n){ int val; val =1; if (n>0) { if (n%2 == 1) val = val*x; val = val * foo(x*x , n/2); } return val;}这段代码对x和n完成什么样的功能(操作)?(a) x^n (x的n次幂)(b) x*n(x与n的乘积)(c) n^x(n的x次幂)(d) 以上均不是第4题:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人main() { int a[5] = {1,2,3,4,5}; int *ptr = (int*)(&a+1); printf("%d %d" , *(a+1),*(ptr-1) );}这段程序的输出是:(a) 2 2(b) 2 1(c) 2 5(d) 以上均不是第5题:考查多维数组与指针void foo(int [][3] ); main(){ int a [3][3]= { { 1,2,3} ,{ 4,5,6},{7,8,9}}; foo(a); printf("%d" , a[2][1]);}void foo( int b[][3]) { ++ b; b[1][1] =9;}这段程序的输出是:(a) 8(b) 9(c) 7(d)以上均不对第6题目:考查逗号表达式main(){ int a, b,c, d; a=3; b=5; c=a,b; d=(a,b); printf("c=%d" ,c); printf("d=%d" ,d);}这段程序的输出是:(a) c=3 d=3(b) c=5 d=3(c) c=3 d=5(d) c=5 d=5第7题:考查指针数组main(){ int a[][3] = { 1,2,3 ,4,5,6}; int (*ptr)[3] =a; printf("%d %d " ,(*ptr)[1],(*ptr)[2] ); ++ptr; printf("%d %d" ,(*ptr)[1], (*ptr)[2] );}这段程序的输出是:(a) 2 3 5 6(b) 2 3 4 5(c) 4 5 0 0(d) 以上均不对第8题:考查函数指针int *f1(void){ int x =10; return(&x);}int *f2(void){ int*ptr; *ptr =10; return ptr;}int*f3(void){ int *ptr; ptr=(int*) malloc(sizeof(int)); return ptr;}上面这3个函数哪一个最可能引起指针方面的问题(a) 只有f3(b) 只有f1 and f3(c) 只有f1 and f2(d) f1 , f2 ,f3第9题:考查自加操作(++)main(){ int i=3; int j; j = sizeof(++i+ ++i); printf("i=%d j=%d", i ,j);}这段程序的输出是:(a) i=4 j=2(b) i=3 j=2(c) i=3 j=4(d) i=3 j=6第10题:考查形式参数,实际参数,指针和数组void f1(int *, int); void f2(int *, int); void(*p[2]) ( int *, int);main(){ int a; int b; p[0] = f1; p[1] = f2; a=3; b=5; p[0](&a , b); printf("%d\t %d\t" , a ,b); p[1](&a ,b); printf("%d\t %d\t" , a ,b);}void f1( int* p , int q){ int tmp; tmp =*p; *p = q; q= tmp;}void f2( int* p , int q){ int tmp; tmp =*p; *p = q; q= tmp;}这段程序的输出是:(a) 5 5 5 5(b) 3 5 3 5(c) 5 3 5 3(d) 3 3 3 3第11题:考查自减操作(--)void e(int ); main(){ int a; a=3; e(a);}void e(intn){ if(n>0) { e(--n); printf("%d" , n); e(--n); }}这段程序的输出是:(a) 0 1 2 0(b) 0 1 2 1(c) 1 2 0 1(d) 0 2 1 1第12题:考查typedef类型定义,函数指针typedef int (*test) ( float * , float*)test tmp;tmp 的类型是(a) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)Pointer to function of having two arguments that is pointer to float(b) 整型(c) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型Pointer to function having two argument that is pointer to float and return int(d) 以上都不是第13题:数组与指针的区别与联系main(){ char p; char buf[10] ={ 1,2,3,4,5,6,9,8}; p = (buf+1)[5]; printf("%d" , p);}这段程序的输出是:(a) 5(b) 6(c) 9(d) 以上都不对第14题: 考查指针数组的指针Void f(char**);main(){ char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" }; f( argv );}voidf( char **p ){ char* t; t= (p+= sizeof(int))[-1]; printf( "%s" , t);}这段程序的输出是:(a) ab(b) cd(c) ef(d) gh第15题:此题考查的是C的变长参数,就像标准函数库里printf()那样,这个话题一般国内大学课堂是不会讲到的,不会也情有可原呵呵,#include<stdarg.h>int ripple ( int , ...);main(){ int num; num = ripple ( 3, 5,7); printf( " %d" , num);}int ripple (int n, ...){ int i , j; int k; va_list p; k= 0; j = 1; va_start( p , n); for (; j<n; ++j) { i = va_arg( p , int); for (; i; i &=i-1 ) ++k; } return k;}这段程序的输出是:(a) 7(b) 6(c) 5(d) 3第16题:考查静态变量的知识int counter (int i){ static int count =0; count = count +i; return (count );}main(){ int i , j; for (i=0; i <=5; i++) j = counter(i);}本程序执行到最后,j的值是:(a) 10(b) 15(c) 6(d) 7详细参考答案第1题: (b)volatile字面意思是易于挥发的。
C语言笔试选择题嵌入式笔试题选择题 c语言笔试选择题|嵌入式笔试题选择题c语言笔试选择题篇1以下程序的运转结果就是:#include"stdio.h"main(),,{inta,b,d=;a=d/%9b=(一1)&&(一1);printf("%d,%d",a,b);}a)6,1b)2,1c)6,0d)2,0c继续执行以下语句后a的值:inta,b,c;a=b=c=1;++a||++b&&++ca)错误b)0c)2d)1a继续执行以下语句后b的值:inta=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);a)6b)0c)1d)4c以下不正确的if语句形式是:a)if(x>y&&x!=y);b)if(x==y)x+=yc)if(x!=y)scanf("%d",&x)elsescanf("%d",&y);d)if(xac语言笔试选择题篇2*1a一个c程序的继续执行从_____。
a)本程序的main函数开始,到main函数结束b)本程序文件的第一个函数已经开始,至本程序文件的最后一个函数完结c)本程序的main函数开始,到本程序文件的最后一个函数结束d)本程序文件的第一个函数已经开始,至本程序main函数完结*2c以下叙述正确的是:a)在c程序中,main函数必须坐落于程序的最为前面b)c程序的每行中只能写一条语句c)c语言本身没输入输出语句d)在对一个c程序进行编译的过程中,可发现注释中的拼写错误*3d以下描述不恰当的就是。
a)一个c源程序可由一个或多个函数组成b)一个c源程序必须涵盖一个main函数c)c程序的基本组成单位是函数d)在c程序中,注解表明就可以坐落于一条语句的后面*4cc语言规定:在一个源程序中,main函数的位置。
软件工程师+嵌入式C/C++笔试题一、你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用?答:MVC设计模式(应用观察者模式的框架模式)M: Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层(Independent of presentation)。
V: View(Presentation layer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。
C: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图MVC框架的一种实现模型模型二(Servlet-centric):JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC 的实现模式。
StrutsMVC框架(Web application frameworks)Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。
Struts提供了一些组件使用MVC开发应用程序:Model:Struts没有提供model类。
这个商业逻辑必须由Web应用程序的开发者以JavaBean 或EJB的形式提供View:Struts提供了action form创建form bean, 用于在controller和view间传输数据。
此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。
Controller:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。
嵌入式c语言笔试题1. 编写一个C程序,从键盘读入两个整数a和b,计算它们的和并输出。
```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:\n");scanf("%d%d", &a, &b);sum = a + b;printf("它们的和为:%d\n", sum);return 0;}```2. 编写一个C函数,判断一个整数是否是奇数,并返回判断结果(1表示奇数,0表示偶数)。
```c#include <stdio.h>int isOdd(int num) {if (num % 2 == 1) {return 1;} else {return 0;}}int main() {int num;printf("请输入一个整数:\n");scanf("%d", &num);if (isOdd(num) == 1) {printf("是奇数\n");} else {printf("是偶数\n");}return 0;}```3. 编写一个C函数,求一个整数数组中的最大值并返回。
#include <stdio.h>int findMax(int array[], int size) {int max = array[0];for (int i = 1; i < size; i++) {if (array[i] > max) {max = array[i];}}return max;}int main() {int size;printf("请输入数组的大小:\n"); scanf("%d", &size);int array[size];printf("请输入数组元素:\n"); for (int i = 0; i < size; i++) {scanf("%d", &array[i]);int max = findMax(array, size);printf("最大值为:%d\n", max);return 0;}```4. 编写一个C程序,实现冒泡排序算法对一个整数数组进行升序排序并输出结果。
嵌入式软件工程师笔试题(含答案)嵌入式软件工程师笔试题(含答案) (2019-09-09 22:23)分类:面试题选择题1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是A.(a+b)*c/2B.(1/2)*(a+b)*cC.(a+b)*c*1/2D.c/2*(a+b)参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。
2:为了向二进制文件尾部增加数据,打开文件的方式应采用A.″ab″B.″rb+″C.″wb″D.″wb+″参考答案:D3:下述程序执行后的输出结果是#includemain(){int x='f';printf("%c\n",'a'+(x-'a'+1));}A.gB.hC.iD.j参考答案:A4:C语言中,下列运算符优先级最高的是A.!B.%C.>>D.==参考答案:A5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。
A.*aB.a [ 0 ]C.aD.a++参考答案:D6:执行语句“ k=7>>1; ”后,变量 k 的当前值是A.15B.31C.3D.1参考答案:C7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型 A.voidB.charC.floatD.int参考答案:D8:若main()函数带参数,参数个数最多是A.0B.1C.2D.3参考答案:C 只知道有定义形式main(int argc,char* argv[])) 9:若有宏定义:#define MOD(x,y) x%y则执行以下语句后的输出结果是int a=13,b=94;printf(″%d\n″,MOD(b,a+4));A.5B.7C.9D.11参考答案:B10:下列各个错误中,哪一个不属于编译错误A.改变 x 原值 3 为 5 ,写作“ x==5 ;”B.花括号不配对C.复合语句中的最后一条语句后未加分号D.变量有引用、无定义参考答案:A11:下列程序段运行后, x 的值是( )a=1;b=2;x=0;if(!( -- a))x -- ;if(!b)x=7;else ++x;A.0B.3C.6D.7参考答案:A12:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是A.defB.dC.eD.0参考答案:C14:下列转义字符中错误的是A.′\000′B.′\14′C.′\x111′D.′\2′参考答案:C error C2022: '273' : too big for character15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算参考答案:B16:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B17:表达式strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个A.非零整数B.浮点数C.0D.字符参考答案: A18:设struct{ short a;char b;float c;}cs;则sizeof(cs)的值是A.4B.5C.6D.7参考答案: D 字节对齐的话应该是819:若变量已正确定义,表达式( j=3 , j++ )的值是A.3B.4C.5D.0参考答案:A20:C 语言中运算对象必须是整型的运算符是A.%B./C.!D.**参考答案:A简答题21:打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...例子:当N =5,打印出下面的图形:X X X X XX Y Y Y XX Y 0 Y XX Y Y Y XX X X X X22:谈谈COM的线程模型。
c++嵌入式软件工程师笔试题1. C++是什么?2. C++中`this`指针的含义是什么?3. 什么是异常处理?如何在C++中实现?4. 什么是多态?在C++中如何实现?5. 什么是虚函数?6. 什么是构造函数?它在C++中的作用是什么?7. C++中的析构函数有何用途?8. 请描述一下内存分区,并说明堆和栈的区别。
9. 如何定义类的成员函数为静态的?10. 请简述一下拷贝构造函数。
11. `const`关键字在C++中的用途有哪些?12. 在C++中,`inline`关键字有何作用?13. 请描述C++中的RAII技术。
14. `new`和`malloc`在C++中的主要区别是什么?15. 请描述C++中的三种基本控制结构。
16. `switch`语句在C++中允许的变量类型有哪些?17. 如何声明一个常量整型数组?18. `sizeof`运算符在C++中的作用是什么?19. 什么是全局变量和局部变量?它们有什么区别?20. 什么是函数的重载?21. 什么是函数的默认参数?22. C++中的友元函数是什么?23. 请描述一下C++中的内联函数。
24. 什么是STL(标准模板库)?25. `vector`、`list`、`deque`的区别是什么?26. C++中的STL容器如何进行排序?27. 什么是STL中的迭代器?它与指针有何相似之处?28. `auto`关键字在C++中的用途是什么?29. 什么是lambda表达式?如何使用它?30. C++中的STL算法有哪些常见的用途?31. 什么是多线程编程?在C++中如何实现多线程?32. 请描述一下C++中的线程安全问题。
33. C++中的智能指针是什么?它与原始指针有何不同?34. `nullptr`与`NULL`的区别是什么?35. 请解释C++中的深拷贝和浅拷贝。
36. 如何使用C++中的IO流进行文件读写操作?37. 什么是异常安全代码?如何在C++中编写异常安全代码?38. `final`关键字在C++中的含义是什么?它与`override`关键字有何联系?39. C++中的STL容器如何进行查找操作?40. 请描述一下C++中的STL容器的容量和大小。
选择题1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是A.(a+b)*c/2B.(1/2)*(a+b)*cC.(a+b)*c*1/2D.c/2*(a+b)参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因为在计算1/2是就是0,如果改成1/2.0就正确了。
2:为了向二进制文件尾部增加数据,打开文件的方式应采用A.″ab″B.″rb+″C.″wb″D.″wb+″参考答案:D3:下述程序执行后的输出结果是#includemain(){int x='f';printf("%c\n",'a'+(x-'a'+1));}A.gB.hC.iD.j参考答案:A4:C语言中,下列运算符优先级最高的是A.!B.%C.>>D.==参考答案:A5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。
A.*aB.a [ 0 ]C.aD.a++参考答案:D6:执行语句“ k=7>>1; ”后,变量 k 的当前值是A.15B.31C.3D.1参考答案:C7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型A.voidB.charC.floatD.int参考答案:D8:若main()函数带参数,参数个数最多是A.0B.1C.2D.3参考答案:C 只知道有定义形式main(int argc,char* argv[]))9:若有宏定义:#define MOD(x,y) x%y则执行以下语句后的输出结果是int a=13,b=94;printf(″%d\n″,MOD(b,a+4));A.5B.7C.9D.11参考答案:B10:下列各个错误中,哪一个不属于编译错误A.改变 x 原值 3 为 5 ,写作“ x==5 ;”B.花括号不配对C.复合语句中的最后一条语句后未加分号D.变量有引用、无定义参考答案:A11:下列程序段运行后, x 的值是( )a=1;b=2;x=0;if(!( -- a))x -- ;if(!b)x=7;else ++x;A.0B.3C.6D.7参考答案:A12:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是A.defB.dC.eD.0参考答案:C14:下列转义字符中错误的是A.′\000′B.′\14′C.′\x111′D.′\2′参考答案:C error C2022: '273' : too big for character15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为A.算术运算、赋值运算、关系运算B.算术运算、关系运算、赋值运算C.关系运算、赋值运算、算术运算D.关系运算、算术运算、赋值运算参考答案:B16:设#define N 3#define Y(n) ((N+1)*n)则表达式2*(N+Y(5+1))的值是A.42B.48C.54D.出错参考答案:B17:表达式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一个A.非零整数B.浮点数C.0D.字符参考答案: A18:设struct{ short a;char b;float c;}cs;则sizeof(cs)的值是A.4B.5C.6D.7参考答案: D 字节对齐的话应该是819:若变量已正确定义,表达式( j=3 , j++ )的值是A.3B.4C.5D.0参考答案:A20:C 语言中运算对象必须是整型的运算符是A.%B./C.!D.**参考答案:A简答题21:打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...例子:当N =5,打印出下面的图形:X X X X XX Y Y Y XX Y 0 Y XX Y Y Y XX X X X X22:谈谈的线程模型。
嵌入式软件工程师笔试题一、题目描述某公司正在招聘一名嵌入式软件工程师,为了筛选合适的人选,决定进行一场笔试。
请根据以下要求完成以下三个问题:1. 设计一个嵌入式软件系统,要求对温度进行实时监测,并根据温度变化控制一个风扇的转速。
2. 编写一个C语言函数,实现对一个整型数组的排序功能。
3. 使用C语言编写一个简单的通信协议,实现两个设备之间的数据传输。
二、嵌入式软件系统设计在嵌入式软件系统设计方面,以下是一个简要的设计方案:1. 硬件配置:a. 主控芯片:选择一款适合的低功耗嵌入式处理器,如ARM Cortex-M系列。
b. 温度传感器:选择一款精度高、稳定性好的温度传感器,可通过I2C或SPI接口与主控芯片通信。
c. 风扇控制器:选择一款与主控芯片兼容的风扇控制器,可通过PWM信号控制风扇转速。
2. 软件设计:a. 主程序循环:主控芯片通过定时器中断实现周期性监测温度并控制风扇的转速。
b. 温度读取:通过I2C或SPI通信协议读取温度传感器的温度值。
c. 温度判断:根据温度值判断是否需要调整风扇转速。
d. 风扇控制:通过PWM信号控制风扇的转速,根据温度变化调整占空比。
三、整型数组排序函数实现以下是一个简单的C语言函数,实现对一个整型数组的排序功能:```cvoid arraySort(int arr[], int length) {int i, j, temp;for (i = 0; i < length - 1; i++) {for (j = 0; j < length - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}```四、简单通信协议设计以下是一个使用C语言编写的简单通信协议,实现两个设备之间的数据传输:```c// 发送端void sendData(uint8_t data) {// 将数据通过串口发送给接收端UART_send(data);}// 接收端void receiveData() {while (!UART_dataAvailable()) {} // 等待数据接收完成uint8_t data = UART_receive(); // 获取接收到的数据// 对接收到的数据进行处理// ...```根据上述设计方案和示例代码,嵌入式软件工程师可以完成相关开发任务,实现温度监测与风扇控制、数组排序功能以及设备间的简单数据传输。
嵌入式c语言经典笔试题目1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。
记住,第一印象很重要。
2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B)((A)<= (B) ? (A) : (B))这个测试是为下面的目的而设的:1)标识#define在宏中应用的基本知识。
这是很重要的。
因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2)三重条件操作符的知识。
这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3)懂得在宏中小心地把参数用括号括起来4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3.预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。
这问题对区分一个正常的伙计和一个书呆子是很有用的。
只有书呆子才会读C语言课本的附录去找出象这种问题的答案。
当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。
死循环(Infinite loops)4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。
嵌入式软件工程师笔试题一、选择题(每题2分,共20分)1. 在C语言中,下列哪个关键字用于定义结构体?A. ifB. switchC. structD. for2. 在嵌入式系统中,通常用于实现实时多任务操作的机制是:A. 线程B. 进程C. 中断D. 信号量3. 下列哪种存储器属于非易失性存储器?A. RAMB. ROMC. EEPROMD. SDRAM4. 在ARM架构中,用于存储程序计数器(PC)的寄存器是:A. R0B. R1C. R15D. SP5. 以下哪种通信协议不属于工业通信协议?A. ModbusB. CANC. HTTPD. Profibus6. 在嵌入式Linux开发中,设备树(Device Tree)的主要作用是:A. 描述硬件信息B. 配置内核参数C. 管理文件系统D. 运行应用程序7. 以下哪个是实时操作系统(RTOS)的特点?A. 支持多任务B. 支持多线程C. 支持图形界面D. 支持网络通信8. 在C语言中,用于动态分配内存的函数是:A. mallocB. freeC. callocD. realloc9. 以下哪种传感器通常用于测量物体的速度?A. 加速度传感器B. 陀螺仪C. 霍尔传感器D. 光电传感器10. 在嵌入式系统中,串行通信接口UART的主要作用是:A. 连接显示器B. 连接键盘C. 连接鼠标D. 连接串行设备二、填空题(每题2分,共20分)11. 在C语言中,使用关键字________可以定义一个指向函数的指针。
12. 在嵌入式系统中,________是一种常用的低功耗无线通信技术。
13. 为了在嵌入式设备中实现网络功能,通常需要使用________协议栈。
14. 在嵌入式Linux系统中,使用________命令可以查看当前系统的进程信息。
15. 一个典型的嵌入式系统通常包括硬件平台、________、外设和应用程序。
16. 在ARM架构中,异常处理程序通常存储在向量表的________部分。