问答题
下列给定程序中,函数fun的功能是:在整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。 请改正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改的程序的结构! 试题程序:#include<stdio.h>int fun(int*b){ int k,al,a2,i=0; for(k=10;k<=55;k++) {/******found******/ a2=ICl 0; al=k—a2 * 10: if((k%3==0&&a2==5)‖(k%3==0&&al==5)) {b[i]=k;i++;} }/******found******/ return k;}main(){ int a[100],k,m; m=fun(a); prinff(“The result is:\n”); for(k=0;k<m;k++) prinff(“%4d”,a[k]);printf(“\n”);}
【正确答案】正确答案:(1)a2=k/10; (2)return i;
【答案解析】解析:本题考查:取数值n的各个位;return语句,将需要返回的函数值返回给函数main。 (1)a2存放十位数,所以是a2=k/10,此处是一个书写错误。 (2)根据题意,要返回能被3整除的数的个数,从循环体中可以知道其个数是由i来计算的,所以返回的是i。