大一C语言指数计算练习

描述:计算表达式x^y的值,分别输出它们的整数部分和小数部分。
输入有若干行,每行两个数x、y。
当x<=0时,输出"输入不合要求.",否则输出x^y的它们的整整部分和小数部分。按%lf格式输出。如12.345的输出为"整数部分为12 小数部分为0.345000".
1.1 2
3.6 7.8
-3 0.5
整数部分为1 小数部分为0.210000
整数部分为21835 小数部分为0.317236
输入不合要求.
下面是我写的代码:
if x<=0
printf输入不合要求.
else val=pow(x,y)
fraction=modf(val,&integer)
printf("整数部分为%.0lf 小数部分为%lf\n",integer,fraction)
问题:当我只输入一行数据时可以正常运行,但当我一次性输入多行数据时,无法正常运行。

#include <stdio.h>
#include <math.h>
int main()
{
     float a[100];
     float b[100];
     float m,n;
     int i,count = 0;
     while(scanf("%f%f",&m,&n) != EOF)
    {
          a[count] = m;
          b[count] = n;
          count++;
    }
    for( i=0;i<count;i++)
    {
          if(a[i] <= 0)
          {
            printf("不合要求\n");
            continue;  
        }
          float f = pow(a[i],b[i]);
          printf("整数部分为%d,小数部分为%f\n",(int)f,f-(int)f);
    }
    return 0;
}