中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:年全国计算机等级考试上机考试模拟试卷(8)总分:100分及格:60分考试时间:120分C语言程序设计题(1)函数ReadDat()实现从文件in.dat中读取一篇英文文章存入到无符号字符串数组XX中;请编制函数ChA(),其函数的功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值,存入数组单元xx[i][0]中(其中:i是文章中的某行)。第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的值,存入数组单元xx[i][1]中。以此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的值,存放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行重新存入无符号字符串数组XX中。最后main()函数调用函数WriteDat()把结果XX输出到out.dat文件中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按它的ASCII值作以上处理。注意:部分源程序存放在test.c文件中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:(2)函数ReadDat()实现从文件in.dat中读取一篇英文文章,存入到无符号字符串数组XX中;请编制函数encryptChar(),按给定的替代关系对数组XX中的所有字符进行替代,其替代值仍存入数组)xx的对应的位置上,最后调用函数wmeDat()把结果xX输出到文件out.dat中。替代关系:f(p)=p*11mod256,mod为取余运算,P是数组xx中某一个字符的ASCII值,f(p)是计算后无符号的整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则用f(p)替代所对应的字符。注意:部分源程序存放在test.c文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。请勿改动住数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:(3)程序test.c的功能是:计算100以内满足以下条件的所有整数i的个数cnt以及这些i之和sum。条件:i,i+4,i+10都是素数,同时i+10小于100。请考生编写函数countvalue()实现程序要求,最后调用函数wfiteDAT()把结果cnt和sum输出到文件out.dat中。(数值l不是素数)(4)已知数据文件in.dat中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVa(),其功能是:把千位数字和十位数字重新组成一个新的含有两位数字的数ab(新数的十位数字是原四位数的千位数字,新数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的含有两位数字的数cd(新数的十位数字是原四位数的个位数字,新数的个位数字是原四位数的百位数字),如果新组成的两个数ab-cd>=0且ab.cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writcDat()把结果cnt以及数组b中符合条件的四位数输中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:.dat中。(5)设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编写函数Josegh(void)实现此功能,并调用函数writeDat(),把结果P输出到文件out.dat中。设n=100,s=1,m=10。①将1到n个人的序号存入一维数组P中;②若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;③重复第②步直至圈中只剩下p[1]为止。注意:部分源程序已经给出。请勿改动主函数main()和输出数据函数writeDAT()的内容。中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:语言程序设计题(1):【审题关键句】以行为单位,新字符串中每个字符的ASCII码值等于该位置上的原字符ASCII码值加其后面一个字符的ASCII码值,逆序排序。【解题思路】①定义整型循环变量i、j和字符局部变量yuan。中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:②在第一层for循环中,循环变量i从0开始,依次递增直到其值大于或等于maxline,在循环体中,首先把第i行的第一个字符)XX[i][0]赋给变量yuan,在第二层for循环中,循环变量j从0开始,依次递增直到其值等于该行字符串的长度减1,在循环体中,将字符xx[i][j]的ASCII码值与字符)XX[i][j+1]的ASCII码值相加的和保存到字符)xx[i][j]中。当退出第二层for循环后,把第i行的最后一个字符与第一个字符变量yuan的值相加,最后通过strreV()函数对i行字符串逆序排序。【参考答案】(2):【审题关键句】字符替代f(p)=p*11mod256,小于等于32或对应小写字母不变,否则替换。【解题思路】本题类似第65套试题,通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。【参考答案】(3):【审题关键句】100以内(含l00)满足i、i+4、i+10都是素数的整数的个数以及这些i之和。【解题思路】中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:①首先定义循环变量i,然后将i的值赋初值为3,每循环一次则将i的值加1,直到i<90。②在for循环中,每执行一次循环则调用函数isPrime()(该函数具体的算法已经在源程序中给出,直接用即可),对i、i+4、i+10是否同时是素数进行判断,如果这三个数同时为素数,则计数变量cnt值加1,同将时将变量i的值累加到sum上。【参考答案】(4):【审题关键句】千位+十位组合与个位+百位组合,都是奇数,两数相减结果大于等于0小于等于10,从大到小排序。【解题思路】①首先,本题要定义多个变量,包括两仑循环变量循环i、j;用来存放四位数分解之后各位数的变量qw(千位)、bw(百位)、SW(十位)和gw(个位);两个用来存放重新组合数字的变量newV1和newV2。②通过for循环依次对数组中的每个四位数进行分解,每分解一个四位数,根据题目要求,对其各位数进行重新组合,形成两个新的十位数,组合条件分别是原四位数的千位和十位组成一个十位数,个位和百位组成一个十位数,并将两个新的十位数分别赋给变量newV1和newV2。③数字重组完毕之后,再根据题目要求筛选满足条件的四位数,本题需要考虑多个筛选条件:一是新组合的十位数中,其十位数不能为0,即原四位数的千位和个位数字不能为0;二是两个新组合的十位数之差必须大于等于0小于等于10;三是两个新组合的数字均为奇数。④将同时满足以上3个条件的四位数赋给数组b[cnt],同时数组下标值加1,当for循环执行完毕后,则将所有满足条件的四位数全部存放到数组b[cnt]qb。⑤最后通过两个for循环,对数组b[cnt]中的元素按从大到小的顺序排序,排序过程中,可用newV1或newV2作为数据交换的中间变量。【参考答案】中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址:(5):【审题关键句】围圈问题。【解题思路】①定义整型变量i、j,表示出圈人位置的变量s1和出圈人序号的变量W。并将S的值赋给变量s1(s的值已在源程序中赋值为1)。②通过一个for循环,将n个人的序号存入一维数组P中(n的值已在源程序中赋值为100)。③再建立一个for循环,循环变量i从n开始,即从100开始,依次递减直到其值小于2时退出循环。由于每执行一次循环,人数就会减少1个,因此,此处的for循环应表示为递减方式。在该循环体中,先计算每次出圈人的位置,通过表达式“(s1+m.1)%i”计算每次出圈人的位置(m的值已在源程序赋值为1O)。若所得结果为0,则说明要开始报数的是最后一个人,在此人前面的那个人就是要出圈的人,再通过一个循环将要出圈的人移到数组最后。【参考答案】中大网校引领成功职业人生中大网校“十佳网络教育机构”、“十佳职业培训机构”网址: