1、国家二级 C语言程序设计机试(程序设计题)模拟试卷 1及答案与解析 一、程序设计题 1 请编写函数 fun,它的功能是计算下列级数和,和值由函数值返回。例如,当 n=10, x=0 3时,函数值为 1 349859。注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序: #include#include#include#includedouble fun(double x, int n)void main()FLE*wf; system(“CLS”); prinff(“ f,fun(0 3, 10); * wf=fopen(“out d
2、at”, “W”);fprintf(wf, “ f , fun(0 3, 10); fclose(wf); * 2 编写函数 fun,其功能是:求出 11000之间能被 7或 11整除,但不能同时被 7和 1 1整除的所有整数,并将其放在 a所指的数组中,通过 n返回这些数的个数。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写 的若干语句。 试题程序: #include void fun(int*a, int*n) main() int aa1000, n, k; void NONO(); fun(all, &n); for(k=0; k #inc
3、lude #include #include void fun(char * s, char t) void main() FILE*wf; char S100, t100; system(“CLS”); prinff(“ nPlease enter string S: ”); scanf(“ s”, s); fun(s, t); printf(“ nThe result is: s n”, t); * wf=fopen(“out dat”, ”W”); fun(“ABCDEFGl2345”, t); fprinff(wf, “ S”, t); fclose(wf); * 4 请编写函数 vo
4、id fun(int x, int PP, int*n),它的功能是:求出能整除 x且不是偶数的各整数,并按从小到大的顺序放在 pp所指的数组中,这些除数的个数通过形参 n返回。 例如,若 x中的值为 30,则有 4个数符合要求,它们是 1、 3、 5、 15。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include #include #include void fun(int X, int PP, int*n) void main() FILE*wf; int x, aa1000, n, i; system(“CL
5、S”); printf(“ nPlease enter an integer number: n”) ; scanf(“ d”, &x); fun(x, aa, &n); for(i=0; in; i+) prinff(“ d”, aai); prinff(“ n”); * wf=fopen(“out dat”, “w”); fun(30, aa, n); for(i=0; in; i+) fprintf(wf, “ d”, 88 i); fclose(wf); * 国家二级 C语言程序设计机试(程序设计题)模拟试卷 1答案与解析 一、程序设计题 1 【正确答案】 double fun(dou
6、ble x, int n) int i; double s=1 0, sl=1 0; for(i=1; i=n; i+) sl=sl, * i; *各项中的阶乘 * s=s+pow(x, i) sl; *按公式求出 * return s; 2 【正确答案】 void fun(int*a, int*n) int i, j=0; for(i=1; i=1000; i+) *求 1到 1000之内能被 7或 11整除,但不能同时被 7和11整除的所有整数,并放入数组 a中 * if(i 7=011i 11=0)&i 77!=0) aj+=1; *n=j; 【试题解析】 本题考查: if语句,用来判断
7、能被 7整除或者能被 11整除,但是又不能同时被 7和 11整除的数,在这里要充分理解 “逻辑与 ”和 “逻辑或 ”的区别;for循环语句的循环变量用来控制取值范围。本题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可。下面来看判断语句,题目要求找出能被 7或 11整除,但不能同时被 7和 11整除的所有整数。能同时被 7和 11整除的整数一定能被 77整除,且不能被 77整除的数不一定就是能被 7或 11整除的数所以可得出程序中的 if()语句。注意: (i 7=0 i 11=0)两边必须要有小括号。 3 【正确答案】 void fun(char*s, char
8、t) int i=0; for(; *s!= 0; s+) *找出 ASC 值为奇数的字符依次存入数组 t中 * if(* s 2=1) ti+=*s; ti=0; *在字符串的末尾加上串结束符 * 【试题解析】 本题要求将 s所指字符串中 ASC 码值为偶数的字符删除,因此本题要求采用一个 for循环来找出 ASC 码值为奇数的字符依次存入数组 t中,并使用 if条件句来判断 s所指字符串中 ASC 码值是否为奇数。用 0加在字符串的末尾来表示字符串的结束。要删除 ASC 码值为偶数的字符,也就是要留下ASC 码值为奇数的字符。由于最终是要求出剩余字符 (即 ASC 码值为奇数 )形成的新串
9、,所以本题程序的算法是对原字符串从头到尾扫描,找出 ASC 码值为奇数的字符并将其依次存入数组 t中。此外,还要注意数组 t的下标变化和下标的初值 (初值必须为 0,即 i=0), ti+的作用是先使用 ti,然后再使 i自增 1。 4 【正确答案】 void fun(int x, int pp, int*n) int i, j=0; for(i=1; i=x; i=i+2) *i的初始值为 1,步长为 2,确保 i为奇数 * if(x i=0) *将能整除 x的数存入数组 pp中 * ppj+=i; *n=j; *传回满足条件的数的个数 * 【试题解析】 本题考查:偶数的判定方法;整除的实现。 本题题干信息是:能整除 x且不是偶数的所有整数。循环语句中变量 i从 1开始且每次增 2,所以 i始终是奇数。 整除的方法,在前面已经讲过多次,这里就不再赘述了。对于本题目要求的不是偶数的判定方法,即该数对 2求余不为 0。除以上方法外,还可以通过 for循环语句直接把偶数筛出去,确保参与操作的数均为奇数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1