试题三(共 15分) 阅读以下说明、C函数和问题,将解答写入答题纸的对应栏内。 【说明 1】 函数test_f1(

10 查阅

试题三(共 15分)

阅读以下说明、C函数和问题,将解答写入答题纸的对应栏内。

【说明 1】

函数test_f1(int m, int n)对整数 m、n进行某种运算后返回一个整数值。

【C函数 1】

int test_f1(int m, int n)

{ int k;

k = m > n ? m : n;

for(;(k%m!=0) || (k%n!=0);k++);

return k;

}

【问题 1】(5分)

(1)请写出发生函数调用test_f1(9,6)时,函数的返回值;

(2)请说明函数test_f1的功能。

【说明 2】

设在某 C 系统中为每个字符分配 1 个字节,为每个指针分配 4 个字节,sizeof(x)计

算为x分配的字节数。

函数test_f2()用于测试并输出该C系统为某些数据分配的字节数。

【C函数 2】

void test_f2( )

{ char str[] = "NewWorld"; char *p = str; char i = '\0';

void *ptr = malloc(50);

printf("%d\t", sizeof(str)); printf("%d\n", sizeof(p));

printf("%d\t", sizeof(i)); printf("%d\n ", sizeof(ptr));

}

【问题 2】(4分)

请写出函数test_f2()的运行结果。

【说明 3】

函数 test_f3(char s[])的功能是:将给定字符串 s 中的所有空格字符删除后形成的串保存在字符数组tstr中(串s的内容不变),并返回结果串的首地址。

【C函数 3】

char *test_f3 (const char s[])

{ char tstr[50]={'\0'}; unsigned int i, k = 0;

for(i=0; i<strlen(s); i++)

if (s[i] != ' ') tstr[k++] = s[i];

return tstr;

}

【问题 3】(6分)

函数test_f3()对返回值的处理有缺陷,请指出该缺陷并说明修改方法。

参考答案:

试题三 分析【问题1】 本题考查C语言基本运算和控制结构的应用。 对于传入函数test_fl中的参数m和n,运算“k=m>n?m:n”使得k取m和n中的较大者。此后,“for(;(k%m!=0)‖(k%n!=0);k++);”使得k最后的取值正好能同时被m和n整除,因此,本函数的功能是求m和n的最小公倍数。9和6的最小公倍数是18。【问题2】 本题考查C程序中的数据定义和存储应用。 对于定义char str[]=“NewWorld”,数组str由字符串“NewWorld”初始化后,其大小为9(包括串为结束

软考初级