问题 问答题

【说明】
函数int funl (int m,int n)的功能是:计算并返回正整数m和n的最大公约数。
【函数2.1】
int funl (iht m,int n){
while( (1) ) {
if(m>n) m=m-n;
else n=n-m;

(2)

【函数2.2说明】
函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符形成一个十进制整数(最多8位)。
例如,若字符串str的值为“f3g8d5.ji2e3p12fkp",则函数返回值为3852312。
【函数2.2】
long fun2 (char*str)
int i=0;
long k=0;
char*P=str;
while (*p!=’\0’&& (3) )
if (*p>=’0’&&*p<=’9’)
k= (4) +*p-’0’;
++i;

(5)

return k;


答案

参考答案:(1)m!=n,及其等价形式
(2)return m,或return n
(3)i<8,或i<=7,及其等价形式
(4) k*10
(5)p++,或++p,或p+=1,或p=p+1

解析:

[分析]:
由函数2.1的说明可知,该函数的功能是计算并返回正整数m和n的最大公约数。由于函数体中只有变量m和n,因此空(1)所在的循环条件只

能是关于m和n关系的表达式,且最大公约数保存在m或n中。同时从while的循环体可知,反复从较大者中减去较小者后,最后m和n的值会相等,

因此循环条件为m!=n或其等价形式。
函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str仕中最多8位数字字符形成一个十进制整数。从函数的功能描述和函

数体语句可知,变量i是用于计算得到的数字字符个数的,由于i的初始值为0,因此空(1)处应填“i<8”或其等价形式。8位长度的十进制整数

a1a2a3a4a5a6a7a8表示为:
a1a2a3a4a5a6a7a8=a1*107+a2*106+a3*105+a4*104+a5*103+a6*102+a7*101+a8
=(((((((0*10+a1)*10+a2)*10+a3)*10+a4)*10+a5)*10+a6)*10+a7)*10+a8
因此有:k0=0,ki=ki-1*10+ai (1≤i≤8),k8就是计算结果。

填空题
判断题