网络技术机试.docx

上传人:b****6 文档编号:7109196 上传时间:2023-01-18 格式:DOCX 页数:87 大小:54KB
下载 相关 举报
网络技术机试.docx_第1页
第1页 / 共87页
网络技术机试.docx_第2页
第2页 / 共87页
网络技术机试.docx_第3页
第3页 / 共87页
网络技术机试.docx_第4页
第4页 / 共87页
网络技术机试.docx_第5页
第5页 / 共87页
点击查看更多>>
下载资源
资源描述

网络技术机试.docx

《网络技术机试.docx》由会员分享,可在线阅读,更多相关《网络技术机试.docx(87页珍藏版)》请在冰豆网上搜索。

网络技术机试.docx

网络技术机试网络技术机试1【审题关键句】将大于整数m且紧靠m的k个素数存入数组。

【解题思路】首先定义一个计数变量cnt并赋初值为0。

利用while循环统计大于整数m且紧靠m的k个素数,当计数变量cnt的值与变量k的值相等的时候,则退出while循环。

每执行一次循环时,变量m的值加1,然后调用函数isP()判断当前的m值是否为素数,如果是素数,则将m的值赋给数组xxcnt,同时计算变量cnt的值加1,即当数组xx0中保存了一个素数之后,在下一次素数判断成立时将保存到xx1的位置上,依次类推。

