1、国家二级(C 语言)机试-试卷 21-1 及答案解析(总分:12.00,做题时间:90 分钟)一、程序填空题(总题数:2,分数:4.00)1.程序填空题()(分数:2.00)_2.给定程序中,函数 fun 的功能是:利用指针数组对形参 ss 所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss 所指字符串数组中共有 N 个字符串,且串长小于 M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANKlC中。不得增行或删行,也不得更改程序的结构! (分数:2.00)_二、程序修改题(总题数:2,分数:4.00)3.程序修改
2、题()(分数:2.00)_4.给定程序 MODllC 中函数 fun 的功能是:计算小于形参 k 的最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数值为 4622。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! (分数:2.00)_三、程序设计题(总题数:2,分数:4.00)5.程序设计题()(分数:2.00)_6.请编写一个函数 fun,它的功能是:将一个数字字符串转换为一个整数(不得调用 C 语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,
3、则函数把它转换为整数值-1234。注意:部分源程序存在文件 PROGlC 文件中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 (分数:2.00)_国家二级(C 语言)机试-试卷 21-1 答案解析(总分:12.00,做题时间:90 分钟)一、程序填空题(总题数:2,分数:4.00)1.程序填空题()(分数:2.00)_解析:2.给定程序中,函数 fun 的功能是:利用指针数组对形参 ss 所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss 所指字符串数组中共有 N 个字符串,且串长小于 M。请在程序的下划线处填入正确的内
4、容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANKlC中。不得增行或删行,也不得更改程序的结构! (分数:2.00)_正确答案:(正确答案:(1)i (2)psj (3)tp)解析:解析:本题中函数 fun 的功能是利用指针数组对形参 ss 所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。在 fun 函数中采用了选择排序法,在选择排序法中的降序排序,首先从数组中挑选一个最大的元素,把它和第一元素交换,接着从剩下的 n-1 个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。二、程序修改题(总题数:2,分数
5、:4.00)3.程序修改题()(分数:2.00)_解析:4.给定程序 MODllC 中函数 fun 的功能是:计算小于形参 k 的最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数值为 4622。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! (分数:2.00)_正确答案:(正确答案:(1)if(k130)I I(k17=0) (2) )解析:解析:该题中函数功能是求能被 13 或 17 整除的自然数之和。从已给定源程序的 main 主函数开始入手,“printf(d/
6、n,fun(500);”语句中的 fun 函数将 500 传给 n,计算小于 500 的能被 13 或17 整除的自然数之和。三、程序设计题(总题数:2,分数:4.00)5.程序设计题()(分数:2.00)_解析:6.请编写一个函数 fun,它的功能是:将一个数字字符串转换为一个整数(不得调用 C 语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。注意:部分源程序存在文件 PROGlC 文件中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 (分数:2.00)_正确答案:(正确答案: )解析:解析:该程序功能是将一个数字字符串转换为一个整数。其中,解题思路是将每位数字字符串的ASCII 码减去 48(字符“0”的 ASCII 码值),变成数字 09。然后再不断进行高位乘以 10 加低位的运算,或者反过来从低位向高位求,即不断进行低位加高位乘以 10 的运算。