嵌入式开发c语言经典笔试题-含答案
嵌入式Linux C语言应用开发试题及答案
嵌入式Linux C语言应用开发试题及答案一:选择题1.下面不是对Linux操作系统特点描述的是( B )。
[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务2.查看创建目录命令mkdir的帮助文档,可以使用命令( D)。
[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir3.在C语言中,要求运算数必须是整型的运算符是( D )。
[A] / [B] ++ [C] != [D] %4.C语言程序的三种基本程序是( A )。
[A] 顺序结构,选择结构,循环结构[B] 递归结构,循环结构,转移结构[C] 嵌套结构,递归结构,顺序结构[D] 循环结构,转移结构,顺序结构5.数据结构包含的内容不包括(a)A.线性结构B.存储结构C.逻辑结构D.数据运算6.向一个单链表linklist中的节点t后面插入一个节点p,下列操作正确的是(a)A.p->next = t->next;t->next = p;B.t->next = p->next;t->next = p;C.t->next = p;p->next = t->next;D.t->next = p;t->next = p->next;7.下列哪种打开文件的方式不能修改文件已有的内容( B )[A] r+ [B] r [C] w+ [D] a+8.以下哪种不是进程的状态( B )[A] 运行态[B] 锁定态[C] 睡眠态[D] 停止态9.常用来进行多任务同步的机制是( B )[A]管道[B] 信号量[C]信号[D]共享内存10.下列对于有名管道描述错误的是( D )[A] 可以用于互不相关的进程间[B] 通过路径名来打开有名管道[C] 在文件系统中可见[D] 管道内容保存在磁盘上11.不能被用户进程屏蔽的信号是( B )[A] SIGINT [B] SIGSTOP [C] SIGQUIT [D] SIGILL12.fread()返回值的含义是( B )[A] 读取的字节数[B] 读取的对象数[C] 缓冲区的首地址[D] 013.以下不属于socket的类型的是 ( )。
嵌入式软件开发面试C语言笔试题+答案
Chapter2 系统类
***********************/
1. Linux 和 Uc/os 是如何实现任务调度的?
2. Bootloader 移植过程要注意的事项,要做哪些工作 3. Emacs 用过没有?
/************************
h) int (*a[10]) (int); // An array of 10 pointers to functions that take an in teger argument and return an integer
5. 什么是存储机制里的大、小端模式?试举例说明 大端模式(big-edian):MSB 存放在最低端的地址上。举例,双字节数0x1234以 big-endian 的方式存在起始地
7. 定义一个返回值是指向函数的指针且有一个指向函数的指针作参数的函数。
通用形式如下:
typedef int (*P)( );
// 定义一个函数指针 P 类型
P function( int (*p)( ) );
// 定义一个函数返回值 P 类型,且定义一个指向函数的指针 p 作参数
8. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365) UL // UL 怎么个用法?你暂不要加
SLNode *p,*q; int j; p=head; j=-1; while( (p->next!=NULL) && (j<(i-1)) ) {
int a = 5, b = 7, c;
嵌入式C高级编程笔试A(有答案)3.11
《嵌入式C高级编程笔试》试卷A一、选择题(35*2’)注意程序运行在32位系统下1. 语句printf(″s\\t″)的输出结果为( B )A s\\tB s\tC s\D s2.若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是(B)A、(exp==0)B、(exp!=0)C、(exp==1)D、(exp!=1)3. float a = 3.2;(int)a;printf("a = %d, \n", a);打印什么,运行后a的类型是(D)A. 3.000000, intB. 3, intC. 3.0 floatD. 既不是3,也不是3.000000, float4.有以下代码:void func(){int a;a++;printf("a = %d\n", a);}那么变量a储存在( A )A. 栈B. 堆C. 正文段D. 未初始化数据段5. 在C语言中, char型数据在内存中的存储形式是( D )A、补码B、反码C、原码D、ASCII码6.假如指针p已经指向某个整型变量x,则(*p)++相当于()BA、p++B、x++C、*(p++)D、&x++7.为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( C )组成配对关系。
A. 缩排位置相同的ifB. 在其之前未配对的ifC. 在其之前未配对的最近的ifD.同一行上的if8.设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( B )。
A.P+i*2B. P+(i-1)*2C. P+(i-1)D. P+i9.有函数void func(){//staic int c=0;c++;printf("%d\n", c);}那么连续调用两次,打印的结果是?( B )A. 1, 1B. 1, 2C. 123495,123496(因为c没初始化,内部的值随机,第二次会比第一次加1)D. 123495, 123495(因为c没初始化,内部的值随机,并且,值不会增加)10.如果有以下代码:char string[] = "love me please";char *p = string;char *q = p + 4;*q++ = '\0';printf("\"%s\"", p);printf("\"%s\"", q);分别打印:( B )A. "love me please" ""B. "love" "me please"C. "love me please" "me please"D. 因为常量字符串不能修改,会发生段错误11.free(p);哪个是错误的( D )A. p的值必须是malloc的返回值B. 一个指针不能被连续free两次C. free了p以后p是野指针,应该置为NULLD. free了以后p的值会自动置为NULL,所以*p = 9会段错误12.下列描述中不正确的是( C )。
嵌入式系统开发测试题(含答案)
嵌入式系统开发测试题(含答案)一、单选题(共100题,每题1分,共100分)1、Make预置了一些内部宏,其中$@表示A、以上都不是B、没有扩展名的当前目标文件C、当前目标文件最近更新的文件名正确答案:A2、关于U-Boot,下列说法错误的是()A、支持的处理器有ARM、MNPSB、是遵循GPL条款的开放源码项目C、支持的操作系统有LINUX、QNX正确答案:A3、Makefile是()A、调试器B、编辑器C、项目管理器正确答案:C4、C语言文件预处理生成哪个后缀的文件A、iB、SC、o正确答案:A5、直接编译进内核,又称()。
A、下载文件B、静态连接C、动态连接正确答案:B6、实时在线仿真是一种用于替代目标上()的设备A、CPUB、GPUC、NOU正确答案:A7、GDB软件是()。
A、调试器B、编译器C、文本编辑器正确答案:A8、嵌入式系统设计的重要特点是()多样化A、技术B、应用C、操作正确答案:A9、ARM的工作模式有?A、非特权模式和特权模式B、特权模式C、非特权模式正确答案:A10、嵌入式操作系统的特点不包括()。
A、有一定的实时性B、强交互性C、可裁剪正确答案:B11、TCP/IP参考模型不包括()A、表示层B、应用层C、传输层正确答案:A12、Linux内核的功能不包含下面哪种()A、处理机管理B、内存管理C、进程管理正确答案:A13、下列CPSR寄存器标志位的作用说法错误的是A、V:借位B、C:进位C、Z:零正确答案:A14、()显示屏是利用有机电致发光二极管制成的显示屏。
A、OLEDB、ABCDC、EFGH正确答案:A15、动态链接是指程序运行时需要调用共享库文件,其后缀为()A、aB、cC、so正确答案:C16、MCU偏重于()A、信号处理B、控制正确答案:B17、()是指:在宿主机上进行软件编辑、编译、链接等,并生成能够在目标机上运行的可执行程序的过程。
A、交叉编辑B、交叉开发C、交叉编译正确答案:C18、Flash程序烧写时,需准备好的软件不包括()。
单片机嵌入式应聘测试题(含答案)
嵌入式工程师预备考试题学校___ ____________ 教师___ ________________ ____________ ___ ______________本次测试包括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=27.有以下程序段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)98.运行以下程序的结果是(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) 1019.完成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 _______的形式定义。
嵌入式C语言笔试题及答案
嵌入式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语言嵌入式笔试题目及参考答案-烽火通信
什么是预编译何时需要预编译:1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头。
char * const p;char const * pconst char *p上述三个有什么区别?char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *pchar str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char *str5 = "abc";const char *str6 = "abc";char *str7 = "abc";char *str8 = "abc";cout << ( str1 == str2 ) << endl;cout << ( str3 == str4 ) << endl;cout << ( str5 == str6 ) << endl;cout << ( str7 == str8 ) << endl;结果是:0 0 1 1解答:str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
3. 以下代码中的两个sizeof用法有问题吗?void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母{for( size_t i=0; iif( 'a'<=str[i] && str[i]<='z' )str[i] -= ('a'-'A' );}char str[] = "aBcDe";cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;UpperCase( str );cout << str << endl;答:函数内的sizeof有问题。
嵌入式c语言笔试题
嵌入式c语言笔试题●为什么嵌入式行业注重C语言的考察?●首先我们需要知道为什么嵌入式开发用c语言开发,在这么多种编程语言中为什么单单c语言在嵌入式行业中这么受用呢?●在编译器的帮助下,c语言开发出来的代码能在多种不同体系结构的软/硬平台上运行,具有出色的可移植性。
●能够直接访问硬件。
其实能够直接访问硬件的语言有汇编和C语言,但是汇编语言属于低级语言,难以完成一些复杂的功能,此外汇编语言和CPU的架构紧密相关,X86架构和ARM架构的汇编代码是不同的,这就违背了嵌入式开发中可以执行的原则。
然而汇编比C语言访问硬件的效率更高,所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。
●那面向对象的编程语言受到无法直接操作硬件的限制,使得c语言在嵌入式开发中有不可取代的地位。
●常见嵌入式C语言笔试题的几个专题●数据类型●用变量a定义如下类型的变量●一个整形数int a;●一个指向整形数的指针int *a;●一个指向指针的指针,被指向的指针指向一个整形数int **a;●一个有十个整形数的数组int a[10];●一个又是个指针的数组,数组元素指向一个整形数int *a[10];●一个指向有十个整形数数组的指针int (*a)[10];●一个指向函数的指针,该函数有一个整形参数并返回一个整形数int (*a)(int );●一个有十个指针的数组,该数组指向一个函数,该函数有一个整型参数并返回一个整形数int (*a[10])(int );●解析●这道题有两种考法,一是给出要求,自己写出定义语句,二是给出定义语句,自己写出变量a的含义。
●解决办法掌握几个原则就好●这里首先提供给大家一个图片●然后看这个变量的本质是什么,越靠近本质的定义其优先级越高●举个栗子●一个有10个指针的数组,数组元素指向一个整形数int *a[10];●一个指向有10个整形数数组的指针int (*a)[10];●我们辨析一下上面两个变量●通过上面运算符优先级的图片可以知道 [] 的优先级是高于 * 的,所以int*a[10];中,a的本质是数组,然后数组的中存放的数据成员是指针,数据成员指向的是整型数据。
[DOC]-嵌入式软件开发面试C语言笔试题 答案
[DOC]-嵌入式软件开发面试C语言笔试题答案嵌入式软件开发面试C语言笔试题答案嵌入式软件笔试**/**********************/***********************Chapter1语法类***********************/1.volatile作用,应用场合举3例volatile修饰的变量表示这个变量可能会被意想不到的改变,对该变量的操作将不作优化,用到该变量时都从这个变量的原始地址读取,而不是用保存在寄存器里的备份。
Volatile常用在:1).硬件寄存器(如:状态寄存器)。
2).中断程序中会访问到的非自动变量(Non-automaticvariables)。
3).多线程应用中几个任务共享的变量2.一个参数既可以是const还可以是volatile吗,解释为什么。
是的。
比如只读的状态寄存器。
它是volatile因为它可能被意想不到地改变。
它是const因为程序不应该试图去修改它。
3.一个指针可以是volatile吗,解释为什么。
是的。
比如一个中断服务子程序修该一个指向一个buffer的指针时。
苏金塔4.用变量a给出下面的定义 a)一个整型数 b)一个指向整型数的指针 c)一个指向指针的指针,它指向的指针是指向一个整型数 d)一个有10个整型数的数组 e)一个有10个指针的数组,该指针是指向一个整型数的 f)一个指向有10个整型数数组的指针 g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数 h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数a)intb)inta;//Aninteger*a;//Apointertoanintegerc)int**a;//Apointertoapointertoanintegerd)inte)intf)intg)inta[10];//Anarrayof10integers*(a[10]);//Anarrayof10pointerstointegers(*a)[10];//Apointertoanarrayof10integers(*a)(int);//Apoint ertoafunctionathattakesanintegerargumentandreturnsanintegerh)int(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger5.什么是存储机制里的大、小端模式,试举例说明大端模式(big-edian):MSB存放在最低端的地址上。
c语言经典笔试题(非常全)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) (A) : (B))4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。
我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}第三个方案是用gotoLoop:...goto Loop;5. 用变量a给出下面的定义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 )答案是:a) int a; // An integerb) int *a; // A pointer to an integerc) int **a; // A pointer to a pointer to an integerd) int a[10]; // An array of 10 integerse) int *a[10]; // An array of 10 pointers to integersf) int (*a)[10]; // A pointer to an array of 10 integersg) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integerh) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer6. 关键字static的作用是什么?这个简单的问题很少有人能回答完全。
嵌入式考试题目及答案
嵌入式考试题目及答案一、单选题(每题2分,共20分)1. 嵌入式系统是指()。
A. 嵌入到其他系统中的专用计算机系统B. 嵌入到其他系统中的通用计算机系统C. 嵌入到其他系统中的操作系统D. 嵌入到其他系统中的硬件系统答案:A2. 以下哪个不是嵌入式系统的典型应用领域?()A. 消费电子B. 工业控制C. 航空航天D. 个人电脑答案:D3. 在嵌入式系统中,以下哪个不是常用的处理器类型?()A. 微控制器(MCU)B. 数字信号处理器(DSP)C. 微处理器(MPU)D. 网络处理器(NP)答案:D4. 以下哪个不是嵌入式系统的开发工具?()A. 编译器B. 调试器C. 仿真器D. 打印机答案:D5. 在嵌入式系统中,以下哪个不是操作系统的功能?()A. 任务调度B. 内存管理C. 文件系统D. 网络通信答案:D6. 以下哪个不是嵌入式系统的硬件组成?()A. 处理器B. 存储器C. 输入/输出设备D. 显示器答案:D7. 在嵌入式系统中,以下哪个不是软件组成?()A. 操作系统B. 应用程序C. 驱动程序D. 打印机驱动答案:D8. 以下哪个不是嵌入式系统的开发流程?()A. 需求分析B. 系统设计C. 编码D. 测试答案:D9. 在嵌入式系统中,以下哪个不是调试技术?()A. 断点B. 单步执行C. 代码覆盖率分析D. 性能优化答案:D10. 以下哪个不是嵌入式系统的可靠性要求?()A. 容错性B. 可预测性C. 可维护性D. 可扩展性答案:D二、多选题(每题3分,共15分)11. 嵌入式系统的特点是()。
A. 实时性B. 专用性C. 可扩展性D. 低功耗答案:ABD12. 嵌入式系统的开发工具包括()。
A. 编译器B. 调试器C. 仿真器D. 打印机答案:ABC13. 嵌入式系统的硬件组成包括()。
A. 处理器B. 存储器C. 输入/输出设备D. 显示器答案:ABC14. 嵌入式系统的软件组成包括()。
嵌入式软件笔试题(含答案)
X X X X X
X Y Y Y X
X Y 0 Y X
X Y Y Y X
X X X X X
22:谈谈COM的线程模型。然后讨论进程内/外组件的差别。
23:多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
参考答案:
虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.
A.15
B.31
C.3
D.1
参考答案:C
7:定义函数时,缺省函数的类型声明,则函数类型取缺省类型
A.void
B.char
C.float
DHale Waihona Puke int 参考答案:D 8:若main()函数带参数,参数个数最多是
A.0
B.1
C.2
D.3
参考答案:C 只知道有定义形式main(int argc,char* argv[]))
#define N 3
#define Y(n) ((N+1)*n)
则表达式2*(N+Y(5+1))的值是
A.42
B.48
C.54
D.出错
参考答案:B Y(5+1) 传递过去的应该是6,而不是简单的把5+1给替换掉
13:若定义了char ch[]={″abc\0def″},*p=ch;则执行printf(″%c″,*p+4);语句的输出结果是
(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1),
26:写一语句实现x是否为2的若干次幂的判断。
软件工程师面试题嵌入式CC++笔试题(含答案)
软件工程师+嵌入式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语言考题
嵌入式c语言考题1.请编写一个函数,实现将一个整数转换为字符串的功能。
例如,将整数123转换为字符串"123"。
void int2str(int num, char* str){sprintf(str, "%d", num);}2.在下面的代码中,变量a、b、c、d分别存储了一个四字节整数的每个字节的值,请编写一行代码,将这个四字节整数合成为一个整数:unsigned char a = 0x11, b = 0x22, c = 0x33, d = 0x44;unsigned int value = (a << 24) | (b << 16) | (c << 8) | d;3.请编写一个函数,从一个字符数组中找出最大的元素,并返回它的下标和值。
例如,对于字符数组['a', 'c', 'b'],最大的元素为'c',下标为1,值为'c'。
void find_max(char* arr, int len, int* index, char* max_value){*max_value = arr[0];*index = 0;for (int i = 1; i < len; i++) {if (arr[i] > *max_value) {*max_value = arr[i];*index = i;}}}4.请编写一个函数,实现将一个二进制字符串转换为十进制整数的功能。
例如,将二进制字符串"1101"转换为整数13。
int bin2dec(char* bin_str){int dec = 0;for (int i = 0; bin_str[i] != '\0'; i++) {dec = dec * 2 + (bin_str[i] - '0');}return dec;}5.在下面的代码中,变量a、b、c分别存储了三个整数,请编写一行代码,在不使用临时变量的情况下,交换a、b、c的值。
2022年嵌入式c语言笔试题及答案
2022年嵌入式c语言笔试题及答案2022年嵌入式c语言笔试题及答案1 读程序段,回答问题int main(int argc,char 某argv[]){int c=9,d=0;c=c++%5;d=c;printf("d=%d\n",d);return 0;}a) 写出程序输出b) 在一个可移植的系统中这种表达式是否存在风险?why? include "stdio.h"int a=0;int b;static char c;int main(int argc,char 某argv[]){char d=4;static short e;a++;b=100;c=(char)++a;e=(++d)++;printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e); return 0;}a) 写出程序输出b) 编译器如果安排各个变量(a,b,c,d)在内存中的布局(eg.stack,heap,data section,bss section),最好用图形方式描述。
2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字__interrupt。
下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。
__interrupt double compute_area(double radius){double area = PI 某 radius 某radius;printf("nArea = %f", area);return area;}3 C/C++基础知识问题a) 关键字volatile在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述)。
b) C语言中static关键字的具体作用有哪些 ?c) 请问下面三种变量声明有何区别?请给出具体含义int const 某p;int某 const p;int const某 const p;4 嵌入式系统相关问题a) 对于整形变量A=0某,请画出在little endian及big endian的方式下在内存中是如何存储的。
嵌入式C开发人员的最好的0x10道笔试题(详细解析)
嵌入式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(int n){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题: 考查指针数组的指针V oid f(char**);main(){char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" };f( argv );}void f( 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字面意思是易于挥发的。
嵌入式面试笔试题目——附部分答案
嵌⼊式⾯试笔试题⽬——附部分答案1 、如何⾃动创建设备⽂件?class_create device_create2、led驱动编写有⼏种⽅式?输⼊⼦系统字符设备驱动总线platform led⼦系统3、如何实现http服务器?tcp服务器:socket4、如何编写守护进程,简述syslog的作⽤?第⼀步:创建进程、杀死⽗进程第⼆步:创建新的会话第三步:改变⼯作路径路径第四步:修改⽂件掩码权限第五步:关闭⽂件描述符5、bootloader和uboot的区别?bootloader是启动装载。
这是⼀段很⼩的程序,⽤于在系统上电启动初期运⾏,初始化关键接⼝,如内存,串⼝,关闭中断,关闭看门狗,引导系统进⼊内核的⼀段初始化的程序。
它主要任务就是将内核映像从硬盘读到RAM中,然后跳转到内核的⼊⼝点去运⾏内核,从⽽建⽴系统运⾏的必要环境。
uboot:是bootloader的⼀种6、如何移植uboot?1、下载源码2、解压uboot源码并进⼊⽬录3、指定交叉编译⼯具链4、指定产品BOARD 底板5、编译u-boot7、传感器驱动如何编写?8、BL0,BL1,BL2,BL3的作⽤?BL0 ⽂件是存放在 CPU 内部 IROM 中的⼀段固化代码,CPU 上点之后,⾸先去运⾏soc中的BL0,运⾏时会将 BL1 拷贝到 CPU 的 IRAM 中,然后执⾏BL1;BL1⽂件执⾏起来之后会先进⾏内存的初始化,之后将 BL2 ⽂件拷贝到外部内存中,BL2会初始化BL3的运⾏环境,将BL3搬移到DRAM中,BL3会有⼀个⾃搬移的过程,从⽽启动内核⼊⼝。
BL0:CPU内部的固化代码BL1:三星提供的加密⽂件BL2:截取uboot.bin 前14kBL3:剩下的uboot 执⾏命令以及加载引导内核9、exynos4412 时钟 APLL,MPLL,VPLL的区别?------倍频锁相环APLL:⽤于 CPU_BLK (可产⽣⾼达1.4GHz的频率);作为 MPLL 的补充,它也可以给DMC_BLK 、LEFTBUS_BLK 、RIGHTBUS_BLK 和 CMU_TOP 提供时钟。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void e(int ); main(){ int a; a=3; e(a);}void e(int n){ 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
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.以上都不是
第3 题
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.以上都不对
第4 题
Void f(char**);main(){ char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" }; f( argv );}void f( char **p ){ char* t; t= (p+= sizeof(int))[-1]; printf( "%s" , t);}这段程序的输出是:【】
A.ab
B.cd
C.ef
D.gh
第5 题
#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
第6 题
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
请写出下列代码的输出内容
#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;
}
< !--[if !supportLineBreakNewLine]-->
< !--[endif]-->
A.10 12 120
B.10 13 100
C.10 12 110
D.20 12 100 第8 题
写出下列代码的输出内容
#include<stdio.h>
int inc(int a)
{
return(++a);
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%d\n",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
A.100
B.110
C.120
D.90
第9 题
某32位系统下, C++程序,请计算sizeof的值(5分).
char str[] = “”
char *p = str ;
int n = 10;
请计算
sizeof (str ) =?()
A.17
B.16
C.15
D.18
第10 题
某32位系统下, C++程序,请计算sizeof的值(5分).
char str[] = “”
char *p = str ;
int n = 10;
请计算
sizeof ( p ) =()?
A.5
B.4
C.6
D.3
第1题
A.0 1 2 0
第2题
C.函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型
Pointer to function having two argument that is pointer to float and return int
第3题
C.9
第4题
B.cd
第5题
C.5
第6题
B.15
第7题
A.10 12 120 第8题
B.110
第9题
A.17
第10题
B.4。