【参考答案】intcnt=0;/定义变量cnt并初值等于0while(cntk)/当cnt的值小于k时m+;/变量m加1if(isP(m)xxcnt+=m;/如果m为素数,则把其赋给数组元素xxcnt,并且数组的下标cnt加12【审题关键句】求素数的个数及平均值,并计算非素数的平均值。

【解题思路】首先定义循环变量i,然后通过for循环对数组a300中的每个元素ai调用函数isP(ai)判断ai是否是素数(素数的算法已在isP()函数中给出,此处直接调用即可),如果是素数,则把其加到变量pjz1上,同时计数变量cnt加1,否则ai值加到变量pjz2上。

直到判断完数组a300中的所有数据后退出循环。

求出pjz1、pjz2和cnt的值之后,再用变量pjz1的值除以cnt的值就得到素数的平均值,同时把这个值赋给变量pjz1,最后用变量pjz2的值除以300-cnt的值就得到非素数的平均值,并把这个值赋给变量pjz2。

【参考答案】inti;/定义变量ifor(i=0;i300;i+)/循环变量i从0依次递增到299if(isP(ai)/判断数组元素ai是否素数pjz1+=ai;/把ai累加到变量pjz1cnt+;/变量cnt加1elsepjz2+=ai;/否则,把数组元素ai累加到变量pjz2pjz1/=cnt;/所有素数的和pjz1除以素数的个数cnt,得到素数的平均值并赋给变量pjz1pjz2/=(300-cnt);/所有非素数的和pjz2除以非素数的个数300-cnt,得到非素数的平均值并赋给变量pjz23【审题关键句】100以内(含100)满足i、i+4、i+10都是素数的整数的个数以及这些i之和。

【解题思路】首先定义循环变量i,然后将i的值赋初值为3,每循环一次则将i的值加1,直到i90。

在for循环中,每执行一次循环则调用函数isPrime()(该函数具体的算法已经在源程序中给出,直接调用即可),对i、i+4、i+10是否同时是素数进行判断,如果这三个数同时为素数,则计数变量cnt值加1,同将时将变量i的值累加到sum上。

【参考答案】inti;/定义变量ifor(i=3;i90;i+)/循环变量i从3开始,依次递增,直到小于90if(isPrime(i)&isPrime(i+4)&isPrime(i+10)/如果i,i+4,5i+10同时为素数cnt+;sum+=i;/变量cnt加1,变量i累加到sum4【审题关键句】求素数的个数,存入数组,按从小到大的顺序排序。

【解题思路】首先定义两个循环变量循环i、j和一个用于数据交换的整型变量tmp。

通过for循环依次读取数组中的300个数,其中,循环变量i从0开始每次加1,直到i300停止循环;在每次循环中判断ai是否是素数,如果是素数,则把ai的值赋给数组bcnt,同时数组下标变量cnt值加1。

在退出循环后,用两个for循环对数组b中元素进行两两比较,实现数组元素从小到大的排序,比较过程中通过整型变量tmp实现两个数的交换。

【参考答案】inti,j,tmp;/定义整型变量i,j,tmpfor(i=0;i300;i+)/循环变量i从0依次递增到299if(isP(ai)bcnt+=ai;/如果数组元素ai是素数,则把ai赋给bcnt,同时数组下标变量cnt加1for(i=0;icnt;i+)/循环变量i从0开始依次递增,直到其值等于cntfor(j=i+1;jbj)/如果数组元素bi大于bj,则进行互换tmp=bj;/把bj的值赋给变量tmpbj=bi;/把bi的值赋给bjbi=tmp;/把变量tmp的值赋给bi5【审题关键句】选出100以上、1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数,计算并输出上述这些素数的个数以及这些素数值的和。

【解题思路】首先定义一个循环变量循环i以及用来存放3位数分解之后各位数的变量bw(百位)、sw(十位)和gw(个位)。

通过for循环对100到999的每个数字进行逐个的扫描,循环变量i从100开始,每执行一次循环,i的值加1。

在每次执行for循环时,分解当前变量i值的百位上的数字、十位上的数字和个位上的数字,然后利用表达式(gw+sw)%10=bw来判断个位数字与十位数字之和被10除所得余数与百位数字是否相等,同时调用函数isP()判断变量i的值是否是素数,如果以上两个条件同时满足(两个表达式通过&运算符进行连接),则计数变量cnt值加1、并把其值加到变量sum上,直到循环结束,即可求出从100到999中所有满足条件的素数的个数和它们的和。

【参考答案】inti,bw,sw,gw;/定义整型变量i,bw,sw,gwfor(i=100;i500;i-)/循环变量i从800开始,每次减1,直到其值等于500if(isPrime(i)/如果i是素数cnt+;/变量cnt加1j*=-1;/变量j乘以-1,变号sum+=j*i;/把变量j与i的积累加到变量sum上第2类数位分解后按数筛选统计并排序7【审题关键句】千位+十位组合与个位+百位组合,都是奇数,两数相减结果大于等于0小于等于10,从大到小排序。

【解题思路】首先,本题要定义多个变量,包括两个循环变量循环i、j;用来存放四位数分解之后各位数的变量qw(千位)、bw(百位)、sw(十位)和gw(个位);两个用来存放重新组合数字的变量newV1和newV2。

通过for循环依次对数组中的每个四位数进行分解,每分解一个四位数,根据题目要求,对其各位数进行重新组合,形成两个新的十位数,组合条件分别是原四位数的千位和十位组成一个十位数,个位和百位组成一个十位数,并将两个新的十位数分别赋给变量newV1和newV2。

数字重组完毕之后,再根据题目要求筛选满足条件的四位数,本题需要考虑多个筛选条件:

一是新组合的十位数中,其十位数不能为0,即原四位数的千位和个位数字不能为0;二是两个新组合的十位数之差必须大于等于0小于等于10;三是两个新组合的数字均为奇数。

将同时满足以上3个条件的四位数赋给数组bcnt,同时数组下标值加1,当for循环执行完毕后,则将所有满足条件的四位数全部存放到数组bcnt中。

最后通过两个for循环,对数组bcnt中的元素按从大到小的顺序排序,排序过程中,可用newV1或newV2作为数据交换的中间变量。

【参考答案】intqw,bw,sw,gw,i,j,newV1,newV2;for(i=0;i0&newV1-newV2=10)&(newV1%2)&(newV2%2)/如果ai的千位上的数字,个位上的数字均不等于零并且新组成的第一个数大于第二个数且第一个数与第二个数的差小于等于10且第一个数字,第二个数字均为奇数bcnt+=ai;/把ai赋给bcnt,同时下标变量cnt加1/*对数组bcnt中的数字进行排序*/for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)/如果数组元素bi小于bj,则两者交互换,对数组b进行降序排列newV1=bj;bj=bi;bi=newV1;8【审题关键句】千位+十位组合与个位+百位组合,素数,从大到小排序。

【解题思路】本题类似第24套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,要求判断两个新组合的数都为素数,参考答案的第10条语句,修改该条件语句符合题目的要求,其中,判断十位数是否为素数可以调用函数isprime()进行判断,素数判断的具体算法已经在源程序中给出,不需要掌握。

【参考答案】intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;iMAX;i+)qw=ai/1000;gw=ai%10;bw=(ai-qw*1000)/100;sw=(ai-qw*1000-bw*100)/10;newV1=qw*10+sw;newV2=gw*10+bw;if(qw&gw&isprime(newV1)&isprime(newV2)/如果ai千位上的数字和个位上的数字都不等于零且新组成的第一个数和第二个数都为素数bcnt+=ai;for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)newV1=bj;bj=bi;bi=newV1;9【审题关键句】千位+十位与个位+百位,比较大小,整除,奇偶数判断,从大到小排序。

【解题思路】本题类似第24套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,体现在3个方面:

新组合的第一个数小于第二个数,可通过比较运算符进行判断;整除关系的判断以及奇偶数的判断,可通过求余运算符(%)进行判断。

参考答案的第10条语句,可集中修改该条件语句符合题目的要求。

【参考答案】intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;iMAX;i+)qw=ai/1000;gw=ai%10;bw=(ai-qw*1000)/100;sw=(ai-qw*1000-bw*100)/10;newV1=qw*10+sw;newV2=gw*10+bw;if(qw&gw&(newV1newV2)&(newV1%2)&(newV1%5)&(newV2%2=0)/如果ai千位上的数字与个位上的数字不等于且第一个新数小于第二个新数且第一个新数是奇数且不能被5整除且第二个新数是偶数bcnt+=ai;for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)newV1=bj;bj=bi;bi=newV1;10【审题关键句】个位+千位与百位+十位,偶数,整除,从大到小排序。

【解题思路】本题类似第24套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个方面:

分解后重新组合成两位数的方式不同,参考答案的第8、9条语句重新指定两位数的组合方式;新组合的两位数的偶数的判断及整除判断,参考答案的第10条语句。

注意,两个整除关系表达式要用或运算符(|)连接,且用括号括起来先进行整除运算(因为或运算级别比与运算级别低,因此要括起来),再与奇偶性判断表达式进行与(&)运算。

【参考答案】intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;iMAX;i+)qw=ai/1000;gw=ai%10;bw=(ai-qw*1000)/100;sw=(ai-qw*1000-bw*100)/10;newV1=gw*10+qw;/ai个位上的数字与千位上的数字组成第一个新数newV1newV2=bw*10+sw;/ai百位上的数字与十位上的数字组成第二个新数newV2if(gw&bw&(newV1%2=0)&(newV2%2=0)&(newV1%9=0|newV2%9=0)/如果ai个位上的数字与百位上的数字都不为零且新组成的两个数都为偶数且至少有一个数能被9整除bcnt+=ai;for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)newV1=bj;bj=bi;bi=newV1;11【审题关键句】个位+千位与百位+十位,奇数,偶数,整除,从大到小排序。

【解题思路】本题类似第24套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个方面:

分解后重新组合成十位数的方式不同,参考答案的第8、9条语句重新指定两位数的组合方式;新组合的两位数的奇偶性判断及整除判断,参考答案的第10条语句。

本题第10条语句中各条件表达式之间的关系有些复杂,大致思路是:

首先判断新组合的两位数的十位不为0,即表达式“gw&bw”;再判断新组合的第一个两位数为偶数,第二个两位数为奇数,且两个两位数中至少有一个能被17整除的情况,两个整除关系表达式式要用或运算符(|)连接,且用括号括起来先计算或运算,再与奇偶性判断表达式进行与运算;最后,在判断新组合的第一个两位数为奇数,第二个两位数为偶数,且两个两位数中至少有一个能被17整除的情况(各表达式之间的连接关系同第2步)。

完成以上3部分的表达式设计后,再通过与运算将3部分表达式连接起来。

【参考答案】intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;iMAX;i+)qw=ai/1000;gw=ai%10;bw=(ai-qw*1000)/100;sw=(ai-qw*1000-bw*100)/10;newV1=gw*10+qw;/ai个位上的数字与千位上的数字组成第一个新数newV1newV2=bw*10+sw;/ai百位上的数字与十位上的数字组成第二个新数newV2if(gw&bw&(newV1%2=0)&(newV2%2)&(newV1%17=0|newV2%17=0)|(newV1%2)&(newV2%2=0)&(newV1%17=0|newV2%17=0)/如果ai个位上的数字与百位上的数字都不为零且第一个新数为偶数,第二个新数为奇数且两者至少有一个能被17整除或者第一个新数为奇数,第二个新数为偶数且两者至少有一个能被17整除bcnt+=ai;/把满足上述条件的ai赋给bcnt,同时数组的下标变量cnt加1for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)/如果数组b中元素bi小于bj,则两者互换,实现对数组b的降序排列newV1=bj;bj=bi;bi=newV1;12【审题关键句】千位+个位与百位+十位,奇数,整除,从大到小排序。

