3级上机题库.docx

上传人:b****4 文档编号:26942849 上传时间:2023-06-24 格式:DOCX 页数:151 大小:2.88MB
下载 相关 举报
3级上机题库.docx_第1页
第1页 / 共151页
3级上机题库.docx_第2页
第2页 / 共151页
3级上机题库.docx_第3页
第3页 / 共151页
3级上机题库.docx_第4页
第4页 / 共151页
3级上机题库.docx_第5页
第5页 / 共151页
点击查看更多>>
下载资源
资源描述

3级上机题库.docx

《3级上机题库.docx》由会员分享,可在线阅读,更多相关《3级上机题库.docx(151页珍藏版)》请在冰豆网上搜索。

3级上机题库.docx

3级上机题库

第1套上机考试试题

  已知数据文件IN.dat中存有200个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数spellNum(),其功能足:

把千位数字和十位数字重新组成一个新的二位数ab(新二位数的十位数字是原四位数的千位数宁,新二位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的二位数cd(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的丙位数字),如果ab

最后main()函数调用写函数Wdata(),把结果count以及数组b中符合条件的四位数输出到OUT.dat

  注意:

部分源程序已经给出。

程序中已定义数组:

a[200],b[200];已定义变量count。

请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数Rdata()和写函数Wdata()的内容。

  

第1套试题答案及详解

  【审题分析】分析题目可知,本题只要实现spellNum()函数的功能即可。

spellNum()要实现的功能是:

  将个位数的每位拆分成单个数字,然后将这4个数字组合成两个二位数ab和cd。

如果ab

因此解答本题的关键在于如何将一个四位数拆分成单个数字,如何将两个数字组合成一个二位数,以及判断二位数的奇偶性。

  【解题思路】对于每一个四位数,用这个四位数除以1000,可得到这个四位数千位卜的数字输给变量thou:

这个四位数对1000求余然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余然后再除以10,可得到这个四位数的十位上的数字输给变量ten;这个四位数对10求余,可得到这个四位数个位上的数字输给变量data。

  因为thou和hun作为重新组成新的两个二位数的十位上数字,所以其值不能为0,因而在组建两个二位数之前,首先判断thou和hun这两个数字是否为0。

然后用逻辑表达式ab

=0&&cd%2==0来判断新组成的两个二位数ab和cd是否满足ab

如果上述逻辑表达式成立,则这个四位数是符合题目条件的一个数字,把其存入数组b中,同时计数变量count加1。

最后利用一个双重循环对数组b中的数字进行从大到小的排序。

  【参考答案】

  

  

2套上机考试试题

  在文什IN.dat中有200组数据,每组有3个数,每个数均是三位数。

函数Rdata()读取这200组数据存放到结构数组aa中,请编写函数numSort(),其功能是:

要求在200组数据中找出条件为每组中的第2个数大于第1个数加第3个数之和,其中满足条件的组数作为函数numSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第2个数加第3个数之和的大小进行降序排列(第2个数加第3个数的和均不相等),排序后的结果仍重新存入结构数组bb中。

最后调用函数Wdata(),把结果bb输出到文件OUT.dat中。

  注意:

部分源程序已经给出。

请勿改动主函数main()、读数据函数Rdata()和输出数据函数Wdata()的内容。

  

第2套试题答案及详解

  【审题分析】分析题目可知,本题只要实现numsort()函数的功能即可。

numSort()要实现的功能是:

要求在200组数据中找出条件为每组中的第2个数大于第1个数加第3个数之和,其中满足条件的组数作为函数numsort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第2个数加第3个之和的大小进行降序排列(第2个数加第3个数的和均不相等),排序后的结果仍重新存入结构数组bb中。

因此解答本题的关键在于如何将一个数拆分出前面的3何数字成单个数字,并比较大小以及排序。

  【解题思路】在for循环语句巾,自变量i从0递增到200,判断每组中的第2个数大于第1个数加第3数之和即表达式aa[i].x2>aa[i].x1+aa[i].x3是否成立,如果表达式成立,即把aa[i]赋给数组变量bb,同时计数变量cnt自加。

最后用两重循环对数组bb中的数据按照每组数据的第2个数加第3个之和的大小进行降序排列。

  【参考答案】

  

第3套上机考试试题

  已知数据文件IN.dat中存有200个四位数,并已调用读函数rData0把这些数存入数组a中,清编写函数CalVal(),其功能是:

把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的四位数的个数count,并把这些四位数按从小到大的顺序存入数组b中。

最后调用写函数wData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。

  注意:

部分源程序已经给出。

程序巾已定义数组a[200]、b[200],已定义变量count。

请勿改动数据文件IN.dat中的仟何数据及主函数main()、读函数rData()和写函数wData()的内容。

  

第3套试题答案及详解

  【审题分析】分析题目可知,本题只要实现calVal()函数的功能即可。

calVal()要实现的功能是:

把一个四位数的各位数字拆分成单个数字,然后按指定方式相加,如果相等且原四位数是偶数,则统计出满足此条件的个数count并把这些四位数按从小到大的顺序存入数组b中。

因此解答本题的关键在于如何将一个四位数的每位数拆分成单个数字以及如何判断一个四位数是否为偶数。

  【解题思路】对于每一个四位数,用这个四位数除以1000,可得到这个四位数干位上的数字输给变量thou;这个四位数对1000求余数然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余数然后再除以10,可得到这个四位数十位上的数字输给变量ten;这个四位数对10求余数,可得到这个四位数个位上的数字输给变量data。

  然后判断表这式thou+ten=data+hun&&a[i]%2!

=1是否成立,如果成立,则把这个数赋给数组b,同时计数变量count加1。

最后对数组b中元素进行从小到大的排序。

  【参考答案】

  

  【易错分析】用求余运算和除法运算得到一个四位数

第4套上机考试试题

  已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成其中:

金额=单价×数最。

函数ReadDat()是读取这100个销售记录并存入结构数组sell中。

请编写函数SortDat(),其功能要求:

按金额从小到人进行排列,若金额相同,则按产晶代码从人到小进行排列,最终排列结果仍存入结构数组sell中。

最后调用函数WriteDat(),把结果输出到OUT.dat文件中。

  注意:

部分源程序已经给出。

请勿改动主函数main()、读数据晒数ReadDat()和输出数据两数WriteDat()的内容。

  

  

第4套试题答案及详解

  【审题分析】分析题目可知,本题只要实现SortDat()函数的功能即可。

SortDat()要实现的功能是:

按金额从小到大进行排列,若金额相同,则按产品代码从人到小进行排列,最终排列结果仍存入结构数组sell中。

因此解答本题的关键在于如何通过自定义类型读取’条销售记录,并交换它的成员以及排序。

  【解题思路】在双重for循环中首先比较两个产晶的金额,如果前一个产品的金额大于后一个产晶的金额,则这两个产品进行数据交换。

如果两个产品的金额相等,则用字符串比较函数strcmp比较两个产品的代码,如果返回的值小于0,则这两个产品进行数据交换。

  【参考答案】

  

  

第5套上机考试试题

  已知文件IN.dat中存有若干个(不多于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。

请编写函数CalValue(),其功能要求是:

①求出文件中所有的正整数个数totNum.(求求这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totave。

最后调用函数writeDat()把所求的结果输出到OUT.dat文件中。

  注意:

部分源程序已经给出。

清勿改动主函数main()、读函数ReadDat()和函数writeDat()的内容。

  

  

第5套试题答案及详解

  【审题分析】分析题曰可知,本题只要实现calValue()函数的功能即可。

calValue()要实现的功能是:

①求出文件中共有的正整数个数totNum;②求这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totave。

因此解答本题的关键在于如何判断一个数是否为正整数。

  【解题思路】在for循环语句中,自变最i从0递增到MAXNUM对数组number中的每个数进行判断,如果mumber[i]的值大于0,说明number[i]的值为正整数,统计正整数个数的变量totNum加1;然后用除法和求余的方法对number[i]的值求出其各个位上的数字,分别记录到变量thou、hun、ten、data中,这些数字的和对2求余数,如果余数不为零,则统计变量totCnt加1,同时把number[i]的值加到totave上,得到这些数的和。

退出循环后,用totave的值除以totCnt,就得到了这些数的算术平均值totave。

  【参考答案】

  

  【易错分析】用number[i]除以1000得到number[i]千位上的数字,用number[i]对1000求余然后再除以100得到number[i]百位上的数字,用number[i]对100求余然后再除以10得到number[i]十位上的数字,用numbcr[i]对10求余数得到nlll=nber[i]个位上的数字。

在求算术平均值时,要把整型转换成双精度型数据。

第6套上机考试试题

  下列程序的功能是:

计算500~800区问内素数的个数count,并按所求素数的值从大到小的顺序排序内.计算其间隔加、减之和,即第1个素数.第2个素数+第3个素数.第4个素数+第5个素数……的值sum。

  请编写函数primeValue()实现程序的要求。

最后调用函数writeDat(),把结果count和sum输出剑OUT.dat文件中。

  注意:

部分源程序已给出。

请勿改动丰函数main()和输出数据函数writeDat()的内容。

  

第6套试题答案及详解

  【审题分析】分析题目可知,本题只要实现primeValue()函数的功能即可。

primeValue()要实现的功能是:

计算指定区域内素数的个数count,并排序,再根据指定的运算关系计算sum值。

因此解答本题的关键在于如何判断一个数是否为素数。

  【解题思路】判断一个数是否是素数的算法是:

如果存在一个从2开始到这个数的一半之间的数能被这个数整除,则这个数不是素数;否则这个数是素数。

  题中,循环变量i从800递减到500,如果存在小于i/2的一个数j,使表达式i%j的值等于0,则当前数i不是素数,否则i是素数。

计数数变量count加1,把变量i的值加到变量数组yy中。

在求这些素数的间隔加、减之和时,采用了标志变最j,每循环一次变量i都乘以-1。

  【参考答案】

  

  【易错分析】判断一个数是否是素数时,自变量循环变量i从2递增到i/2

  

第7套上机考试试题

  下列程序的功能是:

选出5000以卜符合条件的自然数。

条件是:

千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。

计算并输出这些四位自然数的个数count以及这些数的和sum。

请编写函数calValue0实现程序的要求,最后调用函数writeDat(),把结果count和sum输出到OUT.dat文件中。

  注意:

部分源程序已经给出。

请勿改动主函数main()和输出数据函数writeDat()的内容。

  

第7套试题答案及详解

  【审题分析】分析题目可知,本题只要实现calValue()函数的功能即可。

calValue()要实现的功能是:

选出5000以下符合条件的自然数。

因此解答本题的关键在于如何将指定的条件转换成C语言表达武。

  【解题思路】对于每个四位数,用这个四位数除以1000,可得到这个四位数千位上的数字输给变量thou;这个四位数对1000求余然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余然后再除以10,可得到这个四位数十位卜-的数字输给变量ten;这个四位数对10求余,可得到这个四位数个位卜的数字输给变量data。

  然后判断表达式thou+hun==data+ten&&thou+hun==(data-thou)*10是否成立,如果成立,则把这个数回到变量sum上.得到这些数的和,同时计数变餐count加1。

  【参考答案】

  

  

  【易错分析】用求余运算和除法运算得到一个四位数的各个位上的数字。

  【考点链接】求余运算、除法运算。

第8套上机考试试题

  已知数据文件IN.dat中存有200个四位数,并已渊用读函数readDat()把这些数存入数组a中,请编写函数primecount(),其功能是:

如果四位数各个位上的数字均是奇数,则统计出满足此条件的个数count并把这些四位数按从人到小的顺序存入数组b中。

最后main()函数调用写函数writeDat(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。

  注意:

部分源程序已经给出。

程序中已定义数组a[200]、b[200],已定义变量count。

请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。

  

  

第8套试题答案及详解

  【审题分析】分析题目可知,本题只要实现primeCount()函数的功能即可。

primeCount()要实现的功能是:

如果四位数各位上的数字均是奇数,则统计出满足此条件的个数count并把这些四位数按从大到小的顺序存入数组b中。

因此解答本题的关键在于如何将一个四位数拆分成单个数字,并判断这些数字是否为奇数。

  【解题思路】对于每一个四位数,用这个四位数除以1000,可得到这个四位数千位上的数字输给变量thou;这个四位数对1000求余然后再除以100,可得剑这个四位数百位上的数字输给变量hun;这个四位数对100求余然后再除以10,可得到这个四位数十位上的数宁输给变量ten;这个四位数对10求余,可得到这个四位数个位上的数宁输给变量data。

  然后判断表达式thou%2!

=0&&hun%21=0&&ten%2!

=O&&data%2!

=0是否成立,如果成立,则把这个数赋给数组b,同时计数变最count加1。

最后用双重循环对数组b进行从大到小的排序。

  【参考答案】

  

  【易错分析】用求余运算和除法运算得到一个四位数的各个位上的数字。

第9套上机考试试题

  函数RData()实现从文件IN.dat中读取一篇英文文章,存入到字符串数组original中;请编写函数encryptChar(),其功能是:

按给定的替代关系对数组original中的所有字符进行替代后,仍存入数组original的对麻的位置上。

最后调用函数WData(),把结果original输出到OUT.dat文件中。

  替代关系:

f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。

  原始数据义件存放的格式是:

每行的宽度均小于80个字符。

  注意:

部分程序已给出。

请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。

 第9套试题答案及详解

  【审题分析】分析题目可知,题中需要解决的问题就是实现encryptChar函数的功能问题,而encryptChar函数的功能是:

按给定的替代关系对数组original中的所有字符进行替代后,仍存入数组original的对应的位置上。

因此本题的关键在于如何用C程序实现替代关系的运算。

  【解题思路】题13中的“如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代”,可转化为:

如果原字符的ASCI值是奇数且计算后f(p)值大于32,则该字符用f(p)所对应的字符进行替代,否则不变。

在程序中的语句是:

if(*pf%2&&*pf*11%256>32)*pf=*pf*11%256。

  【参考答案】

  

  【易错分析】在“if(*pP/o2&&*pf*11%256>32)*pf=*pf*11%256;”这句中表达式*pf%2和表达式“*pf*11%256>32”是与的关系,而不是或的关系

  

第10套上机考试试题

  已知数据文件IN.dat中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请编写函数diffVal(),其功能是:

把一个四位数的千位数字上的值,减去百位数字上的值,再减去十位数字上的值,最后减去个位数字上的值,如果得出的值大于等于0且原四位数是奇数,则统计出满足此条件的个数count并把这些四位数按从小到大的顺序存入数组b中。

最后调用写函数writeDat(),把缔果count以及数组b中符合条件的四位数输出到OUT.dat文件中。

  注意:

部分源程序已经给出。

程序中已定义数组a[200]、b[2001,已定义变量count。

请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。

  

  

  

第10套试题答案及详解

  【审题分析】分析题目可知,本题只要实现diffVal()函数的功能即可。

diffVal()要实现的功能是:

把一个四位数的千位数字上的值,减去百位数字上的值,再减去十位数字上的值,最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数count并把这些四位数按从小到大的顺序存入数组b中。

因此解答本题的关键在于如何将将一1个四位数拆分成单个数字,并判断这些数字是否为奇数。

  【解题思路】对予每一个四位数,用这个四位数除以1000,可得到这个四位数千位上的数字输给变量thou;这个四位数对1000求余然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余然后再除以10,可得到这个四位数十位上的数字输给变量ten;这个四位数对10求余,可得到这个四位数个位上的数字输给变量data。

  然后判断表达式(thou-hun-ten-data>=O)&&a[i]%2==1是否成立,如果成立,则把这个数赋给数组b,同时计数变量count加1。

最后利用双重循环对数组b的元素按从小到大的顺序排序。

  【参考答案】

  

  

  【易错分析】用求余运算和除法运算得到一个四位数的各个位上的数字。

第11套上机考试试题

  已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读耿这若干个正整数并存入数组number中。

请编写函数CalValue(),其功能要求是:

  ①求出文件中共有的止整数个数totNum;

  ②求这些数右移1位后,产生的新数是奇数的数的个数totCnt以及满足此条件的这些数(右移前的值)的算术平均值totAve。

最后涮用函数writeOat()把所求的结果输出剑OUT.dat文件中。

  注意:

部分源程序已经给出。

请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

  

  

 第11套试题答案及详解

  【审题分析】分析题目可知,本题只要实现calValue()函数的功能即可。

calValue()数要实现的功能是:

④求出文件中共有的正整数个数totNum;②求这些数右移1位后,产生的新数是奇数的数的个数totCnt以及满足此条件的这些数(右移前的值)的算术半均值totAve。

因此解答本题的关键在于如何将一个数为正整数,并判断对这些数字移位后的数是否为奇数。

  【解题思路】在for循环语句中,自变量i从0递增到MAXNUM对数组number中的每个数进行判断,如果number[i]的值大于0,说明number[i]的值为正整数,统计正整数个数的变量totNum加1:

然后number[i]右移1位得到data的值;再对data的值除2求余数,如果其值为1,则统计变量totCnt加1,同时把number[i]的值加到totAve上,得到这些数的和。

退出循环后,用totAve的值除以totCnt,就得到了这些数的算术平均值totAve。

  【参考答案】

  

  【易错分析】对数右移1位应用C语言中的“number[i]>>1;”语句表示。

第12套上机考试试题

  已知数据文件IN.dat中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请编写函数spellNum(),其功能是:

把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的二位数(新二位数的十位数字是原四位数的百位数字,新二位数的个位数字是原四位数的十位数字),如果新组成的两个二位数均是偶数并且两个二位数中至少有一个数能被9整除,同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。

最后main()函数调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到0UT.dat文件中。

  注意:

部分源程序已经给山。

稃序巾已定义数组a[200]、b[200],已定义变量cnt。

请勿改动数据文件IN.dat中的任何数据及丰函数main()、读函数readDat()和写函数writeDat()的内容。

  

  

第12套试题答案及详解

  【审题分析】分析题目可知,本题只要实现spellNum()函数的功能即可。

spellNum()要实现的功能是:

把一个四位数的每位数拆分成单个的数字,然后组成两个二位数,如果新组成的两个二位数均是偶数并且两个二位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。

因此解答本题的关键在于如何将一个四位数拆分成单个数字,如何将2个数字组成一个二位数。

  【解题思路】对于每一个叫位数,用这个四位数除以1000,可得到这个网位数千位上的数字输给变量thou;这个四位数对1000求余然后再除以

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

当前位置:首页 > 自然科学 > 天文地理

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

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