原题大意:
将卡片压在桌边并伸出。最长是伸出一半。然后如果加上n个卡片,那么伸出最长的长度可以这样开算:1/2+1/3+1/4+……1/(n);求最少需多少卡片。
这个题目没多少其他的限制。可以理解为水题,所以一般代码不写。
以下讲解以下代码的妙处。
#include<stdio.h>
main()
{
float b;
int i=0,n[10],z;
while(n[i]=scanf("%f",&b),b)
{
while(b>0)b-=1.0/(++n[i]);
i++;
}
for(z=0;z<i;z++)
printf("%d card(s)\n",n[z]-1);
}
scanf()在输出是会返回1,则每完成一次内部循环,n[i]就会被初始化1.
逗号表达式做出很好的处理。当输入b为0时,循环结束。