【解题思路】本题类似第27套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个方面:

分解后重新组合成两位数的方式不同,参考答案的第8、9条语句重新指定两位数的组合方式;新组合的两位数的奇数的判断及整除判断,参考答案的第10条语句。

【参考答案】intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;iMAX;i+)qw=ai/1000;gw=ai%10;bw=(ai-qw*1000)/100;sw=(ai-qw*1000-bw*100)/10;newV1=qw*10+gw;/ai千位上的数字与个位上的数字组成第一个新数newV1newV2=bw*10+sw;/ai百位上的数字与十位上的数字组成第二个新数newV2if(qw&bw&(newV1%2)&(newV2%2)&(newV1%5)=0|(newV2%5)=0)/如果ai千位上的数字与百位上的数字都不零且两个新组成的数均是奇数并且至少有一个数能被5整除bcnt+=ai;/把满足上述条件的四位数ai赋给bcnt,同时数组的下标变量cnt加1for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)/如果数组b中的元素bi小于bj,则两者互换,实现数组b的降序排列newV1=bj;bj=bi;bi=newV1;13【审题关键句】千位+十位与个位+百位,都是偶数,两数相减结果大于等于10小于等于20,从大到小排序。

【解题思路】本题类似第27套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个方面:

第一是判断新组合的两个两位数都为偶数;第二是两数相减后所要求的值域范围稍有不同,本题要求的是大于等于10小于等于20。

