【考点分析】 本题考查对多个整数的筛选以及统计。考查的知识点主要包括:多位整数的分解算法,逻辑表达式。
【解题思路】 此题属于4位数的筛选类题型。解此题需主要解决2个问题:问题1如何取得4位数的各个数位数字;问题2如何通过条件(千位数字与百位数字之和等于个位数字与十位数字之差的10倍)筛选出满足条件的数并计算个数及和值;
分析题意"5000以下的自然数","该数存在千位数字"可知:本题的查找范围为"1000<= i < 5000"。通过问题分析,得出解此题的思路为:先求出每个数的各位数字,再根据各数位数字筛选出满足条件的数,对满足条件的数进行统计个数和累加和的运算。对于问题1通过算术运算取余和除法可以分解得到4位数的各个数位上的数字;问题2通过if条件判断语句和逻辑表达式可以实现。
【参考答案】
void countValue()
{
int i; /*循环控制变量*/
int a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/
for(i=5000;i>=1000;i--) /*依次取每一个数进行判断*/
{
a4=i/1000; /*求4位数的千位数字*/
a3=i%1000/100; /*求4位数的百位数字*/
a2=i%100/10; /*求4位数的十位数字*/
a1=i%10; /*求4位数的个位数字*/
if(a4+a3==a2+a1 && a4+a3==(a1-a4)*10)
{ /*千位数与百位数之和等于十位数与个位数之和,且千位数与百位数之和等于个位数与千位数之差的10倍*/
cnt++; /*则统计满足条件的数的个数*/
sum+=i; /*将满足条件的数求和*/
}
}
}
【易错提示】 隐含条件"自然数查找范围"的分析,分解4位数算法的使用, 对4位数筛选和排序时if结构中的逻辑表达式。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |