2012年(3)
分类:
2012-10-08 15:32:22
原文地址:三篇c语言笔试题 作者:sillyboytao
1、c51单片机的串口异步通信和同步通信的区别,说说他们的优缺点。
2、C51单片机的数据总线和地址总线是如何复用的,说明原理。
3、C51单片机的绝对寻址范围是多少k?
4、说明下面的寻址方式
(1)MOV A , #30H (2)MOV A,@R0
(3)ADD A , R4 (4)MOV A+@DPTR
5、写出下面分别是什么指针?
(1)int *a[10]; (2)int (*a)[10];
(3)int (*P)(int) ; (4)int (*a[10])(int);
6、
void swap(int a,int b)
{
int temp;
temp = a;
a=b;
b=temp;
}
main(void)
{
int x="3",y=4;
swap(x,y);
}
问 上面程序执行完后 x= ?,y=?
7、typedef struct test{
int i;
short s;
char c;
union{
int a;
short b;
}
}example ;
int y ;
y = sizeof(example);
请问在TC环境下,y=?
8、编程实现数组的逆置,例如,“hello,world!” 逆置后为“!dlrow,olleh”。
9、你认为嵌入式操作系统包括哪些部分?说说实时操作系统有哪些特点。
10、冯诺依曼结构的计算机由哪几部分组成?
11、说说程序,进程,线程的区别。
12、说说你怎样理解
程序 = 数据 + 结构 + 算法
13、根据函数原型编程实现 一个数组,按从大到小的冒泡排序。
void tibbule(int a[],int n);//a[]为数组,n为数组长度
14、OSI有哪几层?tcp/ip包括哪几层?
15、编程实现一个双链表的节点插入和删除。
============================================================================================================================================================================================
//MTK深圳嵌入式软件工程师笔试题(B卷) //2********************************************* //8************************************* }
//1*****************************************
#define pi 3.14
#define Area(R) pi*R*R
main()
{
int r1=5,r2=2;
double s=0;
s=Area(r1-r2);
printf("The area is %f",s);
}
//求结果
//函数 int compare(int a,int b),定义为该函数的函数指针P:为_______________
//3*********************************************
#include
void sub(char*s,int num)
{
int i ,j=num;
char t;
while(j-->1)
{
for(i=0;i
if(s[i] {
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
}
}
}
}
main()
{
char*s="CEAeded";
sub(s,6);
printf("%s\n",s)
}
//求结果
//4**********************************************
//交换两个变量的值,不使用第三个变量,即a=3,b=5交换
//后b=3,a=5
unsigned char a=3,b=5;
//5**************************************************
#define N 100
void GetMemory1(char*p)
{
p=(char*)malloc(sizeof(char)*N);
strcpy(p,"Have a good day!");
}
char*GetMemory2(void)
{
char p[]="Have a good day!";
return p;
}
void main(void)
{
char*str1=NULL,*str2=NULL;
GetMemory1(str1);
GetMemory2(str2);
printf("\nstr1:%s",str1);
printf("\nstr2:%s",str2);
//6******************************************************
//构造N个结点的单链表返回链表头指针,要求链表中各结点顺序
//与结点数据输入顺序相反,例如输入1,2,3,4,5,形成的链表为
//head->5 4 3 2 1 ,补充程序
#define N 10
typedef struct Node
{
int data;
struct Node*next;
}NODE;
int Get_Data(int i);//定义省略
Node*Create_u()
{
int i;
NODE*p,*Head=NULL;
for(i=0;i
VP=New NODE;
P->Data=Get_Data(i);
________________;
________________;
}
return Head;
}
//7**********************************************
//N个结点链表,每个结点中存放一个字符,判断链表存放的字符是否
//中心对称,即a b c c b a或a b c b a,补充程序
typedef struct Node
{
int data;
struct Node*next;
}NODE;
bool Is_symmeic(NODE*head,*int n)
{
char D[N];
int i,d;
__________;
for(i=0;i
D[i]=head->data;
head=head->next;
}
if(__________)
{
head=head->next;
}
while(head)
{
_______________;
if(D[i]!=head->data)
{
return false;
}
head=head->next;
}
return true;
}
//str中只含有大写和小写字母函数change_move(char*str)将字符串中大写改成*并
//移到前面小写后返回*的个数
//如AabBdcYY改为*****abd,返回5
int chang_move(char*str)
{
int len,i,curstr=-1;
len=strlen(str);
for(i=len-1;i>=0;i--)
{
if(str[i]>=''A''&&str[i]<=''Z'')
{
str[i]=''*'
if(cursor==-1)
{
cursor=i;
}
else if(cursor>i)
{
_____________;
str[i]=''*'
_____________;
}
}
return____________;
}
//9***********************************************
//求两个字符串的第一个公共子串,并返回该子串
//如:"a b c d e f g e h i" "a a c d e f * * g e h i"
//第一个为"c d e f";不许用strcmp()
char*Maxf(char*str1,char*str2)
{