给定程序中,函数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));
参考答案:(1)999 (2)t/10 (3)x
解析: 本题中函数fun()的功能是找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,因此需要求一个三位数x的个位、十位和百位,个位数可由x%10表达式求得,十位数可由x/10表达式运算后再对10求余求得、百位数可由x/100表达式求得。
第一空:第一空处是补充while循环的终止条件,题干要求fun()函数寻找100~999之间满足条件的数x,因此循环终止条件是999,故第一空处应填“999”。
第二空:由“s1=t%10;s2= (2) %10;s3=t/100;”可知,s1求得t的个位数,s3求得t的百位数,因此s2是求t的十位数。经过(t/10)表达式运算后可得出两位数数值,然后再对这个两位数进行除10取余,即可得到变量t的十位数,因此第二空处应为“t/10”。
第三空:“if(s1+s2+s3= (3) )”是判断t是否满足题干条件“各位上数字之和为x”,因此第三空处应为“x”。
[考点] 函数功能。