1、计算机三级网络技术上机题1第1类 按揭偶体系成员筛选并排序 1-20第2类 数位分解后按数筛选并统计 11-22第3类 数位分解后按数筛选及求其平均数 23-26第4类 数位分解并重组后在筛选统计并排序 27-35第5类 根据相邻数大小进行筛选统计并统计 36-39第6类 根据后3位数排序 40-41第7类 数组排列 42-43第8类 迭代算法 44-46第9类 计算素数 47-52第10类 统计个数及求其平均数 53-59第11类 平均值及方差 60-62第12类 整除 63-65第13类 字符串代替 66-75第14类 字符串改写 76 -78第15类 字符串排列 79-84第16类 字符
2、移动 85-89第17类 遍历统计 移动或倒排 90-92第18类 选票问题 93-95第19类 出圈问题 96第20类 97-104第一类 按揭偶体系成员筛选并排序1【解题思路】本题是结构体排序题。结构体是由一系列数据构成的数据集合,可以当做通用的数据类型来处理,如两个结构体之间可以使用等号直接赋值。使用.符号可以直接调用结构体中封装的数据,本题中单价、数量、金额都是数值,可以直接比较,名称和代码则是字符串,需要使用strcmp函数来比较。本题要求进行两重排序,但在使用选择法或冒泡法进行排序时,可以通过适当的判断条件在一次循环中完成两重排序。根据题意,应使用判断语句:if(strcmp(se
3、lli.mc,sellj.mc)0|strcmp(selli.mc,sellj.mc)=0&selli.jesellj.je)【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;j0 |strcmp(selli.mc,sellj.mc)=0&selli.jesellj.je) temp=selli; selli=sellj; sellj=temp; 2【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;jMAX;j+) if
4、(strcmp(selli.mc,sellj.mc)0 |strcmp(selli.mc,sellj.mc)=0&selli.jesellj.je) temp=selli; selli=sellj; sellj=temp; 3【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;j0 |strcmp(selli.dm,sellj.dm)=0&selli.jesellj.je) temp=selli; selli=sellj; sellj=temp; 4【参考答案】void SortDat() int i,j;
5、PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;jMAX;j+) if(selli.jesellj.je |selli.je=sellj.je&strcmp(selli.dm,sellj.dm)0) temp=selli; selli=sellj; sellj=temp; 5【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;jMAX;j+) if(strcmp(selli.mc,sellj.mc)sellj.je) temp=selli; selli=sellj; sellj=
6、temp; 6【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;jMAX;j+) if(selli.je0) temp=selli; selli=sellj; sellj=temp; 7【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;jMAX;j+) if(strcmp(selli.dm,sellj.dm)0 |strcmp(selli.dm,sellj.dm)=0&selli.jesellj.je) temp=sel
7、li; selli=sellj; sellj=temp; 8【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;j0 |strcmp(selli.mc,sellj.mc)=0&selli.jesellj.je|selli.je=sellj.je&strcmp(selli.dm,sellj.dm)0)【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;jsellj.je |selli.je=sellj.je&strcmp(se
8、lli.dm,sellj.dm)sellj.je|selli.je=sellj.je&strcmp(selli.dm,sellj.dm)0)【参考答案】void SortDat() int i,j; PRO temp; for(i=0;iMAX-1;i+) for(j=i+1;jsellj.je |selli.je=sellj.je&strcmp(selli.dm,sellj.dm)0) temp=selli; selli=sellj; sellj=temp; 第二类型数位分解后按数筛选并统计11【解题思路】本题要求将已知数按十进制位拆分后,依照一定的判断条件筛选统计后再按大小进行排序。依照题
9、意,应从数组a中依次取出每一个四位数,按十进制位拆分后,按题干中给出的判断条件(四位数的千位数上的数加个位数上的数等于百位数上的数加十位数上的数,即a4+a1=a3+a2)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。其中,将数按数位拆分可以通过整型变量的除法和取余运算完成:如一个整型变量除以10,相当于该数舍去最右一位,左边的所有位则向右移动一位,除以100则相当于舍去最右两位,除以10的整数次方时,后面有几个0(即是10的多少次方)就是舍去最右几位;一个整型变量除10取余,则相当于保留最右一位舍去左边其他位,除100取余则相当于保留最右
10、两位舍去其他位,依次类推,后面有几个0就是保留最右几位。因此数位拆分可以当做一个舍去两边留下中间一位的过程,以百位数为例,先舍左后舍右就是a3=ai%1000/100,先舍右后舍左则是a3=ai/100%10。最高位和最低位(个位)只有一侧有数字,因此算法可以简化,只需要一次运算即可。【参考答案】void jsValue() int i,j; int a1,a2,a3,a4; int temp; for(i=0;i300;i+) a1=ai%10; a2=ai%100/10; a3=ai%1000/100; a4=ai/1000; if(a4+a1=a3+a2) bcnt+=ai; for(i
11、=0;icnt-1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 12【解题思路】本题要求将已知数按十进制位拆分后,依照一定的判断条件筛选统计后再按大小进行排序。依照题意,应从数组a中依次取出每一个四位数,按十进制位拆分后,按题干中给出的判断条件(四位数各位上的数字均是奇数,即a1%2=1&a2%2=1&a3%2=1&a4%2=1)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。【参考答案】void jsVal() int i,j; int a1,a2,a3,a4; int temp; for(i=0
12、;iMAX;i+) a1=ai%10; a2=ai%100/10; a3=ai%1000/100; a4=ai/1000; if(a1%2=1&a2%2=1&a3%2=1&a4%2=1) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) temp=bi; bi=bj; bj=temp; 13【解题思路】本题要求将已知数按十进制位拆分后,依照一定的判断条件筛选统计后再按大小进行排序。依照题意,应从数组a中依次取出每一个四位数,按十进制位拆分后,按题干中给出的判断条件(四位数的千位数上的数加百位数上的数等于十位数上的数加个位数上的数,
13、即a4+a3=a2+a1)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。【参考答案】jsValue() int i,j; int a1,a2,a3,a4; int temp; for(i=0;i300;i+) a1=ai%10; a2=ai%100/10; a3=ai%1000/100; a4=ai/1000; if(a4+a3=a2+a1) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) temp=bi; bi=bj; bj=temp; 14【解题思路】本题要求将已知的两个
14、两位数依照一定的判断条件筛选后重组成一个新数再按大小进行排序。依照题意,应从数组a和b中分别依次取出每一个两位数,按题干中给出的判断条件(相同下标位置的数必须符合一个是偶数,另一个是奇数,即ai%2=1&bi%2=0|ai%2=0&bi%2=1)筛选后,按题干要求的计算方式(数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,即(ai8)+bi)生成一个新的数存入数组c中,最后用选择法将数组c中的四位数排序。【参考答案】void jsVal() int i,j; int temp; for(i=0;iMAX;i+) if(ai%2=1&bi%2=0|ai%2=0&bi%2=1) ccn
15、t+=(ai8)+bi; for(i=0;icnt-1;i+) for(j=i+1;jcj) temp=ci; ci=cj; cj=temp; 15【解题思路】本题要求将已知数按十进制位拆分后,依照一定的判断条件筛选统计后再按大小进行排序。依照题意,应从数组a中依次取出每一个四位数,按十进制位拆分后,按题干中给出的判断条件(四位数的千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零,即a4-a3-a2-a10)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。【参考答案】void jsValue() int i,j; int a1,a
16、2,a3,a4; int temp; for(i=0;i0) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 16【解题思路】本题要求在所有的四位素数中按十进制位拆分后依照一定的判断条件筛选后统计求和。依照题意,应该逐个处理每一个四位数,将其按十进制位拆分后,选出既是素数又符合题干中给出的判断条件(千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的正10倍,即a4+a3=a2+a1&a4+a3=(a1-a4)*10)的数,统计个数并求和。检验一个数是否是
17、素数时,可用从2开始并小于目标数的自然数依次去除目标数,若余数为0则跳出循环,若余数皆不为0,则说明目标数是素数。【参考答案】void countValue() int i,j; int a1,a2,a3,a4; for(i=1000;i=9999;i+) a1=i%10; a2=i%100/10; a3=i%1000/100; a4=i/1000; for(j=2;ji;j+) if(i%j=0) break; if(j=i&a4+a3=a2+a1&a4+a3=(a1-a4)*10) cnt+; sum+=i; 17【解题思路】本题要求将已知数按十进制位拆分后,依照一定的判断条件筛选统计后再
18、按大小进行排序。依照题意,应从数组a中依次取出每一个四位数,按十进制位拆分后,按题干中给出的判断条件(四位数各位上的数字均为0或2或4或6或8中的一个数字,可以等效为各位上的数字均为偶数,即a1%2=0&a2%2=0&a3%2=0&a4%2=0)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。【参考答案】void jsVal() int i,j; int a1,a2,a3,a4; int temp; for(i=0;iMAX;i+) a1=ai%10; a2=ai%100/10; a3=ai%1000/100; a4=ai/1000; if(
19、a1%2=0&a2%2=0&a3%2=0&a4%2=0) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bi0)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。【参考答案】void jsValue() int i,j; int a1,a2,a3,a4; int temp; for(i=0;i0) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bi=0&ai%2=1)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后
20、用选择法将数组b中的四位数排序。【参考答案】void jsVal() int i,j; int a1,a2,a3,a4; int temp; for(i=0;i=0&ai%2=1) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 20【解题思路】本题要求将已知数按十进制位拆分后,依照一定的判断条件筛选统计后再按大小进行排序。依照题意,应从数组a中依次取出每一个四位数,按十进制位拆分后,按题干中给出的判断条件(四位数的千位数位置上的值大于等于百位数位置上的值,百位数位置上的值大于等于十位数位置上的值,以及十
21、位数位置上的值大于等于个位数位置上的值,并且原四位数是奇数,即a4=a3&a3=a2&a2=a1&ai%2=1)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。【参考答案】void jsVal() int i,j; int a1,a2,a3,a4; int temp; for(i=0;i=a3&a3=a2&a2=a1&ai%2=1) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 21【解题思路】本题要求将已知数按十进制位拆分后,依照一定的判断条件筛选统
22、计后再按大小进行排序。依照题意,应从数组a中依次取出每一个四位数,按十进制位拆分后,按题干中给出的判断条件(四位数的千位数位置上的值加上个位数位置上的值恰好等于百位数位置上的值加上十位数位置上的值,并且原四位数是奇数,即a4+a1=a3+a2&ai%2=1)筛选后,符合条件的四位数存入数组b中,同时计数器变量cnt加1,最后用选择法将数组b中的四位数排序。【参考答案】void jsVal() int i,j; int a1,a2,a3,a4; int temp; for(i=0;iMAX;i+) a1=ai%10; a2=ai%100/10; a3=ai%1000/100; a4=ai/1000; if(a4+a1=a3+a2&ai%2=1) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 22【解题
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1