#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{
int i,n,p1,p2,p3,k,k1;
int a[i],b[i];
scanf("%d\n",&n);
for(i=0;i<3;i++)
scanf("%d %d\n",&a[i],&b[i]);
p1=ceil(n/a[0])*b[0];
p2=ceil(n/a[1])*b[1];
p3=ceil(n/a[2])*b[2];
k=(p1<p2)?p1:p2;
k1=(k<p3)?k:p3;
printf("%d\n",k1);
return 0;
}
修改见注释处,供参考:
#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{
int i, n, p1, p2, p3, k, k1;
int a[3], b[3]; //int a[i], b[i];
scanf("%d", &n); //scanf("%d\n", &n);
for (i = 0; i < 3; i++)
scanf("%d %d", &a[i], &b[i]);//scanf("%d %d\n", &a[i], &b[i]);
p1 = ceil(n / a[0]) * b[0];
p2 = ceil(n / a[1]) * b[1];
p3 = ceil(n / a[2]) * b[2];
k = (p1 < p2) ? p1 : p2;
k1 = (k < p3) ? k : p3;
printf("%d\n", k1);
return 0;
}
ceil函数的原型是:double ceil(double x);
而你代码中的p1,p2,p3确实int类型,一个double值赋值给int类型会出现问题
而且int a[i],b[i];i是个变量,在C/C++中不能声明一个未知长度的数组。
所以可以按照以下作为参考:
int i, n, p1, p2, p3, k, k1;---改为:int i,n,k,k1; double p1,p2,p3;
int a[i],b[i];---改为:int a[3],b[3];