金山软件软件工程笔试题 软件工程考试题.docx

上传人:马****2 文档编号:23503785 上传时间:2022-06-30 格式:DOCX 页数:14 大小:20.36KB
返回 下载 相关 举报
金山软件软件工程笔试题 软件工程考试题.docx_第1页
第1页 / 共14页
金山软件软件工程笔试题 软件工程考试题.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《金山软件软件工程笔试题 软件工程考试题.docx》由会员分享,可在线阅读,更多相关《金山软件软件工程笔试题 软件工程考试题.docx(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Word金山软件软件工程笔试题 软件工程考试题 下面是我整理的金山软件软件工程笔试题 软件工程考试题,供大家阅读。 金山软件软件工程笔试题 一、请你就C/C+或者JAVA代码行数、解释行数统计工具的实现,描述一下: 1、 需要考虑哪些过滤条件?你如何处理? 答:过滤条件:(取得每行并去掉两头的空格后) 空行,行的长度为0;假如是以/开头,为解释行;/在行中,并推断不是在字符串中,即中,为代码+解释混合行,/在中时为代码行;假如/*在行中,推断是否是在内,否则为解释行,*/不在中时是结束 ;/* */只在一行,推断行中是否有代码,无代码为解释行,有代码是混合行;/* */多行,并且/*前无代码,

2、/*后无代码,去掉其中空行都是解释行;/* */多行,/*在代码后,或*/后有代码,有混合行;一行中有2个/*并且就1个*/,此行为混合行,其后是解释行,金山软件软件工程笔试题。 2、 怎样提升这个工具的易用性? 答:把这个工具设置成图形界面,用户只需输入文件名或者在文件对话框中选择文件即可点击运行输出结果。 本题只需要供应思路文档,不需要程序代码。 二、给定一个自然数n,试完成如下程序,它输出不大于n的全部素数(质数)。 1、 请供应程序代码,以及思路文档。 答:思路:求出一个数j的平方根sqrt(j),将j除以2sqrt(j)之间的数,只要除尽一次,就不是素数,之后数j加2。 #inclu

3、de #include void main() int N=1000; int i,j,k,m=0; for(j=1;j k=(int)sqrt(j); /*求平方根*/ for(i=2;i=k;i+) if(j%i=0) /*只要除尽一次,就不是素数*/ break; if(ik) /*/除到k始终没除尽,是素数*/ printf(%d ,j); 3、 请分析一下可以从哪些角度可优化该程序的时间性能? 答:偶数(除了2)不能为素数;推断一个数j是否为素数,只要将其除以2 sqrt(j)之间的素数,更进一步,没有必要对全部奇数进行试除,只需对全部sqrt(j)以内的全部质数试除就可以了。 三、

4、高精度乘法 用户输入两个不大于 256 位的正整数,由程序进行乘法运算,并显示运算过程与结果。例: 输入:12, 32 输出: 12 32 24 36 384 #include #include #include #define max 256 int Amax,Bmax; int Alen,Blen; int Smax *2; void InputAB() /输入A B int c; while (!isdigit(c = getchar() ; Alen=1; A0= c 0; while (isdigit(c = getchar() AAlen+ = c 0; while (!isdig

5、it(c = getchar() ; Blen = 1; B0 = c 0; while (isdigit(c = getchar() BBlen+ = c 0; void Print(int Array, int len) /输出数组 int i=0; while (i i+; if (i = len) printf(0 n); return; for ( ;i len; i+) printf(%d,Arrayi); printf(n); void Mul(int Array, int len, int n, int Result, int zeros) /相乘 int i; for (i

6、= len 1; 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 = zeros; i+) Resultlen+i = 0; void Add(int total, int tlen, const int add, int alen) /各行相加 int i,k = tlen; while (tlen 0) (alen 0) /相加 tlen; a

7、len; totaltlen += addalen; for (i = 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,

8、 Blen 1 -i);/B中的一个数与A的全部数相乘 Print(temp, Alen + 1); /输出相乘过程中的每行 Add(S, max*2, temp, Alen + Blen i);/每行相加 printf(n); Print(S, max*2); 四、输入一个N进制数,将其转换成 M 进制数(1 #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 输入待转换整数: ; ch

9、ar c; char a80; char b80; int i=0,j=0,length; while (c = getchar()!=n) /输入 ai=c; i+; length=i; /输入的数的位数 0i-1 for(j=0;j if( aj=0aj=9 ) bj = aj 0; else if( aj=aaj=f ) bj = aj -a +10; else if( aj=Aaj=F ) bj = aj -A +10; else return FALSE; cout输入的数是多少进制N:; int n cinn; assert(n1)(n=16); int num=0; for(i=

10、0,j=length-1;j=0;j,i+)/输入的数转成十进制 num+=bi*pow(n,j); cout 转换成进制数M: ; int m; cin m; cout assert(m1)(m=16); stack stk; char remain; while (num!=0)/转成M进制 remain = digitnum%m; stk.push(remain); num/= m; cout 结果: ;/输出结果 while(!stk.empty() cout stk.pop(); cout return 0; 五、选答题(以下任选一题): 1、构建一个应用程序,它可以显示剪贴板上全部

11、可用的格式,并且将常规格式(如文本、图形)显示出来,资料共享平台金山软件软件工程笔试题( 2、构建一个应用程序,它用于显示一幅透亮位图。即,给定一个背景图、一个待显示位图和一个对应于该位图的屏蔽(mask)图,将位图未屏蔽部分显示在背景图上。 3、构造一个服务端程序和一个客户端程序。它用于通过网络将文件从服务端传送到客户机(类似FTP)。或者直接是一个FTP客户端程序也可,不能使用FTP控件。 4、构造一个应用程序,它定时猎取CPU利用率,并且以折线图的方式动态显示出来。 5、利用UDP把一个文件从一台机器传送到另一台机器。 6、在某文件中查找指定的单词,把全部包含此单词的文本行打印出来,并对

12、找到的单词作着重显示(如下划线或其他显示方式)的处理。 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为单词,m单词长度,char s为行,n行的长度,colpos记录找到单词所在的位置 int i=0,j=0,cnt=0; while(j if(i = m) if(!isalpha(sj)!isalpha(sj-m-1)

13、/字符串前后不是字母时是单词 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;/返回查到的个数 int count_string(string source, string target, vector colpos) int find_cnt = 0; find_cnt = wor

14、d_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 Input the file name:; cin file_name; ifstream in_file; /打开文件 try in_file.open(file_name.c_str(); if(!in_file) throw(file_name);

15、 catch(string file_name) cout Fatal error: File not found. 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.resiz

16、e(10); do cout Input the word you want to find(# for quit):;/输入要查找的单词#结束 cin tag; if(tag = #) break; int count = 0, line_no = 0 , inline_count;/line_no是行号,第?行 for(line_no = 0 ;line_no line_count ; line_no+) inline_count = count_string(linesline_no, tag, colpos);/每行查到的个数 count += inline_count; /查到的总数 if(inline_count 0) cout 在第 line_no行找到 inline_count个 cout ,所在位置是 ; for(int i = 0 ;i inline_count ;i+) cout colpos ;/输出位置 cout endl; cout linesline_no endl;/输出行,未作着重显示 while(tag != #); in_file.close(); return 0; 14

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com