1、计算机三级网络技术编程题集doc一、按结构体成员筛选并排序已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。void SortDat( ) int i, j;PRO
2、 temp;for(i=0;i99;i+) for(j=i+1;j0) temp=selli; selli=sellj; sellj=temp;else if(strcmp(selli.mc,sellj.mc)= =0) if(selli.jesellj.je) temp=selli; selli=sellj; 二、数位分解后按数筛选统计并排序1、已知数据文件IN.DAT中存有300个4位数,并已调用读函数readDat( )把这些数存入数组a中。请编制函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的4位数依次存入
3、数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT.DAT文件中。void jsValue( )int i, j;int a1,a2,a3,a4;int temp;for(i=0;i300;i+) a4=ai/1000; a3=ai%1000/100; a2=ai%100/10; a1=ai%10; if (a4+a1= =a3+a2) bcnt=ai; cnt+; for(i=0;icnt-1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 2、已知数据文件IN.DAT中存有200个4位
4、数,并已调用读函数readDat( )把这些数存入数组a中。请编制一函数jsVal(),其功能是:如果4位数各位上的数字均是奇数,则统计出满足此条件的个数cnt,并把这些4位数按从大到小的顺序存入数组b中。最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT.DAT文件中。void jsVal( )int i, j;int a1,a2,a3,a4;int temp;for(i=0;i200;i+) a4=ai/1000; a3=ai%1000/100; a2=ai%100/10; a1=ai%10; if(a4%2!=0&a3%2!=0&a2%2!=0&a1%2
5、!=0) bcnt=ai; cnt+; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) temp=bi; bi=bj; bj=temp; 3、已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat( )把这两个文件中的数存入数组a和b中。请编制一函数jsVal(),实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数c中,再对数组c中的数按从小到大的顺序进行排序,最后调用输出函数writeDat()把结果c输出到OUT.DAT文件中。组成新数的条件:如果数组a和b中相同下标位置的数必
6、须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组c中。void jsVal( )int i, j;int temp;for(i=0;i=MAX-1;i+) if(ai%2= =0)&(bi%2!=0)(ai%2!=0&(bi%2= =0) ci=(ai8)+bi; cnt+; for(i=0;iMAX-1;i+) for(j=0;jcj+1) temp=cj; cj=cj+1; 4、下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于数位数字与各位数字之和,且千位数字与百位数字之和等于个
7、位数字与千位数字之差的10倍。计算并输出这些4位自然数的个数cnt及这些数的和sum.请编写函数countValue( )实现程序的要求,最后调用函数writeDat()把结果cnt和sum输出到OUT.DAT文件中。void countValue( )int i;int a1,a2,a3,a4;for(i=5000;i=1000;i- -) a4=i/1000; a3=i%1000/100; a2=i%100/10; a1=i%10; if(a4+a3= =a2+a1&a4+a3= =(a1-a4)*10) cnt+; sum+=I; 5、已知数据文件IN.DAT中存有200个4位数,并已调
8、用读函数readDat( )把这些数存入数组a中。请编制一函数jsVal(),其功能是:把一个4位数的千位数上的值减百位数上的值再减十位数上的值最后减个位数上的值,如果得出的值大于等于零且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些数存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT.DAT文件中。void jsVal( )int i, j;int a1,a2,a3,a4;int temp;for(i=0;i=0)&ai%2!=0) bcnt=ai; cnt+; for(i=0;icnt-
9、1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 三、数位分解后按数筛选及求平均值已知数据文件IN.DAT中存有300个4位数,并已调用读函数readDat( )把这些数存入数组a中。请编制函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到OUT.DAT文件中。例如:7153,7+1=5+3,则该数满足条件,计算平均值pjz1,且个数c
10、nt=cnt+1。8129,8+12+9,则该数不满足条件,计算平均值pjz2。void jsValue( ) int i, n=0; int a1,a2,a3,a4; for(i=0;i=0且ab-cd=10且两个数均是奇数,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT.DAT文件中。void jsVal( )int i, j;int a1,a2,a3,a4;int temp;int ab,cd; for(i=0;i=0&(ab-cd
11、)=10&ab%2= =1&cd%2= =1&a4!=0&a1!=0) bcnt=ai; cnt+; for(i=0;icnt-1;i+)for(j=i+1;jcnt;j+) if(bibj) temp=bi; bi=bj; bj=temp; 2、已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat( )把这两个文件中的数存入数组a和b中。请编制一函数jsVal(),实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数c中,再对数组c中的数按从小到大的顺序进行排序,最后调用输出函数writeDat()把结果c输出到OUT.DA
12、T文件中。组成新数的条件:如果数组a和b中相同下标位置的数均是奇数,则数组a中十位数字为新数的千位数字,个位数字仍未新数的个位数字,数组b中的十位数字为新的百位数字,个位数字为新的十位数字,这样组成的新数并存入数组c中。例如:a:12 31 24 15 21 15 b:32 45 17 27 18 15 c:3451 1275 1155 排序后c;1155 1275 3451void jsVal( )int i, j;int temp;for(i=0;i=MAX-1;i+) if(ai%2!=0)&(bi%2!=0) ci=(ai/10)*1000+(bi/10)*100+(bi%10)*10
13、+(ai%10); cnt+; for(i=0;iMAX-1;i+) for(j=0;jcj+1) temp=cj; cj=cj+1; cj+1=temp; 五、根据相邻数大小进行筛选统计并排序已知数据文件IN.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中。请编制一函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续小于该4位数以后的5个数且该数是偶数(该4位数以后不满5个数,则不统计),则统计出满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用函数writeDat()把结果cnt及数组b中符合条件的4位
14、数输出到OUT.DAT文件中。void jsVal( )int i, j;int temp;for(i=0;i=MAX-5;i+) if(aiai+1&aiai+2&aiai+3&aiai+4&aiai+5&ai%2= =0) bcnt=ai; cnt+;for(i=0;icnt-1;i+) for(j=i+1;jbj) temp=bi; bi=bj; bj=temp; 六、根据后3位数排序在文件IN.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat( )的功能是读取这200个数存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按每个数的后3位的
15、大小进行降序排列,将排序后的前10个数存入数组bb中,如果出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到OUT.DAT文件中。void jsSort( )int i, j;int temp;for(i=0;i199;i+) for(j=i+1;j200;j+) if(aai%1000aaj; temp=aai; aai=aaj; aaj=temp; for(i=0;i10;i+) bbi=aai; 七、数组排序问题在文件IN.DAT中有200组数据,每组有3个数,每个数均是3位数。函数readDat( )是读取这200组数据存放到结构
16、数组aa中。请编制函数jsSort(),该函数的功能是:要求在200组数据中找出条件为每组数据中的第二个数大于第一个数加第三个数之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对结构数组bb中的数据按照每组数据的第二个数加第三个数之和的大小进行降序排列,排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到OUT.DAT文件中。void jsSort( )int i, j;int cnt=0;Data temp;for(i=0;iaai.x1+aai.x3) bbcnt=aai; cnt+; for(i=0;i
17、cnt-1;i+) for(j=i+1;jcnt;j+) if(bbi.x2+bbi.x3bbj.x2+bbj.x3) temp=bbi; bbi=bbj; bbj=temp; return cnt; 八、迭代算法1、下列程序的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:(1)取x1初值为0.0(2)x0=x1,把x1的值赋给x0(3)x1=cos(x0),求出一个新的x1(4)若x0-x1得绝对值小于0.000001,执行步骤(5),否则执行步骤(2)(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回请编写函
18、数countValue( )实现程序要求,最后调用函数writeDat()把结果输出到OUT.DAT文件中。float countValue( ) float x0,x1=0.0; while(1) x0=x1; x1=cos(x0); if(fabs(x0-x1)1e-6) break; return x1; 2、编写函数jsValue( ),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)最后调用函数writeDat()把结果输出到OUT.DAT文件中。例如:
19、当t=1000时,函数值为1597。int jsValue(int t) int f1=0,f2=1,fn;fn=f1+f2;while(fn=t) f1=f2; f2=fn; fn=f1+f2;return fn; 3、某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:SnM,且Sn+1M,这里Sn=A1+A2+An,并依次把n值存入数组单元b0,b1,b2中,请编写函数jsValue( )来实现此功能,最后调用函数writeDat()把数组b的值输出到OUT.DAT文
20、件中。void jsValue( ) int n=1; int a1=1,a2=1,an; int sum0,sum; sum0=a1+a2; while(1) an=a1+a2*2; sum=sum0+an; a1=a2; a2=an; n+; if(sum0=100) b0=n; if(sum0=1000) b1=n; if(sum0=10000) b2=n; break; sum0=sum; 九、计算素数1、下列程序的功能是:选出1001000之间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt,以及这些素数值的和sum。请编
21、写函数countValue( )实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到OUT.DAT文件中。void countValue( ) int i,j; int a3,a2,a1; int half; for(i=101;i1000;i+) a3=i/100; a2=i%100/10;a1=i%10;if(a3= =(a2+a1)%10) half=i/2; for(j=2;jhalf) cnt+; sum+=i; 2、下列程序的功能是:计算500800之间的素数的个数cnt,并按所求素数的值从大到小排序,在计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数
22、-第4个素数+第5个素数的值sum。请编写函数countValue( )实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到OUT.DAT文件中。void countValue( ) int i,j;int half;int xx100;for(i=800;i500;i- -) half=i/2; for(j=2;j=half) xxcnt=i; cnt+; for(i=0,j=-1;icnt;i+) j*=-1; sum+=j*xxi; 3、下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx中。请编写函数num(int m,int k,int xx )实现程序要
23、求,最后调用函数readwriteDAT()把结果输出到OUT.DAT文件中。例如:若输入17,5,则应输出19,23,29,31,37void num(int m,int k,int xx) int i,half,cnt=0; int data=m+1; while(1) half=data/2; for(i=2;ihalf) xxcnt=data; cnt+; if(cnt=k) break; data+; 4、已知数据文件IN.DAT中存有300个4位数,并已调用读函数readDat( )把这些数存入数组a中。请编制一函数jsValue(),其功能是:求出这些4位数是素数的个数cnt,再
24、求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2, 最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到OUT.DAT文件中。例如:5591是素数,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+19812是非素数,则该数不满足条件,计算平均值pjz2。void jsValue( ) int i,n=0; for(i=0;i300;i+) if(isP(ai) pjz1+=ai; cnt+; else pjz2+=ai; n+; pjz1/=cnt;pjz2/=n; 5、下列程序的功能是:找出所有100以内(含100)满足I,
25、I+4,I+10都是素数的整数I(I+10也是在100以内)的个数cnt,以及这些I之和sum。请编写函数countValue( )实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到OUT.DAT文件中。(数值I不是素数)void countValue( ) int i; cnt=0; sum=0; for(i=2;i90;i+) if(isPrime(i)&isPrime(i+4)&isPrime(i+10) cnt+; sum+=i; 十、统计个数及求平均值1、已知在文件IN.DAT中存有若干个数(个数200)4位数字的正整数,函数readDat( )的功能是读取这若干个正整数并存放到数组xx中。请编制函数CalValue(),其功能要求:(1)求出该文件中共有多少个正整数totNum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值to
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1