国家二级C语言机试(操作题)模拟试卷499
程序填空题
1. 给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define M 5
#define N 20
int fun(char (*ss)[N], int *n)
{ int i, k=0, len= N;
/********** found**********/
for(i=0; i<【1】; i++)
{ len=strlen(ss[i]);
if(i==0) *n=len;
/********* found**********/
if(len 【2】 *n)
{ *n=len;
k=i;
}
}
/********** found**********/
return (【3】) ;
}
main()
{ char ss[M][N]={\\
(1)M (2)< (3)k
解析:第一空:循环的目的是在M个字符串中寻找长度最短的字符串,因此,循环变量i从0变化到“M-1”,故第一空处应为“M”。
第二空:“*n”记录最小字符串的长度,由审题分析可知,字符串ss[i]长度比min小,则交换最小长度值和下标位置,故第二空处应为“<”。
第三空:变量k记录了最小字符串的下标位置,函数的返回值是最短的字符串所在的行下标,故第三空处应为“k”。
程序修改题
2. 给定程序MODI1.C中函数fun的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。
例如,若输入\\
(1)if((’a’<=tt[i])&&(tt[i]<=’z’))
(2)tt[i]一=32;
解析:(1)第一个错误标识下的if判断语句中的逻辑有误,应该是与(&&)的关系,不是或(‖)的关系, 所以if判断语句改为
“if((’a’<=tt[i])&&(tt[i]<=’z’))”。
(2)第二个标识下小写字母转换为大写字母的转换算法有误,小写转换为大写应该是减去32,而不是加上32,所以“tt[i]+=32;”改为“tt[i]-=32;”。
程序设计题
3. 请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,若输入:17,则应输出:
4 6 8 9 10 12 14 15 16。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
void fun (int m, int *k, int xx [ ])
{
}
main ()
{
int m, n, zz[100];
void NONO () ;
printf(\\
int i,j;
int t=0; //初始化数组个数
for(i=2; i<m;i++) //循环判断小于
n的数是否为素数
{ j=2;
while(j<i)
{if(i%j==0) //如果i不是素数
{xx[t]=i;
t++;
break;
}
j++;}
*k=t; }
解析:(1)根据求素数的方法判断数i是否为素数。
(2)把不是素数的数留下来,其方法是:如果该数是素数则不处理;如果不是素数则放到数组xx中,并且把数组的下标加1,为下一个不是素数的数放在数组中做准备。
(3)返回个数,把xx数组中已经写入的数的个数返回即可,即把数组xx的最大下标加1返回即可。
本文档预览:3600字符,共2319字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载