等级考试三级C机试题Word格式.docx
- 文档编号:21606783
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:47
- 大小:39.16KB
等级考试三级C机试题Word格式.docx
《等级考试三级C机试题Word格式.docx》由会员分享,可在线阅读,更多相关《等级考试三级C机试题Word格式.docx(47页珍藏版)》请在冰豆网上搜索。
首先将实数用强制类型转换变为整型(此处为截取,而非四舍五入)即为所求的整数,再用该实数减去所得的整数即为该实数的小数部分。
程序流程如下:
1.对所有实数求出其小数部分,计算个数N并累加求和,得到平均值aver。
2.对所有实数,判断其小数部分是否大于平均值aver,若符合条件,则分别累加其整数部分的和sumint以及小数部分的和sumdec,直至处理完所有的数。
注意:
中间变量在使用过程中的取值范围,以防溢出。
第2道
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;
请编制函数ComWord()分别计算出10个不区分大小写的英文单词(you,for,your,on,no,if,the,in,to,all)的频数并依次存入整型数组yy[0]至yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT.DAT中。
原始数据文件存放的格式是:
每行的宽度均小于80个字符,含标点符号和空格。
部分源程序存放在PROG1.C中。
文章每行中的单词与单词之间用空格或其它标点符号分隔,每单词均小于20个字符。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
本题首先找到各单词,若要从句子中分离出单词来,需设一临时变量word,开始读取时将其置空,然后从串中逐个字符读取,如果该字符是字母(使用isalpha宏判断是否字符),则将其追加写入word,再读下一字符;
若不是字母,则说明本单词已结束。
每个单词找到后,将其与给定的10个单词相比较,若相等,则对应的数组元素值加1。
1.依次读取所有的字符串,若已经全部读取完,转5结束;
否则初始化各变量,转2继续。
2.对每个字符串,按顺序读取其字符,并判断该字符是否为字母,若为字母,则将其写入word变量中,转4继续;
若不是字母,则说明该单词结束,转3继续;
若为字符串结束符,转5继续。
3.将该单词与给定的10个单词相比较,若相等,则对应的yy数组元素值加1。
4.转2继续。
5.结束。
程序中stricmp(constchar*s1,constchar*s2)是C语言提供的库函数,作用是比较两个字符串s1、s2的大小,不区分大小写,若s1>
s2则返回值大于零;
若s1==s2,则返回值等于零;
若s1<
s2,则返回值小于零。
第3道
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;
请编制函数StrOR(),其函数的功能是:
以行为单位把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后并把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放。
最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT.DAT中。
例如:
原文:
Youcancreateanindexonanyfield.
youhavethecorrectrecord.
结果:
nanyfield.Yucancreateanindex
rd.yuhavethecrrectrec
本题应首先找到第一个'
o'
的位置,交换其左右两边的字符串后得到一新字符串,再在新字符串中找第一个'
的位置,重复上述操作。
交换字符串的操作这样实现:
先将'
左边的字符串拷入临时变量yy中,再把'
右边的字符串重新拷回到原字符串首地址,最后把临时变量yy中的字符串合并到原字符串右边组成一个新串。
程序中strchr()函数的功能是在一个串中查找给定字符的第一个匹配之处。
strcat()函数的功能是字符串拼接函数。
1.for循环依次读取每一个字符串,若已全部读完,转4结束;
否则转2继续。
2.在当前串找'
,若没有则转1继续;
若有则转3继续。
3.先将'
右边的字符串重新拷回到原字符串首地址,最后把临时变量yy中的字符串合并到原字符串右边组成一个新串,转2继续。
4.结束。
第4道
请编制函数CalValue(),其功能要求:
1.求出这N个实数的小数部分值的平均值aver;
2.分别求出这N个实数中其小数部分值小于平均值aver的该数的整数部分值之和sumint以及该数的小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出OUT.DAT文件中。
本题应先求出实数的小数部分的平均值,再求出各实数的小数部分是否小于其平均值,若满足,则按要求进行计算出其整数部分的和以及小数部分的和;
2.对所有实数,判断其小数部分是否小于平均值aver,若符合条件,则分别累加其整数部分的和sumint以及小数部分的和sumdec,直至处理完所有的数。
第5道
已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
部分源程序存在文件PROG1.C文件中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
本题的关键是怎样得到个位、十位、百位以及千位数字位置上的数,可以采用取模"
%"
与除"
/"
相结合的方法。
"
是根据运算符两端的数自动决定决定商是取整数还是取实数,如果是整数则商也为整数。
想得到个位数字上的数可以直接模10即可;
想得到十位数字上的数,可以先除以10,再模10,也可以先模100,再除以10(本题是采用这种方法);
想得到百位数字上的数,可以先除以100,再模10,也可以先模1000,再除以100;
想得到千位数字上的数可以直接除以1000即可;
得到这四个数后,根据试题要求进行处理就可以了。
判断一个数是奇数的条件是这个数模2,得到的余数为1,则这个数为奇数。
1.首先利用for循环,分别对每一个数取其个位、十位、百位以及千位数字上的数,然后再判断各位数字是否都是奇数,如果满足,则进行cnt加1并把该数存入数组变量b中,如果不满足,则该数被忽略。
2.在处理完所有数后,使用二重循环对数组变量b中的数据进行按从大到小的顺序进行排序。
第6道
请编制函数CalValue(),其功能要求:
1.求出这N个实数的平均值aver;
2.分别求出这N个实数中大于平均值aver的实数的整数部分值之和sumint以及该实数的小数部分值之和sumdec,最后调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。
本题应先求出实数的平均值,再求出各实数是否大于其平均值,若满足,则按要求进行计算出其整数部分的和以及小数部分的和;
1.利用for先求出所有实数的和,再得出其平均值aver。
2.再利用for对所有实数判断其是否大于平均值aver,若符合条件,则分别累加其整数部分的和sumint以及小数部分的和sumdec。
第7道
在文件IN.DAT中已存有若干个(个数<
200)四位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。
1.求出这文件中共有多少个正整数totNum;
2.求出这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。
1.首先利用for循环,计算出文件中正整数的个数totNum。
2.再利用for循环,分别对每一个数取其个位、十位、百位以及千位数字上的数,再对这四个数进行累加产生一个新数j,然后对这个数j进行判断是否是偶数,如果是偶数,则进行totCnt加1以及对原先的四位数进行累加并赋给变量he进行保存。
3.在所有数都处理完成后,用he除以totCnt就可以得出满足条件的平均值totPjz。
4.结束。
第8道
2.求这些数中的千位数位置上的数字大于个位数位置上的数字的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。
本题的关键是怎样得到个位数字位置和千位数字位置上的数,可以采用取模"
想得到个位数字上的数,可以模10,得到的余数就是所得;
想得到千位数字上的数,只要除以1000,得到的商就是所得;
得到这两个数后,根据试题要求进行处理就可以了。
2.再利用for循环,分别对每一个数取其个位数字上的数和千位数字上的数,然后判断是否满足条件,如果满足条件,则进行totCnt加1和以及对原先的四位数进行累加并赋给变量he进行保存。
3.当所有的数处理完后,用he除以totCnt就可以得出平均值totPjz。
第9道
请编制函数SortCharD(),其函数的功能是:
以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT.DAT中。
例:
dAe,BfC.
CCbbAA
fedCBA.,
bbCCAA
本题采用了冒泡法排序,同一字符串中的相邻两字符两两比较,小者置后,直到串中所有字符均已排过序。
当两个字符逆序时,交换字符要使用一个临时变量。
1.依次读取所的字符串,若已经全部读完,则转3结束;
2.按序取字符串中的字符,与串中所有字符比较,若小于被比较字符,则交换两字符位置,直到与串所有字符比较完毕,转1继续。
3.结束。
第10道
把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>
=10且ab-cd<
=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到文件OUT.DAT中。
想得到千位数字上的数可以直接除以1000即可。
得到这四个数后,根据试题要求重新组成两个新数,再根据给定的条件进行判断是否符合,若符合,则把该四位数保存在数组b中,并进行计数cnt加1;
若不满足,则忽略该四数。
最后对这些满足条件的数按从大到小的顺序排列。
1.依次取出每一个四位数,如果所有的数都取完,则转3继续;
否则分别取出这个四位数上的个位、十位、百位以及千位数字位置上的数。
2.对这四个数重新按要求组成两个新数,再判断是否满足条件,若满足,则把原四位数依次存入数组b中,并进行计数cnt加1,转1继续。
3.对数组b中的数据按从大到小的顺序进行排列。
第11道
请编制函数DelWord()删除整篇文章中的空格、标点符号以及单词的长度为奇数的单词,余下的单词仍按行按顺序重新存入数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT.DAT中。
Ifyoudonothaveauniquefield.
Ifdohaveunique
每行的宽度均小于80个字符,含标点符号和空格。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
本题难点在于判断怎样从句子中分离出单词来。
为此为一临时变量word,开始读取时置空,然后从串中逐个字符读取,如果字符是字母,则将其追加写入word,再读取下一字符,若不是字母,说明本单词已结束。
接下来就可判断该单词的长度是否是奇数,若不是奇数,则追入临时变量str中。
这样自然也就删除了所有的非字母字符。
一个单词判断完毕后判断该串是否结束,若未结束继续取下一单词,若已经结束则转读取下一字符串,重新开始新一轮的循环。
程序流程如下:
1.外层for循环依次读取每一个字符串,若已全部读完转6结束;
2.内层while循环控制是否一个串已读完,若已读完则转5继续;
否则继续读取下一字符,转3继续。
3.该字符为字母则写入word中,转2继续;
否则转4继续。
4.判断该单词的长度是否是偶数,则写入临时变量str中;
5.将str中的内容复制到原字符串变量空间;
转1继续。
6.结束。
第12道
********************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 等级 考试 三级 试题