计算机三级 上机题.docx
- 文档编号:26000939
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:46
- 大小:27.76KB
计算机三级 上机题.docx
《计算机三级 上机题.docx》由会员分享,可在线阅读,更多相关《计算机三级 上机题.docx(46页珍藏版)》请在冰豆网上搜索。
计算机三级上机题
9.找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。
inti;
for(i=2;i<90;i++)
if(isPrime(i)&&isPrime(i+4)&&isPrime(i+10))
{
sum+=i;
cnt++;
}
29.计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数...的值sum。
intj,f=1;
intx;
for(x=800;x>=500;x--)
{
for(j=2;j { if(x%j==0) break; } if(j==x) { cnt++; sum+=x*f; f=-f; } } 62.选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。 计算并输出上述这些素数的个数cnt以及这些素数值的和sum。 inti,g,s,b; for(i=100;i<1000;i++) if(isPrime(i)) { g=i%10; s=i/10%10; b=i/100; if((g+s)%10==b) { cnt++; sum+=i; } } 5.已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。 其中: 金额=单价*数量计算得出。 函数ReadDat()是读取这100个销售记录并存入结构数组sell中。 请编制函数SortDat(),其功能要求: 按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列, inti,j; PROt; for(i=0;i<100;i++) for(j=i+1;j<100;j++) if(sell[i].je { t=sell[i]; sell[i]=sell[j]; sell[j]=t; } elseif(sell[i].je==sell[j].je&&strcmp(sell[i].dm,sell[j].dm)<0) { t=sell[i]; sell[i]=sell[j]; sell[j]=t; } } 54.按产品代码从小到大进行排列,若产品代码相等,则按金额从小到大进行排列。 if(strcmp(sell[i].dm,sell[j].dm)>0) elseif(strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je>sell[j].je) 16.已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是: 求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到out.dat文件。 例如: 6712,6+2=7+1,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。 8129,8+9<>1+2,则该数不满足条件计算平均值pjz2。 inti,q,b,g,s; for(i=0;i<300;i++) { q=a[i]/1000; b=a[i]/100%10; s=a[i]/10%10; g=a[i]%10; if(q+g==b+s) { cnt++; pjz1+=a[i]; } else { pjz2+=a[i]; } } pjz1=pjz1/cnt; pjz2=pjz2/(300-cnt); 22.求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序, inti,j,g,s,bb,q,t; for(i=0;i<300;i++) { q=a[i]/1000; bb=a[i]/100%10; s=a[i]/10%10; g=a[i]%10; if(g-s-bb-q>0) { b[cnt++]=a[i]; } } for(i=0;i for(j=i+1;j if(b[i] { t=b[i]; b[i]=b[j]; b[j]=t; } 30. inti,g,s,b,q; for(i=1000;i<5000;i++) { q=i/1000; b=i/100%10; s=i/10%10; g=i%10; if(q+b==g+s&&q+b==10*(g-q)) { cnt++; sum+=i; } } 72.数组a存有200个四位数: 如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。 inti,j,g,s,bb,q,t; for(i=0;i<200;i++) { q=a[i]/1000; bb=a[i]/100%10; s=a[i]/10%10; g=a[i]%10; if(q%2==0&&bb%2==0&&s%2==0&&g%2==0) { b[cnt++]=a[i]; } } for(i=0;i for(j=i+1;j if(b[i] { t=b[i]; b[i]=b[j]; b[j]=t; } 98.在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。 函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是: 要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到文件out.dat中。 inti,n=0,j; datat; for(i=0;i<200;i++) { if(aa[i].x1>aa[i].x2+aa[i].x3) bb[n++]=aa[i]; } for(i=0;i for(j=i+1;j if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) { t=bb[i]; bb[i]=bb[j]; bb[j]=t; } returnn; 56.要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中, { inti,j,n=0; datat; for(i=0;i<200;i++) if(aa[i].x2>aa[i].x1+aa[i].x3) { bb[n++]=aa[i]; } for(i=0;i for(j=i+1;j if(bb[i].x2+bb[i].x3 { t=bb[i]; bb[i]=bb[j]; bb[j]=t; } returnn; } 23.已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。 请编制函数CalValue(),其功能要求: 1、求出这文件中共有多少个正整数totNum;2、求这些正整数右移1位二进制位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些正整数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。 inti; for(i=0;i<200;i++) { if(xx[i]>0) { totNum++; if((xx[i]>>1)%2==0) { totCnt++; totPjz+=xx[i]; } } } totPjz=totPjz/totCnt; 34.求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数,其结果以从小到大的顺序放在数组a中,并通过形式参数n传递这些数的个数。 inti,cnt=0; for(i=1;i<1000;i++) { if(i%7==0&&i%11! =0||i%7! =0&&i%11==0) a[cnt++]=i; } *n=cnt; 26.请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为奇数的元素值的算术平均值pj(保留2位小数)。 read_dat(xx); sum=cnt1=cnt2=n=0; for(m=0;m<200;m++) { if(xx[m]%2) cnt1++; else cnt2++; if(m%2) { n++; sum+=xx[m]; } } pj=1.0*sum/n; 32.奇数个数,偶数个数,xx下标为偶数的元素值的算术平均数 cnt1=cnt2=sum=pj=0; for(i=0;i<200;i++) { if(xx[i]%2==1) cnt1++; else cnt2++; if(i%2==0) { pj+=xx[i]; sum++; } } pj/=sum; 21.in.dat中存有300个四位数: 求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序, inti,j,t; for(i=0;i<300;i++) { if(isP(a[i])) { b[cnt++]=a[i]; } } for(i=0;i for(j=i+1;j if(b[i]>b[j]) { t=b[i]; b[i]=b[j]; b[j]=t; } 35.请编制程序prog1.c,从文件IN.DAT中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的所有整数的算术平均值pj(保留2位小数)。 pj=0; n=cnt=0; max=xx[0]; for(m=1;m<200;m++) { if(max max=xx[m]; } for(m=0;m<200;m++) { if(max==xx[m]) cnt++; if(xx[m]%7==0||xx[m]%3==0) { pj+=xx[m]; n++; } } pj/=n; 74.把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中, inti,g,s,bb,q,j,t; for(i=0;i<200;i++) { q=a[i]/1000; bb=a[i]/100%10; s=a[i]/10%10; g=a[i]%10; if(q-bb-s-g>=0&&a[i]%2==1) { b[cnt++]=a[i]; } } for(i=0;i for(j=i+1;j { if(b[i]>b[j]) { t=b[i]; b[i]=b[j]; b[j]=t; } } 76.IN.DAT中存有200个四位数: 把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中。 inti,j,t,g,s,bb,q; for(i=0;i<200;i++) { q=a[i]/1000; bb=a[i]/100%10; s=a[i]/10%10; g=a[i]%10; if((q+g==bb+s)&&a[i]%2==1) { b[cnt++]=a[i]; } } for(i=0;i for(j=i+1;j { if(b[i]>b[j]) { t=b[i]; b[i]=b[j]; b[j]=t; } } 63.IN.DAT中存有200个四位数: 把千位数字和十位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。 inti,g,s,bb,q,ab,cd,j,k,t; for(i=0;i<200;i++) { q=a[i]/1000; bb=a[i]/100%10; s=a[i]/10%10; g=a[i]%10; ab=q*10+s; cd=g*10+bb; for(j=2;j if(ab%j==0) break; for(k=2;k if(cd%k==0) break; if(j==ab&&k==cd&&ab>=10&&cd>=10) b[cnt++]=a[i]; } for(i=0;i for(j=i+1;j if(b[i] { t=b[i]; b[i]=b[j]; b[j]=t; } 86.数组a和b中分别存有100个两位十进制数: 依次对数组a和b中的数按条件重新组成一个新数并依次存入数组c中,再对数组c中的数按从小到大的顺序进行排序。 组成新数的条件: 如果数组a和b中相同下标位置的数均是奇数,则数组a中十位数字为新数的千位数字,个位数字仍为新数的个位数字,数组b中的十位数字为新的百位数字,个位数字为新的十位数字,这样组成的新数并存入数组c中。 inti,as,ag,bs,bg,j,t; for(i=0;i<100;i++) { if(a[i]%2&&b[i]%2) { as=a[i]/10; ag=a[i]%10; bs=b[i]/10; bg=b[i]%10; c[cnt++]=as*1000+ag+bs*100+bg*10; } } for(i=0;i for(j=i+1;j if(c[i]>c[j]) { t=c[i]; c[i]=c[j]; c[j]=t; } 88.依次对数组a和b中的数按条件重新组成一个新数并依次存入数组c中,再对数组c中的数按从小到大的顺序进行排序,最后调用输出函数writeDat()把结果c输出到文件out.dat中。 组成新数的条件: 如果数组a和b中相同下标位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组c中。 inti,j,t; for(i=0;i<100;i++) { if(a[i]%2==0&&b[i]%2==1||a[i]%2==1&&b[i]%2==0) { c[cnt++]=(a[i]<<8)+b[i]; } } for(i=0;i for(j=i+1;j { if(c[i]>c[j]) { t=c[i]; c[i]=c[j]; c[j]=t; } } 64.把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的个位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。 inti,g,s,bb,q,j,ab,cd,t; for(i=0;i<200;i++) { q=a[i]/1000; bb=a[i]/100%10; s=a[i]/10%10; g=a[i]%10; ab=q*10+g; cd=bb*10+s; if((ab%2&&cd%2)&&(ab%5==0||cd%5==0)&&(ab>=10&&cd>=10)) b[cnt++]=a[i]; } for(i=0;i for(j=i+1;j { if(b[i] { t=b[i]; b[i]=b[j]; b[j]=t; } } 20.算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。 设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。 inti,y[1000]; for(i=0;i<1000;i++) { if(xx[i]%2==1) { ave1+=xx[i]; y[odd++]=xx[i]; } else ave2+=xx[i]; } if(odd! =0) ave1=ave1/odd; if(odd! =1000) ave2=ave2/(1000-odd); for(i=0;i totfc+=(y[i]-ave1)*(y[i]-ave1)/odd; 38.请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。 计算方差的公式如下: 原始数据文件存放的格式是: 每行存放10个数,并用逗号隔开。 (每个数均大于0且小于等于2000) for(i=0;i<1000;i++) { fscanf(fp,"%d,",&xx[i]); if((i+1)%10==0) fscanf(fp,"\n"); } voidCompute(void) { inti; for(i=0;i<1000;i++) { if(xx[i]%2==1) odd++; else even++; aver+=xx[i]; } aver=aver/1000; for(i=0;i<1000;i++) totfc+=(xx[i]-aver)*(xx[i]-aver)/1000; } 40.请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值原始数据文件存放的格式是: 每行存放10个数,并用逗号隔开。 (每个数均大于0且小于等于2000) if((fp=fopen("IN.DAT","r"))==NULL)return1; for(i=0;i<1000;i++) { fscanf(fp,"%d,",&xx[i]); if((i+1)%10==0) fscanf(fp,"\n"); } voidCompute(void) { inti,y[1000]; for(i=0;i<1000;i++) { if(xx[i]%2==0) { y[even++]=xx[i]; ave2+=xx[i]; } else ave1+=xx[i]; } if(even! =0&&even! =1000) ave1=ave1/(1000-even); ave2=ave2/even; for(i=0;i totfc+=(y[i]-ave2)*(y[i]-ave2)/even; } fclose(fp); return0; 80.a中存有200个四位数: 依次从数组a中取出一个四位数,如果该四位数大于该四位数以后的连续五个数且该数是奇数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机三级 上机题 计算机 三级 上机