李sir_Blog

博客园 首页 联系 订阅 管理

2011年1月15日

摘要: 1、将一整数逆序后放入一数组中(要求递归实现)void convert(int *result, int n) {if(n=10)convert(result+1, n/10);*result = n%10; }int main(int argc, char* argv[]) {int n = 123456789, result[20]={};convert(result, n);printf("%d:", n);for(int i=0; i9; i++)printf("%d", result[i]);}2、求高于平均分的学生学号及成绩(学号和成绩人工输入)double find(int 阅读全文
posted @ 2011-01-15 20:27 李sir 阅读(2027) 评论(2) 推荐(0)

摘要: 1.有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?//-------------------------------------------------答案:第一步:A(1)和B(2)过桥,A(1)返回 Cost:1+2 第二步: C(5)和D(10)过桥,B(2)返回 Cost:10+2 第三步: A(1)和B(2)过桥 Cost:22.有一个埃及人拾到一枚标有“公元前3世纪”的金币,他问一个考古学家,考古学家说是假币,问为什么? 因为在那个时候没有公元( 阅读全文
posted @ 2011-01-15 20:25 李sir 阅读(2026) 评论(0) 推荐(1)

摘要: 1. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。2. 堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源。3. 什么函数不能声明为虚函数? constructor函数不能声明为虚函数。4. 写出float x 与“零值”比较的if语句。 if(x0.000001&&x-0.000001)5. 不能做switch()的参数类型是: switch的参数不能为实型6. 头文件中的 ifndef/define/endif干什么用? 预处理答:防止头文件被重复引用7. #i 阅读全文
posted @ 2011-01-15 20:23 李sir 阅读(1253) 评论(0) 推荐(0)

摘要: 1. 找错试题1:Void test1(){char string[10];char* str1="0123456789";strcpy(string, str1);}试题2:Void test2(){char string[10], str1[10];for(I=0; I10;I++){str1[i] ='a';}strcpy(string, str1);}试题3:Void test3(char* str1){char string[10];if(strlen(str1) = 10){strcpy(string, str1);}}在swap函数中,p是一个“野”指针,有可能指向系统区,导 阅读全文
posted @ 2011-01-15 20:21 李sir 阅读(2591) 评论(0) 推荐(0)

摘要: 3.技巧题试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1解答: int checkCPU(){ {  union w  {    int a;   char b;  } c;  c.a = 1;  return (c.b == 1); }}剖析:   嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方 式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little- e 阅读全文
posted @ 2011-01-15 19:58 李sir 阅读(1301) 评论(0) 推荐(0)

摘要: 1.设一棵完全二叉树有700个结点,则在该二叉树中有多少个叶子结点如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。 可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=(n+1)/2 ,就可根据完 阅读全文
posted @ 2011-01-15 19:57 李sir 阅读(3005) 评论(0) 推荐(0)

摘要: 1、将一个链表逆序 LinkList *reverse(LinkList *head){LinkList *p1,*p2 = NULL,*p3 = NULL;if(head == NULL || head-next == NULL)return head;p1 = head-next;while(p1!=NULL){p3 = p1-next;p1-next = p2;p2 = p1;p1 = p3;}head-next = p2;// head = p2;return head; }2、计算一个字节里(byte)里面有多少bit被置1#include stdio.hint com 阅读全文
posted @ 2011-01-15 19:55 李sir 阅读(16080) 评论(2) 推荐(2)

摘要: MTK深圳嵌入式软件工程师笔试题(B卷)1.#define pi 3.14#define Area(R) pi*R*Rmain(){int r1=5,r2=2;double s=0;s=Area(r1-r2);printf("The area is %f",s);}求结果: The area is 3.7000002.函数 int compare(int a,int b),定义为该函数的函数指针P:为 int(*p)(int,int);p= compare;3.求输出结果#includestdio.hvoid sub(char*s,int num){int i ,j=num;char t 阅读全文
posted @ 2011-01-15 19:54 李sir 阅读(5458) 评论(0) 推荐(0)

摘要: 选择题 1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是 A.(a+b)*c/2 B.(1/2)*(a+b)*c C.(a+b)*c*1/2 D.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:下述程序执行后的输出结果是 #include main() { int x='f'; printf("%c\n",' 阅读全文
posted @ 2011-01-15 19:53 李sir 阅读(23123) 评论(0) 推荐(3)

摘要: 二分查找的代码.int bfind(int* a,int len,int val){ int m = len/2; int l = 0; int r = len; while(l!=m && r!= m) { if(a[m] val) { r = m; m = (m+l)/2; } else if(a[m] val) { l = m; m = (m+r)/2; } else return m; } return -1; //没有找到}写出在母串中查找子串出现次数的代码.int count1(char* str,char* s){ char* s1; char* s2; i 阅读全文
posted @ 2011-01-15 19:51 李sir 阅读(2025) 评论(0) 推荐(1)

摘要: 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 阅读全文
posted @ 2011-01-15 19:50 李sir 阅读(7115) 评论(0) 推荐(0)

摘要: 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)    #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL  我在这想看到几件事情:  1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)  2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。  3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。  4). 如果你在你的表达式中用到UL(表示无符号长整 阅读全文
posted @ 2011-01-15 19:47 李sir 阅读(2516) 评论(0) 推荐(1)

摘要: 第1题: 考查对volatile关键字的认识#includesetjmp.hstaticjmp_bufbuf;main(){volatileintb;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(){structnode{inta;intb;intc;};structnodes={3,5,6};structnode*pt=&s;printf("%d",*(int*)pt);}这段程序的输出是:(a) 3 阅读全文
posted @ 2011-01-15 19:45 李sir 阅读(1513) 评论(0) 推荐(0)

摘要: 1.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789。#include stdio.h#include stdlib.h#include string.hint FindMax_NumStr(char *outputstr,char *i 阅读全文
posted @ 2011-01-15 19:43 李sir 阅读(1361) 评论(0) 推荐(0)

摘要: 1.求组合数: 求n个数(1....n)中k个数的组合.... 如:combination(5,3) 要求输出:543,542,541,532,531,521,432,431,421,321,/*求组合数: 求n个数(1....n)中k个数的组合....如:combination(5,3)要求输出:543,542,541,532,531,521,432,431,421,321,*/#include stdio.h#include error.hint pop(int *);int push(int );void combination(int ,int);int stack[3]={0 阅读全文
posted @ 2011-01-15 19:40 李sir 阅读(2921) 评论(0) 推荐(0)

摘要: 公共部分(50分)  1:作业调度程序从处于(B)状态的队列中选择适当的作业的作业投入运行。(3分)  A 运行 B 提交 C 完成 D后备  2:SQL语言中,删除一个表的命令是(B)(3分)  A CLEAR TABLE B DROP TABLE  C DELETE TABLE D REMOVE TABLE  3:ATM采用的线路复用方式为(C)(3分)  A 频分多路复用  B 同步时分多路复用  C 异步时分多路复用  D 独占信道  4:数据库中只存放视图的(C)(3分)  A操作  B 对应的数据  C 定义  D 限制  5:什么是虚拟设备?为什么在操作系统中引入虚拟设备?(10 阅读全文
posted @ 2011-01-15 19:38 李sir 阅读(9505) 评论(0) 推荐(0)

摘要: 1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;答://假设线性表的双向链表存储结构typedef struct DulNode{ struct DulNode *prior; //前驱指针 ElemType data; //数据 struct DulNode *next; //后继指针}DulNode,*DuLinkList;//删除操作Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e){ if(!(p=GetElemP_DuL(L,i))) //此处得到i位置的节点指针,如果有需要也得写出具体函数实现 ret 阅读全文
posted @ 2011-01-15 19:33 李sir 阅读(796) 评论(0) 推荐(0)

摘要: 1.什么是中断?中断发生时cpu做什么工作? 中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的时间处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。当外部中断,需要cpu暂停当前的任务,做相应的处理,cpu需要判断中断源,保存现场状态,以便能够处理完后继续执行中断的任务。2.CPU在上电后,进入操作系统的main()之前必须做什么工作? 过程如下: bios自举:检查硬件等读取MBR 转到MBR执行它的代码,它会检测活动分区把活动分区的引导扇区的引导代码装入内存运行引导代码引导代码装入该分区的操 阅读全文
posted @ 2011-01-15 19:22 李sir 阅读(1546) 评论(0) 推荐(0)

摘要: 1.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和。不过非常遗憾的是,由于长度为n的数组有O(n2),具体是n*(n+1)/2个子数组;而且求一个长度为n的数组的和的时间复杂度为O(n)。因此这种思路的时间是O(n3)。解题思路:很容易理解,当我们加上一个正 阅读全文
posted @ 2011-01-15 18:49 李sir 阅读(1010) 评论(0) 推荐(0)

摘要: 二分查找的代码.int bfind(int* a,int len,int val){ int m = len/2; int l = 0; int r = len; while(l!=m && r!= m) { if(a[m] val) { r = m; m = (m+l)/2; } else if(a[m] val) { l = m; m = (m+r)/2; } else return m; } return -1; //没有找到}写出在母串中查找子串出现次数的代码.int count1(char* str,char* s){ char* s1; char* s2; i 阅读全文
posted @ 2011-01-15 18:38 李sir 阅读(751) 评论(2) 推荐(0)

摘要: 题目:  已知strcpy函数的原型是:   char * strcpy(char * strDest,const char * strSrc);   1.不调用库函数,实现strcpy函数。   2.解释为什么要返回char *。 解说:  1.strcpy的实现代码   char * strcpy(char * strDest,const char * strSrc)   {   if ((strDest==NULL)||(strSrc==NULL)) //[1]   throw "Invalid argument(s)"; //[2]   char * strDestCopy=strDe 阅读全文
posted @ 2011-01-15 17:01 李sir 阅读(1655) 评论(0) 推荐(0)

摘要: (1)统计字符串中出现的子字符串数量#include "stdafx.h"void findcount(char* s1,char *s2);void findcount(char* s1,char *s2){ char * str1 = s1; char * str2 = s2; int count=0; while (*str1!='\0') { if (*str1==*str2&&*str1!='\0'&&*str2!='\0') { str1++; str2++; } else { str2= s2; str1++; } if (*str2=='\0') { count++; str2 阅读全文
posted @ 2011-01-15 15:57 李sir 阅读(468) 评论(0) 推荐(0)

摘要: 一.输出文件流成员函数1.输出流的open函数要使用一个输出文件流(ofstream),必须在构造函数或open函数中把该流与一个特定的磁盘文件关联起来。在各种情况下,描述文件的参量是相同的。当你打开一个与输出流关联.的文件时,通常指定一个open_mode标志,如下表所示。可以用按位OR(|)运算符组合这些标志,它们作为枚举器定义在ios类中。表输出文件流文件打开模式标志 功       能ios::app 打开一个输出文件用于在文件尾添加数据 ios::ate 打开一个现存文件(用于输入或输出)并查找到结尾ios::in 打开一个输入文件对于一个ofstream文件,使用ios::in作为 阅读全文
posted @ 2011-01-15 14:45 李sir 阅读(3977) 评论(0) 推荐(0)