1、国家二级 C语言机试(操作题)模拟试卷 13及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是建立一个 NxN的矩阵。矩阵元素的构成规律是:最外层元素的值全部为 1;从外向内第 2层元素的值全部为 2;第 3层元素的值全部为 3, 依次类推。例如,若 N=5,生成的矩阵为: 1 l 1 1 1 1 2 2 2 1 l 2 3 2 l l 2 2 2 1 1 1 1 1 l 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #define N
2、7 /*found*/ void fun(int(*a) _1_) int i, j, k, m; if(N 2=0) m=N 2; else m=N 2+1; for(i=0; i void fun(int m, int *k, int XX) main() int m, n, zz100; void NONO(); printf(“ nPlease enter an integer number between 10 and 100: ”); scarlf(“ d”, n); fun(n, m, z z); printf(“ n nThere are d non prime numbers
3、 less than d: ”, m, n); for(n=0; nm; n+) printf(“ n 4d”, z zn); NONO(); void NONO() *请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * int m, n, zz100; FILE *rf, *wf; rf=fopen(“in dat”, “r”); wf=fopen(“out dat”, “w”); fscanf(rf, “ d”, *k=t; 【试题解析】 该程序功能是将所有大于 1小于整数 m的非素数存入 xx所指数组中。求素数的常用方法是:从 2到 m1去除 m,如果中间的任何数被整除,则不是素数。 解题思路 (1)根据求素数的方法判断数 i是否为素数。 (2)把不是素数的数留下来,其方法是:如果该数是素数则不处理;如果不是素数则放到数组 xx中,并且把数组的下标加 1,为下一个不是素数的数放在数组中做准备。 (3)返回个数,把 xx数组中已经写入的数的个数返回即可,即把数组 xx的最大下标加 1返回即可。