问答题
给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。
例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
long fun (long num)
{
/************found************/
long k;
do
{ k*=num%10;
/************found************/
num/=10;
} while (num);
return (k);
}
main ______
{ long n;
printf("/nPlease enter a number:");scanf("%ld",&n);
printf("/n%ld/n", fun (n));
}
【正确答案】
【答案解析】(1)long k=1; (2)num/=10;
答案考生文件夹 [解析] 本题中函数的功能是计算正整数num各个位上的数字之积。首先要对正整数进行截取,取得该正整数的各个位上的数字,然后对求得的数进行累积。
从已给定源程序的main主函数入手,通过键盘输入一个正整数n,语句“printf("/n%ld/n",fun(n));”调用fun函数求得n各个位上的数字之积。
第一个错误标识下的k是函数的返回值,子函数fun中在执行“k*=num%10;”之前,只进行了定义,却没有赋初值,编译时会警告变量在使用之前没有初始化k。k代表了各个位上的数字之积,其初值应为1。因此,第一个标识下的“long k;”改为“long k=1;”。
第二个标识下的符号“/”是非法字符,根据题意,这里应该是进行除法运算,所以“num/=10;”应该改为“num/=10;”。
[考点] 顺序程序设计、运算符。