1、国家二级( C语言)机试模拟试卷 217及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:有 NN矩阵,根据给定的 m(m 程序执行结果为 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 !#include #define N 4void fun(int (*t)N, int m)int i, j;/*found*/ for(i=0; i=0; j-)/*found*/ tij+【 2】 =tij;/*found*/ for(j=0; j 二、程序
2、修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:根据形参 m的值 (2m9),在 m行 m列的二维数组中存放如下所示规律的数据,由 main函数输出。 例如,若输入 2则输出: 若输入 4则输出: 请改正程序函数中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或 删行,也不得更改程序的结构 !#include#include#define M 10int aMM=0;*found* void fun(int*a, int m)( int j, k; for(j=0 ; j 三、程序设计题( 40分) 3 请编写一个函数 void am(char*
3、tt, int pp),统计在 tt所指字符串中 a到 z 26个小写字母各自出现的次数,并依次放在 pp所指数组中。 例如,当输入字符串: abedefgabcdeabc后,程序的输出结果应该是: 3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #include void fun(char *tt, int pp) main() char aa1000 ; int bb26, k
4、 ; void NONO (); printf(“nPlease enter a char string:“); scanf(“%s“, aa); fun(aa, bb); for (k = 0 ; k =0; j-)”是进行行元素中的值右移 m个位置,即把tij元素放置在 tij+m上,因此第二空应为 “m”。 第三空:循环 “for(j=0; j=a p+; 【试题解析】 进入 fun函数,根据前面的分析: 首先,因为数组 pp的每一个元素都用作计数器,因此,需要使数组 pp的每一个元素都置初值 0,通过 “for(i=0; i26; i+) ppi=0;”来实现。 然后,用指针依次指向字符串的每一个字符直到字符串结束标志。 最后,在循环中根据 *p的值不同,将累加器中的对应元素加 1。