填空题 下列给定程序中,函数fun的功能是:找出100~999(含100和999)所有整数中各位上数字之和为x(x为正整数)的整数,并输出;符合条件的整数个数作为函数值返回。
例如,当x值为5时,100~999各位上数字之和为5的整数有:104,113,122,131,140,203,212,221,230,302,311,320,401,410,500,共有15个。当x值为27时,各位数字之和为27的整数是:999,只有1个。
请在下划线处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
int fun(int x)
{int n,s1,s2,s3,t;
n=0;
t=100;
/********found********/
while(t<= 1){
/********found********/
s1=t%10;s2=( 2)%10;
s3=t/100;
/********found********/
if(s1+s2+s3== 3)
(printf("%d",t);
n++;
}
t++;
}
return n;
}
main()
(int x=-1;
while(x<0)
{printf("Please input(x>0:");
scanf("%d",&x);}
printf("/nThe result is:%d/n",fun(x));
}
}
【正确答案】
【答案解析】999 t/10 x [考点]
本题关键字有:while循环语句;数n各位上数值的表示方法;if语句。三位数n的个位、十位、百位分别用n%10、n/10%10、n/100表示。
[解析]
填空1:根据题意要找出100~999之间且包含100和999符合要求的数,所以循环条件是t<=999。
填空2:三位数的十位存放在变量s2中,所以填入s2=(t/10)%10;。
填空3:题目要求找出各位上数字之和为x的整数,所以条件表达式是s1+s2+s3==x。