版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家三级(网络技术)机试模拟试卷6(共9套)(共9题)国家三级(网络技术)机试模拟试卷第1套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第8行进行修改即可。国家三级(网络技术)机试模拟试卷第2套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中;金额=单价*数量计算得出。函数ReadData()是读取这100个销售记录并存人结构数组sell中。请编制函数SortData(),其功能要求;按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteData()把结果输出到文件OUT2.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读数据函数ReadData()和输出数据函数writeData()的内容。试题程序;#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];//产品代码charmc[11];//产品名称intdj;//单价intsl;//数量longje;//金额)PRO;PROsell[MAX];voidReadData();voidWriteData();voidSortData(){}voidmain(){memset(sell,0,sizeof(sell));ReadData();SortData();WriteData();}voidReadData(){FILE*fp;charstr[80],ch[11];intl;fp=fopen("IN.DAT","r");for(i=0;i标准答案:voidSortData(){inti,j;PR0xy;for(i=0;isell[j].je//in果产品i的金额大于产品j的金额||(sell[i].je==sell[j].je//如果产品i的金额等于产品j的金额&&strcmp(sell[i].dm,sell[j].dm)<0))//如果产品i的产品代码小于产品j的产品代码{memcpy(&xy,&sell[i],sizeof(xy));memcpy(&sell[i],&sell[j],sizeof(xy));memcpy(&sell[j],&temp,sizeof(temp));}//产品i和产品j交换}知识点解析:本题主要考查数组的排序操作。算法思路;1.i结点与后面的所有j结点比较,若符合条件则交换i、j结点位置。2.然后后移i结点,执行步骤1直到i结点是倒数第二结点为止。国家三级(网络技术)机试模拟试卷第3套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知在文件IN42.DAT中存有N个实数(N<200),函数ReadDat()读取这N个实数并存入数组xx中。请编制程序Ca1Value(),其功能要求:(1)求出这N个实数的平均值aver。(2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出到文件OUT42.DAT中。注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:#include<stdio.h>#include<conio.h>#defineMAXNUM200floatxx[MAXNUM];intN=0;doubleaver=0.0;doublesumint=0.0;doublesumdec=0.0;intReadDat();voidWriteDat();voidCalValue(){}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN42.DAT不能打开!\007\n");return;}CalValue();printf("文件IN42.DAT中共有实数%d个\n",N);printf("平均值=%.21f\n",aver);printf("整数部分之和=%.21f\n",sumint);printf("小数部分之和=%.21f\n",sumdec);WriteDat();}intReadDat(){FILE*fp;intj;if((fp=fopen("in42.dat","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%f",&xx[N]);if(xx[N]>0.001)N++;}fclose(fp);return0;}voidWriteDat(){FILE*fp;fp=fopen("OUT42.DAT","w");fprintf(fp,"%dkn%.21f\n%.21f\n%.21f\n",N,aver,sumint,sumdec);fclose(fp);}标准答案:voidCalValue(){inti;doublex,sum=0.0;for(i=0;i<N;i++){sumint=sumint+(int)xx[i];/*求整数部分之和*/x=xx[i]-(int)xx[i];/*求每个数的小数部分*/sumdec=sumdec+x;/*求小数部分之和*/sum=sum+xx[i];/*求N个数之和*/}aver=sum/N;/*求N个数的平均数*/}知识点解析:本题考查的知识点如下;(1)循环结构的使用。(2)强制类型转换。将一个实数的整数部分和小数部分分开,这里使用的方法是强制类型转换法。强制类型转换是按照要求将表达式的值转换成指定的类型。将一个实数强制转换成整型数之后,其小数部分被去掉(不是四舍五入,而是直接删除)。对数组中的200个实数求和及平均值,可以使用循环结构。国家三级(网络技术)机试模拟试卷第4套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存有200个销售记录,每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中;金额=单价×数量,函数ReadData()负责将IN.DAT中的数据读到结构数组sell[]中。请编制函数sortData(),将各个记录按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,并将排列后的结果存放到sell[]中。函数WriteData()负责将sell[]中的数据输出到文件OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#include#include#defineMAX200typedefstruct{charID[5];//产品代码charname[11];//产品名称intprice;//单价intamount;//数量longvalue//金额}PRODUCT;PRODUCTsell[MAX];voidReadData();voidWriteData();voidsortData(){}voidReadData(){FILE*fp;charstr[80],chi[11];inti;fp=fopen("IN.DAT","r");for(i;0;i标准答案:voidsortData(){PRODUCTtemp;inti,j;memset(&.temp,0,sizeof(temp));for(i=0;isell[j].value||(sell[i].value==sell[i].value&&strcmp(sell[i].ID,sell[j].ID)<0)){memcpy(&.temp,&sell[i],sizeof(temp));//将以&sell[i]为起始地址大小为sizeof(temp)的内存中的内容复制到以&temp为起始地址的内存中*/memcpy(&.sell[i],&sell[j],sizeof(temp));memcpy(&.sell[j],&.temp,sizeof(temp));}}知识点解析:本题主要考查结构数组排序的问题。所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。但是由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,用到内存拷贝函数来对内存的内容整体进行操作。国家三级(网络技术)机试模拟试卷第5套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义循环变量i,然后通过for循环对数组a[300]中的每个元素a[i]调用函数isP(a[i])判断a[i]是否是素数(素数的算法已在isP()函数中给出,此处直接调用即可),如果是素数,则把其加到变量pjz1上,同时计数变量cnt加1,否则a[i]值加到变量pjz2上。直到判断完数组a[300]中的所有数据后退出循环。②求出pjz1、pjz2和cnt的值之后,再用变量pjz1的值除以cnt的值就得到素数的平均值,同时把这个值赋给变量pjz1,最后用变量pjz2的值除以300-cnt的值就得到非素数的平均值,并把这个值赋给变量pjz2。国家三级(网络技术)机试模拟试卷第6套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①首先定义一个循环变量循环i和用于正负号转换的变量.j,同时赋j的初值为-1。②通过for循环对800到500的每个数字进行逐个的扫描,指定循环变量i的初值为800,当i值等于500停止循环,每执行一次循环,i的值便减1。(注意,本题for循环从大到小依次读取数据是根据题目要求设计的,这样得到的素数值其排序方式就是从大到小排序。)③在每次执行for循环时,都调用素数判断函数isPrime()判断当前的i值是否为素数,如果是素数,则素数计数变量cnt值加1,正负号转换变量j的值乘以-1,实现正负数的交替转换,最后将每次循环得到的i*j的值累加到求和变量sum中。国家三级(网络技术)机试模拟试卷第7套一、程序设计题(本题共1题,每题1.0分,共1分。)1、已知数据文件in81.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out81.dat文件。例如:7153,7+1=5+3,则该数满足条件,计算严均值pjz1,且个数cnt=cnt+1。8129,8+1≠2+9,则该数不满足条件计算平均值pjz2。注意:部分源程序已给出。程序中己定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include<stdio.h>inta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n满足条件的平均值pjz1=%7.21f\n不满足条件的平均值pjz2=%7.21f\n",cnt,pjz1,pjz2);}readDat(){FILE*fp;inti;fp=fopen("in81.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out81.dat","w");fprintf(fp,"%d\n%7.21f\n%7.21f\n",cnt,pjz1,pjz2);fclose(fp)}标准答案:voidjsValue(){inti,thou,hun,ten,data,n=0;for(i=0;i<300;i++){thou=a[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字*/ten=a[i]%100/10;/*求四位数的十位数字*/data=a[i]%10;/*求四位数的个位数字*/if(thou+hun==ten+data)/*如果千位数加百位数等于十位数加个位数*/{cnt++;/*统计满足条件的数求和*/pjz1+=a[i];/*将满足条件的数求和*/}else{n++;/*否则统计不满足条件的数的个数*/pjz2+=a[i];/*将不满足条件的数求和*/}}pjz1/=cnt;/*求满足条件的数的平均值*/pjz2/=n;/*求不满足条件的数平均值*/}知识点解析:本题考查的知识点如下:(1)特殊运算符“%”及“/”的使用。(2)循环结构及选择结构的使用。在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”——取余和“/”——整除,拆分方法略。然后判断“千位数+百位数=十位数+个位数”。依次求得符合条件的数的个数及其平均值。国家三级(网络技术)机试模拟试卷第8套一、程序设计题(本题共1题,每题1.0分,共1分。)1、标准答案:知识点解析:①定义循环整型变量i和双精度型变量sum,并将sum值设置为0.0。②采用for循环语句,循环变量i从7开始依次递增直到其值等于或大于n,在循环体中,如果i除以3和7的得的余数同时为0,则说明这个数能同时被3和7整除,这时把这个数的值乘以1.0转化成实型数据,累加到变量sum上。③退出循环后,调用求平方根的函数sqrt(sum),求得这些数的和的平方根赋给变量sum,把sum的值返回。国家三级(网络技术)机试模拟试卷第9套一、程序设计题(本题共1题,每题1.0分,共1分。)1、文件IN.DAT中存放有100条对10个候选人进行选举的记录,数存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票。函数ReadData()负责将IN.DAT中的内容读人数组inBuf[]中。请编制函数calculate()来统计每个人的选票数并把得票数依次存人outBuf[0]outBuf[9]中,最后写函数WriteData()把结果outBuf[]输出到文件0UT.DAT中。注意;部分源程序已给出。请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。试题程序;#include#include#defineLINE100#defineCOL10#def
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训机构提升教学质量与形象方案
- 吉林大学《模拟电子技术基础》2021-2022学年期末试卷
- 2024航次租船合同范文
- 国企财务透明化工作制度
- 2024年高考生物复习专题生物技术实践含解析
- 2024-2025学年高中物理第七章机械能守恒定律6实验:探究功与速度变化的关系教案新人教版必修2
- 2024-2025学年高中历史第二单元资本主义世界的市场的形成和发展2.8第二次工业革命课时分层作业含解析新人教版必修2
- 2024年公司股票场外质押业务手册
- 食品安全技术推广方案
- 物理化学(生物工程)学习通超星期末考试答案章节答案2024年
- 2023年资产负债表模板
- 初三化学上学期氧气-课件
- 浙江省杭州市保俶塔教育集团2023-2024学年八年级上学期期中科学试卷
- 主题班会-团结友爱
- 1~2岁儿童动作发展与训练-精细动作
- 10kV隔离开关技术规范书
- 方城县城市运行管理服务平台(智慧城管)项目方案汇报
- 第四课探索认识的奥秘高中政治统编版必修四
- 石油炼化厂项目保险建议书课件
- 吸附式空气干燥机操作规程
- 《中国餐桌礼仪》(说课稿)-小学生主题班会通用版
评论
0/150
提交评论