软件工程公司面试试题_第1页
软件工程公司面试试题_第2页
软件工程公司面试试题_第3页
软件工程公司面试试题_第4页
软件工程公司面试试题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、姓名: 日期: 年 月 日 答题时间: 一、请你就C/C+或者JAVA代码行数、注释行数统计工具的实现,描述一下:1、 需要考虑哪些过滤条件?你如何处理?答:过滤条件:(取得每行并去掉两头的空格后)空行,行的长度为0;如果是以/开头,为注释行;/在行中,并判断不是在字符串中,即“”中,为代码+注释混合行,/在“”中时为代码行;如果/*在行中,判断是否是在“”内,否则为注释行,*/不在“”中时是结束 ;/* */只在一行,判断行中是否有代码,无代码为注释行,有代码是混合行;/* */多行,并且/*前无代码,/*后无代码,去掉其中空行都是注释行;/* */多行,/*在代码后,或*/后有代码,有混合

2、行;一行中有2个/*并且就1个*/,此行为混合行,其后是注释行。 2、 怎样提升这个工具的易用性?答:把这个工具设置成图形界面,用户只需输入文件名或者在文件对话框中选择文件即可点击运行输出结果。本题只需要提供思路文档,不需要程序代码。二、给定一个自然数n,试完成如下程序,它输出不大于n的所有素数(质数)。1、 请提供程序代码,以及思路文档。答:思路:求出一个数j的平方根sqrt(j),将j除以2sqrt(j)之间的数,只要除尽一次,就不是素数,之后数j加2。#include#includevoid main() int N=1000;int i,j,k,m=0;for(j=1;jN;j=j+2

3、) /*1-N间的素数*/ k=(int)sqrt(j); /*求平方根*/ for(i=2;ik) /*/除到k一直没除尽,是素数*/ printf(%d ,j);3、 请分析一下可以从哪些角度可优化该程序的时间性能?答:偶数(除了2)不能为素数;判断一个数j是否为素数,只要将其除以2 sqrt(j)之间的素数,更进一步,没有必要对所有奇数进行试除,只需对所有sqrt(j)以内的所有质数试除就可以了。三、高精度乘法用户输入两个不大于 256 位的正整数,由程序进行乘法运算,并显示运算过程与结果。例:输入:12, 32输出: #include #include #include #define

4、 max 256int Amax,Bmax;int Alen,Blen;int Smax *2;void InputAB() /输入A Bint c; while (!isdigit(c = getchar() ; Alen=1;A0= c - 0; while (isdigit(c = getchar() AAlen+ = c - 0; while (!isdigit(c = getchar() ; Blen = 1;B0 = c - 0; while (isdigit(c = getchar() BBlen+ = c - 0;void Print(int Array, int len) /

5、输出数组int i=0; while (ilen) & (Arrayi = 0) ) i+; if (i = len) printf(“0 n”); return; for ( ;i = 0; i-) Resulti+1 = Arrayi*n; Result0 = 0; for (i = len; i 0; i-)if (Resulti = 10) /大于10的进位 Resulti-1 +=Resulti / 10; Resulti %= 10; for (i = 1; i 0) & (alen 0) /相加 tlen-; alen-; totaltlen += addalen; for (i

6、 = k - 1; i=0; i-) if (totali = 10) /大于10的进位 totali - 1 += totali / 10; totali %= 10; void main()int i,j; int tempmax*2; InputAB(); Print(A,Alen); printf(“*”); Print(B,Blen); printf(-n); for(i = Blen-1; i = 0; i-)for(j=Blen-i,j=0;j-) /输出空格printf(“ ”); Mul(A, Alen, Bi, temp, Blen - 1 -i);/B中的一个数与A的所有

7、数相乘 Print(temp, Alen + 1); /输出相乘过程中的每行 Add(S, max*2, temp, Alen + Blen - i);/每行相加 printf(-n); Print(S, max*2);四、输入一个N进制数,将其转换成 M 进制数(1N=16,1M=16)#include #include #include #include #include using namespace std;int main()char digit16 = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;cout 输入待转换整数: ;char c;char a80;ch

8、ar b80;int i=0,j=0,length;while (c = getchar()!=n) /输入ai=c; i+;length=i; /输入的数的位数 0i-1for(j=0;j=0&aj=a&aj=A&aj=F ) bj = aj -A +10; else return FALSE; coutn;assert(n1)&(n=0;j-,i+)/输入的数转成十进制num+=bi*pow(n,j);cout m;cout 1)&(m=16);stack stk;char remain;while (num!=0)/转成M进制 remain = digitnum%m; stk.push(

9、remain); num/= m; cout 结果: ;/输出结果while(!stk.empty() cout stk.top(); stk.pop();cout endl;return 0;五、选答题(以下任选一题):1、构建一个应用程序,它可以显示剪贴板上所有可用的格式,并且将常规格式(如文本、图形)显示出来。2、构建一个应用程序,它用于显示一幅透明位图。即,给定一个背景图、一个待显示位图和一个对应于该位图的屏蔽(mask)图,将位图未屏蔽部分显示在背景图上。3、构造一个服务端程序和一个客户端程序。它用于通过网络将文件从服务端传送到客户机(类似FTP)。或者直接是一个FTP客户端程序也可

10、,不能使用FTP控件。4、构造一个应用程序,它定时获取CPU利用率,并且以折线图的方式动态显示出来。5、利用UDP把一个文件从一台机器传送到另一台机器。6、在某文件中查找指定的单词,把所有包含此单词的文本行打印出来,并对找到的单词作着重显示(如下划线或其他显示方式)的处理。6:#include #include #include #include #include #include using namespace std;int word_find(const char t, int m, const char s, int n ,vector& colpos)/查找单词,char t为单词,

11、m单词长度,char s为行,n行的长度,colpos记录找到单词所在的位置 int i=0,j=0,cnt=0; while(j= m) if(!isalpha(sj)&!isalpha(sj-m-1)/字符串前后不是字母时是单词 colposcnt+ = j - m ;/单词的第一个字符所在的行下标 i=0; /单词串下标重置为0 if(cnt = colpos.size() colpos.resize(cnt * 2);/长度重设为原来2倍 else i=0; else if (sj=ti) +i;+j; else j=j-i+1; i=0; /下标后退重新开始匹配 return cnt

12、;/返回查到的个数int count_string(string source, string target, vector& colpos) int find_cnt = 0; find_cnt = word_find(target.c_str(), target.size(), source.c_str(),source.size(),colpos); return find_cnt;/返回查到的个数int main()string file_name, line;vector lines;lines.resize(10); cout file_name;ifstream in_file;

13、 /打开文件try in_file.open(file_name.c_str(); if(!in_file) throw(file_name); catch(string file_name) cout Fatal error: File not found.endl; exit(1); int line_count = 0;/文件行数do getline(in_file, linesline_count); line_count +; if(line_count = lines.size()/未结束时行数设为原来2倍 lines.resize(line_count * 2); while(in_file.eof()=0);string tag;/要查找的单词vector colpos;/单词中第一个字符所在位置colpos.resize(10);do cout tag; if(tag = #) break; int count = 0, line_no = 0 , inline_count;/line_no是行号,第?行 for(lin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论