北大PUK1003题
这里先附上网址http://以下是我的程序:
#include<stdio.h>
int main()
{
int i,j=1;
float a[5],n=2,s=0.5; /*这里定义数组来存放输入的值*/
for(i=0;i<5;i++)
scanf("%f",&a[i]);
for(i=0;i<5;i++)
{
if(a[i]<0.01||a[i]>5.20) /*如果该数超出范围就直接换行*/
printf("\n");
else
for(;a[i]>s;) /*其他情况如果比s大就继续*/
{
n++;
s+=(1/n); /*s拿来累加*/
j++; /*这是计算片数的*/
if(a[i]<=s) /*当再加上一个数,a【i】被超过,就输出*/
printf("%d card(s)\n",j);
if(a[i]>=0.01&&a[i]<=0.5)
printf("%d card(s)\n",j);
}
}
return 0;
}
这样的话如果我输入1.2.3.4.5.没问题。
但是输入5.4.3.2.1的话就只能输出5的值。
我觉得就是s和j没还原。然后我改了一小小的地方
#include<stdio.h>
int main()
{
int i,j=1;
float a[5],n=2,s=0.5; /*这里定义数组来存放输入的值*/
for(i=0;i<5;i++)
scanf("%f",&a[i]);
for(i=0;i<5;i++,s=0.5,j=1)
{
if(a[i]<0.01||a[i]>5.20) /*如果该数超出范围就直接换行*/
printf("\n");
else
for(;a[i]>s;) /*其他情况如果比s大就继续*/
{
n++;
s+=(1/n); /*s拿来累加*/
j++; /*这是计算片数的*/
if(a[i]<=s) /*当再加上一个数,a【i】被超过,就输出*/
printf("%d card(s)\n",j);
if(a[i]>=0.01&&a[i]<=0.5)
printf("%d card(s)\n",j);
}
}
return 0;
}
结果输入1.2.3.4.5就出现了我不知道的情况。。。求高人解救~~~半夜了,都被这个搞死了