错误代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int m,k,day;
scanf("%d %d",&m,&k);
day =0;
while (m>=k)
{
day = day+(m-m%k);
m=m/k+m%k;
}
printf("%d",day+m);
return 0;
}
正确代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int m,k,day;
scanf("%d %d",&m,&k);
day =0;
while (m>=k)
{
day = day+(m-m%k);
m=m/k+m%k;
}
printf("%d",day+m);
return 0;
}
老师分析:嗯,第一个程序有两个大问题,第一个问题是B物就是你那个while循环的条件应该是will m大于零吧,你写成了把零付给M,那么这个表达式就是零,那我要条件就不成立,我要循环一次都不做,嗯,第二个大问题呢,是你没有想明白。嗯,就是你第一次循环之前,你把M负给了D,所以你第一次循环的时候,你把那个M除以K的整数商加给D确实没错,嗯,但是你从第二次循环开始,你仅仅是把M除以K的商加给D就是错的,因为你后面算出来,那个M没有加。