参考答案的第10条语句,集中修改该语句即可。

【参考答案】intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;i=10&newV1-newV2=20)&(newV1%2=0)&(newV2%2=0)/如果ai千位上的数字与个位上的数字都不为零且第一个新数与第二个新数的差大于等于10而小于等于20并且新组成的两个新数都为偶数bcnt+=ai;for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)newV1=bj;bj=bi;bi=newV1;14【审题关键句】千位+十位与个位+百位,比较大小,整除,奇数,从大到小排序。

【解题思路】本题类似第26套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,即判断新组合的两位数要求第一个为偶数,第二个为奇数,比较两题的第10条语句,只需将新组合的第二个数的判断条件改为奇数判断,即“newV2%2”。

【参考答案】intqw,bw,sw,gw,i,newV1,newV2,j;for(i=0;inewV2)&(newV1%2=0&newV1%5=0)&(newV2%2)/如果ai千位上的数字与个位上的数字都不为零且第一个新数大于第二个新数且第一个新数必须是偶数且能被5整除,第二个新数必须是奇数bcnt+=ai;for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)newV1=bj;bj=bi;bi=newV1;15【审题关键句】各位都是偶数,从大到小排序。

【解题思路】首先,本题要定义多个变量,包括两个循环变量循环i、j;用来存放四位数分解之后各位数的变量qw(千位)、bw(百位)、sw(十位)和gw(个位);一个用于数据交换的整型变量ab。

通过for循环依次对数组中的每个四位数进行分解,得到每位上的数字,然后通过if条件语句判断每位数是否都为偶数,注意,每个表达式之间的关系为与运算,即需要同时满足这4个表达式的数才符合条件。

将满足条件的四位数赋给数组bcnt,同时数组下标值加1,当for循环执行完毕后,则所有满足条件的四位数全部存放到数组bcnt中。

最后通过两个for循环,对数组bcnt中的元素按从大到小的顺序排序,排序过程中,变量ab作为数据交换的中间变量。

