做错的笔试题汇总
2011-09-05 17:00
148 查看
设在内存中有P1、P2、P3三道程序,并按照P1、P2、P3的优先次序运行,其内部计算和I/O操作时间由下图给出:
P1:计算 60ms----------------I/O 80ms-----------------计算 20ms
P2:计算 120ms--------------I/O 40ms-----------------计算 40ms
P3:计算 40ms----------------I/O 80ms-----------------计算 40ms
调度程序的执行时间忽略不计,完成这三道程序比单道运行节省的时间是(C )
A、80ms B、120ms C、160ms D、200ms
解析:首先P1计算60ms,然后I/O 80ms,在这80ms中,P2也同步开始计算,等P1的I/O运行完了,CPU停止P2的计算,转去做P1后期那20ms的运算,至此所花时间为60+80+20=160ms;然后CPU再去接着运算P2,40ms,然后p2I/O运行40ms,在此期间,cpu去计算p3,正好也是40ms,算完之后接着算p2的后期部分,40ms,在此期间,因为p3的前40ms已经计算完成,可以进行i/o操作,所以同时p3的i/o也开始运行,运行80ms,这80ms中,前40msCPU在算P2,后40msCPU在算P3,所以是:40+40+40+80=200ms,加上前面的160,为360ms。
而如果是单道运行,则时间花费为:60+80+20+120+40+40+40+80+40=520ms,相差为520-360=160ms ,选c
二分搜索(递归与非递归)
题目:求符合指定规则的数。
给定函数d(n) = n + n的各位之和,n为正整数,如 d(78) = 78+7+8=93。 这样这个函数可以看成一个生成器,如93可以看成由78生成。
定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。
输出:
1
3
…
P1:计算 60ms----------------I/O 80ms-----------------计算 20ms
P2:计算 120ms--------------I/O 40ms-----------------计算 40ms
P3:计算 40ms----------------I/O 80ms-----------------计算 40ms
调度程序的执行时间忽略不计,完成这三道程序比单道运行节省的时间是(C )
A、80ms B、120ms C、160ms D、200ms
解析:首先P1计算60ms,然后I/O 80ms,在这80ms中,P2也同步开始计算,等P1的I/O运行完了,CPU停止P2的计算,转去做P1后期那20ms的运算,至此所花时间为60+80+20=160ms;然后CPU再去接着运算P2,40ms,然后p2I/O运行40ms,在此期间,cpu去计算p3,正好也是40ms,算完之后接着算p2的后期部分,40ms,在此期间,因为p3的前40ms已经计算完成,可以进行i/o操作,所以同时p3的i/o也开始运行,运行80ms,这80ms中,前40msCPU在算P2,后40msCPU在算P3,所以是:40+40+40+80=200ms,加上前面的160,为360ms。
而如果是单道运行,则时间花费为:60+80+20+120+40+40+40+80+40=520ms,相差为520-360=160ms ,选c
二分搜索(递归与非递归)
int bsearch1(int a[], int x, int low, int high) { if (low > high) return -1; int mid = (low+high)/2; if (x<a[mid]) return bsearch1(a,x,low,mid-1); else if(x>a[mid]) return bsearch1(a,x,mid+1,high); else return mid; } int bsearch2(int a[], int x, int len) { int low = 0; int high = len-1; while (low<=high) { int mid = (low+high)/2; if (x<a[mid]) high=mid-1; else if (x>a[mid]) low=mid+1; else return mid; } return -1; }
题目:求符合指定规则的数。
给定函数d(n) = n + n的各位之和,n为正整数,如 d(78) = 78+7+8=93。 这样这个函数可以看成一个生成器,如93可以看成由78生成。
定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。
输出:
1
3
…
#include<iostream> using namespace std; #define MAX_AREA 10000 int main() { unsigned int t=MAX_AREA/32,t1; unsigned int mem_tmp[MAX_AREA/32]={0}; unsigned int tmp,tmp1,j; for(int i=3;i<=MAX_AREA;++i){ tmp=j=i; //caculate the sum do{ tmp+=j%10; j/=10; }while(j!=0); //fill the mem t1=tmp/32; if(t1>t) { cout<<"================="<<endl; continue; } mem_tmp[t1]|=((unsigned int)1<<(tmp%32-1)); } //now output for(i=3;i<=MAX_AREA;++i){ if(!(mem_tmp[i/32]&(unsigned int)1<<(i%32-1))){cout<<i<<endl;} } return 0; }
相关文章推荐
- [互联网面试笔试汇总C/C++-7] 寻找两个链表的第一个交点-微策略
- C/C++ linux 嵌入式相关 带答案的笔试题 汇总~~
- 今天做错的笔试题:StringBuffer引用传参
- 百度2014笔试算法题汇总
- ssh三大框架——Spring,hibernate,struts面试笔试题汇总(含答案)
- 2009-2010 各大IT公司笔试真题汇总
- 秒杀多线程第一篇 多线程笔试面试题汇总
- 秒杀多线程第一篇 多线程笔试面试题汇总
- 笔试题汇总(1)
- C/C++ 笔试、面试题目大汇总
- c++笔试题汇总
- 京东秋招笔试题汇总
- 多线程笔试面试题汇总
- 秒杀多线程第一篇 多线程笔试面试题汇总
- 125条常见的java面试笔试题大汇总
- 百度笔试题——找出程序中的错误(关于中文字符赋值给char时它是一个负数的问题),今天我是做错了!悲剧了!
- 2016最新笔试题汇总
- java面试笔试题大汇总 ~很全面
- C/C++面试笔试题目汇总
- c++笔试题汇总