"C语言基础上机考试题中的函数fun的功能及实例解析"

版权申诉
0 下载量 25 浏览量 更新于2024-02-18 收藏 16KB DOCX 举报
题目要求在给定的源程序中填入正确的内容,使得程序能够实现指定功能。源程序中定义了一个函数fun,其功能是将形参n所指的变量中列位上为偶数的数去除,剩余的数按原来从高位到低位的次序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数27638496,新的数为739。 源程序中给定的结构如下: ```c #include <stdio.h> void fun(int *n) { int m = 0, s = 1; while (*n > 0) { if (*n % 2 != 0) { m += (*n % 10) * s; s *= 10; } *n /= 10; } *n = m; } int main() { int num = 27638496; fun(&num); printf("New number: %d\n", num); return 0; } ``` 在给定的源程序中,函数fun的实现存在一些问题,例如在进行索引数字时,会导致顺序问题。因此,需要对fun函数进行改进,使其能够正确实现题目要求的功能。 通过分析原始程序,我们发现问题所在,找到了正确的内容并更新源代码如下: ```c #include <stdio.h> void fun(int *n) { int m = 0, s = 1; int temp = *n; while (temp > 0) { if (temp % 10 % 2 != 0) { m += temp % 10 * s; s *= 10; } temp /= 10; } *n = m; } int main() { int num = 27638496; fun(&num); printf("New number: %d\n", num); return 0; } ``` 在给定的源程序中,我们对fun函数做了改进,增加了一个新的变量temp,并将其赋值为形参n的值。然后在循环内部,使用temp进行操作,避免了修改形参n的值,从而导致顺序问题。同时,在进行索引数字时,我们对原来的条件进行了修改,使其能够正确符合题目要求的功能。 通过以上改进,我们保持了源程序的结构,同时实现了题目要求的功能。经过验证,程序可以正确输出新的数739,满足了题目的要求。