【参考答案】intqw,bw,sw,gw,i,j,ab;for(i=0;iMAX;i+)qw=ai/1000;gw=ai%10;bw=(ai-qw*1000)/100;sw=(ai-qw*1000-bw*100)/10;if(qw%2=0)&(bw%2=0)&(sw%2=0)&(gw%2=0)/如果ai各位上的数字均为偶数bcnt+=ai;/把满足上述条件的四位数ai赋给bcnt,同时数组下标变量cnt加1for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)/如果数组b中的元素bi小于bj,则两者互换,对数组b进行降序排列ab=bj;bj=bi;bi=ab;16【审题关键句】各位都是奇数,从大到小排序。

【解题思路】本题类似第32套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,即判断四位数的每一位数都为奇数,参考答案的第8条语句,只需将每位数的判断条件改为奇数判断即可。

【参考答案】intqw,bw,sw,gw,i,j,ab;for(i=0;iMAX;i+)qw=ai/1000;gw=ai%10;bw=(ai-qw*1000)/100;sw=(ai-qw*1000-bw*100)/10;if(qw%2)&(bw%2)&(sw%2)&(gw%2)/如果ai各位上的数字均为奇数bcnt+=ai;for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+)if(bibj)ab=bj;bj=bi;bi=ab;17【审题关键句】完全平方根,有两个相同数。

【解题思路】首先,本题要定义多个变量,包括一个循环变量k;一个用来保存k平方的变量n;一个数组下标变量cnt并赋初值为0;存放三位数分解之后各位数的变量a(百位)、b(十位)、c(个位)。

通过for循环筛选满足条件的数。

大致分4步设定筛选条件,第一步设定判断条件,循环变量的初值从10开始,因为从10开始的数,其平方数最少也是3位数,循环的终止条件此处先留空,在后面的循环体中进行设定,每执行一次循环,变量k的值加1;第二步指定变量n的值等于k的平方,判断变量n的值如果小于100则进入下一次循环,如果n值大于999则退出整个for循环,这表示只有n值在100和999(包含)之间才执行条件表达式后面的语句;第3步是分解满足条件的三位数,得到每位数上的数字,然后通过if条件语句判断三个数中是否有两个数相等,即可以通过表达式“(a-b)*(a-c)*(b-c)=0”进行判断;第四步将满足条件的数输出,并把满足条件的三位数n赋给数组元素bbcnt,同时数组下标变量cnt加1。

返回满足条件的三位数的个数cnt。

【参考答案】intn,k,a,b,c,cnt=0;/定义整型变量n,k,a,b,c,cnt,同时变量cnt的初值为0for(k=10;k+)/循环变量k从10开始,每次递增1n=k*k;/把k的平方数赋给nif(n999)break;/如果n的值大于999,则退出for循环语句a=n/100;/n除以100得到n的百位上的数字b=n%100/10;/n对100求余再除以10,得到n的十位上的数字c=n%10;/n对10求余得到n个位上的数字if(a-b)*(a-c)*(b-c)=0)/如果n三个数位上的数字有两个相同printf(N=%d=%d*%dn,n,k,k);bbcnt+=n;/把满足条件的三位数n赋给数组元素bbcnt,同时数组下标变量cnt加1returncnt;/返回满足条件的三位数的个数cnt第4类根据相邻数大小进行筛选统计并排序18【审题关键句】同时被3和7整除的自然数和的平方根。

【解题思路】定义循环整型变量i和双精度型变量sum,并将sum值设置为0.0。

采用for循环语句,循环变量i从7开始依次递增直到其值等于或大于n,在循环体中,如果i除以3和7的得的余数同时为0,则说明这个数能同时被3和7整除,这时把这个数的值乘以1.0转化成实型数据,累加到变量sum上。

退出循环后,调用求平方根的函数sqrt(sum),求得这些数的和的平方根赋给变量sum,把sum的值返回。

【参考答案】inti;doublesum=0.0;/*计算7至n以内能同时被3和7整除的数的和*/for(i=7;in;i+)/循环变量i从7开始,每次循环其值增加1,直到其值小于nif(i%3)=0&(i%7)=0)/如果i能同时被3和7整除sum+=1.0*i;/把i变量实型数值累加到变量sum上sum=sqrt(sum);/调用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1