猴子吃桃程序_扩展2
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的天数是0和负数)
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的天数是0和负数)
#include <stdio.h>
int main()
{
int day,x=1,ret=0;
printf("Input days:\n");
ret=scanf("%d",&day);
while(1)
{
while(ret!=1)
{
while(getchar()=='\n');
printf("Input days:\n");
ret=scanf("%d",&day);
}
if(day<=0)
{
printf("Input days:\n");
ret=scanf("%d",&day);
}
else
goto end;
}
end:
while(day>1)
{
x=(x+1)*2;
day--;
}
printf("x=%d\n",x);
return 0;
}
ret 为读入变量的个数
getchar()函数在while循环中不断读取缓冲区的字符,然后与换行符比较,
当这个字符是 '\n' , 结束输入