参考答案:
(1)k++ ,或temp++
(2)i<12 ,或i< k-1(空(1)处填 k++),或i< temp-1(空(1)处填temp++),或等价形式
(3)tarr[i]*3,或*(tarr+i)*3,或等价形式
(4)tarr[i],或*(tarr+i) ,或等价形式
(5)S%10 ,或等价形式
详细解析:
本题考查 C程序设计基本技术。根据题目中的描述,在函数check(char code[]) 中要先将保存在 code中的编码存入tarr,同时根据题例中的 tarr内容示例表可知,ISBN号前12位数字中的奇数位数字会存入tarr的偶数下标,偶数位数字存入 tarr的奇数下标。将 13 位 ISBN 号存入tarr的代码如下所示:
for( i=0; i<17; i++ )
if ( code[i]!= '-' )
tarr[ (1) ] = code[i] - '0';
显然,空(1)处tarr的下标索引值不能使用 i,需要另一个整型变量,题目中提供了 k 和 temp ,因此在此处用k++或 temp++都可以。
空(2)~(4)处所在代码实现校验码的计算方法中的第一步和第二步,由于共需计算 12 位,因此空(2)处填入 "i<12"。算法中规定,ISBN 号前 12 位数字中的奇数位数字用 1 相乘,偶数位数字用 3 相乘,且将各乘积相加求出总和 S。由于在数组tarr 中,ISBN号的奇数位数字对应 tarr的偶数下标、偶数位数字对应 tarr的奇数下标。因此,空(3)处应填入"tarr[i]*3",空(4)处应填入"tarr[i]"。
校验码计算方法的第三步和第四步是:将总和 S 除以10,得出余数R; 将10减去余数 R后即为校验码V。若相减后的数值为10,则校验码为0。由空(5)处的代码,V 的值要么为 0,要么为10-S%10。显然,校验码为0说明余数 R 为 0 ,即S %10 等于 0 ,因此空(5)处应填入"s %10"。