解释一下c程序

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:29:14
函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。
例如,当test=89431676时,结果应该为:sum5=0 sum6=2 sum7=1。

# include <stdio.h>
int sum5,sum6,sum7;
void fun(long test)
{
sum5=sum6=sum7=0;
while(test)
{
switch(test%10)
{
case 5:
sum5++;
break;
case 6:
sum6++;
break;
case 7:
sum7++;
}
test /=10;
}
}
main()
{
long test=89431676L;
fun(test);
printf("\nThe count result :\n");
printf("test=%ld sum5=%d sum6=%d sum7=%d\n",test,sum5,sum6,sum7);
}
为什么switch里是“test%10”

第一次test%10(这是取余)就是取test的个位, 比如说test为123时,那么test%10就等于3,然后test/=10(这是取整),这时test就为12了,就这样循环下去,第二次test%10就等于2了,test就为1.就个循环就是从低位到高位一个数字一个数字的检查是不是等于5、6或者7。
当余数为5的时候,sum5就加1,当余数为6的时候,sum6就加1,当余数为7的时候,sum7就加1.

test%10是取余数,也可以理解为取得变量test=89431676L的最后一位,每次循环后还有一个操作就是 test /= 10;这个作用就是把最后一位数字去掉以便开始接下来的循环操作,第一次循环余数是6,而test=8943167,第二次余数是7,而test=894316,这样就能起到统计每一位数字的目的了.

test%10是求test的个位上的数字。