填空题 从键盘输入一组无符号整数并保存在数组arr[N]中,以整数0结束输入,即第N+1个数是0,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入函数proc()。请补充函数proc(),其功能是:从数组arr中找出个位和十位的数字之和大于5的所有无符号整数,结果保存在数组yy中,其个数由函数proc返回。
例如,当arr[8]={13,1,205,252,2,333,4444,21}时实际输入时,数与数之间用Enter键分开,bb[4]={252,333,4444}。
注意:部分源程序给出如下。
请勿改动函数main()和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#define M 1000
int proc(int arr[], int bb[], int num)
{
int i, m=0;
int g, s;
for(i=0; i<num; i++)
{
g= 1;
s=arr[i]/10%10;
if((g+s)>5)
2;
}
return 3;
}
void main()
{
int arr[M];
int yy[M];
int num=0, m=0, i=0;
printf("Input number:/n");
do
{
scanf("%u", &arr[num]);
}
while(arr[num++]!=0);
m=proc(arr, yy, num);
printf("/nyy=");
for(i=0; i<m; i++)
printf("%u", yy[i]);
}
【正确答案】
【答案解析】arr[i]%10 bb[m++]=arr[i] m[解析] 将一个整数对10取余,则得到该整数的个位数,将一个整数除以10再对10取余,则得到该整数的十位数。由程序可以看出,变量s保存了整数的十位数,所以应该将整数的个位数保存在变量g中;根据题意,当整数的个位与十位的数字之和大于5时,则将该整数保存到数组bb中;变量m记录了满足条件的无符号整数的个数,题目要求将满足条件的无符号整数的个数由proc()函数返回,所以函数返回m。