1、 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 a
2、n 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 )6. 关键字static的作用是什么?7关键字const是什么含意? 8. 关键字volatile有什么含意 并给出三个不同的例子。9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的
3、bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展让标准C支持中断。具体所代表的事实是,产生了一个新的关键字 _interrupt。下面的代码就使用了_interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。_interrupt double compute_area (d
4、ouble radius) double area = PI * radius * radius; printf( Area = %f, area); return area;12 . 下面的代码输出是什么,为什么?void foo(void) unsigned int a = 6;int b = -20;(a+b 6) puts( 6) : puts(=3,(Y-X)的绝对值=3,保证两次置位不会重合Output更改后的寄存器值R(16进制输出)Sample Input12345678,0,3Sample Output1234567cvoid main()int R,X,Y;scanf(%d
5、,%d,%d,&R,&X,&Y);R&=(1X);R|=6(Y-3);(Y-2);printf(the R value is %d,R); 排序编写一个排序程序。被排序的文件有8MB大小,一行一个随机整数(ASCII格式)。要求对这些整数进行排序,并计算平均值,打印出排序所需的时间。#include stdio.hstdlib.hmath.htime.hvoid run(int* pData,int left,int right) int i,j; int middle,iTemp; i = left; j = right; middle = pDataleft; do while(pData
6、imiddle) & (i (jleft) j-; if(i=j) iTemp = pDatai; pDatai = pDataj; pDataj = iTemp; while(i=j); if(lefti) run(pData,i,right); void QuickSort(int* pData,long Count) run(pData,0,Count-1); int main(int argc, char* argv) clock_t start,end;/ time_t a,b;char fstr20;int m_data1024;long count=0;long sum=0;lo
7、ng avr;long i; FILE* m_file;if(NULL= argv0)exit(1);m_file=fopen(argv0 , r if(m_file=NULL) error exit(1); while(NULL!=fgets(fstr,20,m_file) m_datacount=atoi(fstr); count+; start=clock(); / a=time(NULL); QuickSort(m_data,count);end=clock(); %6.3f secondsn,(double)(end-start)/18.2);/b=time(NULL); for(i
8、=0;i1)p-next=Create_Node(n-1);/if the node has child ,then make the ps next link the next nodereturn p;/return the nodes addressvoid Delete_Node(struct Node * node)/free the all node tablesif(node-next!=NULL) Delete_Node(node-next); node-next=NULL;free(node);双向:struct MuNodestruct MuNode* pre;/ Poin
9、ter to point to previous nodestruct MuNode* next; / Pointer to point to next nodestruct MuNode* Create_MuNode(int n,struct MuNode* pre)struct MuNode* p=(struct MuNode*)malloc(sizeof(Node);pre=pre;next=Create_MuNode(n-1,p);void Delete_MuNode(struct MuNode * node) Delete_MuNode(node-node-pre=NULL;循环链表
10、struct Node* Create_CycleNode(int n, struct Node* head)/Create a Node, n means it has n child node;elsenext=head;void Delete_CycleNode(struct Node * node, struct Node * head)=head) 队列基本操作(入队,出队)循环队列类型定义#define QueueSize 100 /应根据具体情况定义该值 typedef char DataType; /DataType的类型依赖于具体的应用 typedef struct int
11、front; /头指针,队非空时指向队头元素 int rear; /尾指针,队非空时指向队尾元素的下一位置 int count;/计数器,记录队中元素总数 DataType dataQueueSize;CirQueue;void InitQueue(CirQueue *Q) /初始化队列Q-front=0;count=0;rear=0;int QueueEmpty(CirQueue *Q)return (Q-count=0)int QueueFull(CirQueue *Q)count= QueueSize);void EnQueue(CirQueuq *Q,DataType x)if(!Qu
12、eueFull(CirQueue *Q)dataQ-rear= x;rear=(Q-rear+1)%QueueSize;count+;error(The Queue is Full! now!nDataType DeQueue(CirQueue *Q)DataType temp;if(QueueEmpty(Q)Error(Queue underflow)/队空下溢temp=Q-front;count-; /队列元素个数减1 front=(Q-front+1)%QueueSize; /循环意义下的头指针加1 return temp;DataType QueueFront(CirQueue *Q)
13、QueueEmpty)return QQ-Queue is empty 栈基本操作(入栈,出栈)#define DataType int #define MAXSIZE 1024 typedef struct DataType dataMAXSIZE;int top;SeqStack;SeqStack *Init_SeqStack()/栈初始化SeqStack *p= (SeqStack *)malloc(sizeof(SeqStack);memset(p,NULL,sizeof(SeqStack);int Empty_SeqStack(SeqStack *s)/判栈空return (s-to
14、p=0);int Push_SeqStack(SeqStack *s,DataType x)/入栈if(s-topdatas-top=x;return 1return 0;int Pop_SeqStack(SeqStack *s,DataType *x)/出栈top0)*x=s-top;top-;return 1;DataType Top_SeqStack(SeqStack *s)/取栈顶元素return s-Stack is empty 其他编写一个自己的完全C语言版本的memset函数,并且评价这个实现的性能和可移植性。void* memset(void * source, int ch,
15、 unsigned n);)char *p=(char*) source; assert(NULL!=source);while(n-)*p+=(char)c;return source; 代码风格下面是一个16x16的黑白图标:static unsigned short stopwatch【】 = 0x07c6, 0x1ff7, 0x383b, 0x600c, 0xc006, 0xdf06, 0xc106, 0x610c, 0x3838, 0x1ff0, 0x07c0, 0x0000, 如何修改声明,可以使之在源代码中形象地表现出图形的模样/C编程专家#define X )*2+1#defi
16、ne _ )*2#define s (0static unsigned short stopwatch=s _ _ _ _ _ X X X X X _ _ _ X X _,s _ _ _ X X X X X X X X X _ X X X,s _ _ X X X _ _ _ _ _ X X X _ X X,s _ X X _ _ _ _ _ _ _ _ X X X _ _,s X X _ _ _ _ _ _ _ _ _ _ _ X X _,s X X _ X X X X X _ _ _ _ _ X X _,s X X _ _ _ _ _ X _ _ _ _ _ X X _,s _ X X _
17、_ _ _ X _ _ _ _ X X _ _,s _ _ X X X _ _ _ _ _ X X X _ _ _,s _ _ _ X X X X X X X X X _ _ _ _,s _ _ _ _ _ X X X X X _ _ _ _ _ _,s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _,第三阶段 Linux用户态开发5天左右熟悉Linux用户态开发的基本概念,通过编写一些实验程序加深理解。用户态编程学习内容系统调用方式访问文件库函数访问文件时间编程进程原理进程控制程序设计进程间通讯管道信号共享内存消息队列信号量多线程程序设计socket编程(TCP, UDP)Linux用户态编程实验内容:编写应用程序,创建一个可读可写的文件。程序名:CreateFile#include stdlib.hsys/types.h
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1