|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
int n,a,b,o,l[3]={0},min;
scanf("%d",&n);
for(int i=0;i<3;i++)
{
scanf("%d %d",&a,&b);
l[i]=ceil(n/a)*b;
min =l[0];
for(int j=0;j<3;j++)
{
if(min>l[j])
min=l[j];
}
}
printf("%lf",min);
return 0;
}
应该某个地方思路错了,求指正
在你的代码中,出现了一些问题:
1. 数组 l 的定义应该是 double l[3] = {0},因为 ceil() 函数返回的是 double 类型的值。
2. l 数组的赋值操作是错误的,应该使用下标对单个元素进行赋值。
3. ceil() 函数需要包含头文件 math.h。
4. printf() 函数中输出 %lf 会输出一个 double 类型的值,但是题目要求输出一个整数,所以应该使用 %d。
5. min 没有初始化,如果 l 数组中的值都大于 n,那么 min 的值有可能会是一个随机值,因此需要初始化 min 为一个较大的值。
请参考以下修改后的代码:
- #include <stdio.h>
- #include <math.h>
- int main() {
- int n, a, b;
- double l[3] = {0};
- scanf("%d", &n);
- for (int i = 0; i < 3; i++) {
- scanf("%d %d", &a, &b);
- l[ i] = ceil(n * 1.0 / a) * b;
- }
- int min = l[0];
- for (int j = 0; j < 3; j++) {
- if (min > l[j])
- min = l[j];
- }
- printf("%d", min);
- return 0;
- }
复制代码
在修改后的代码中,我们通过使用 ceil(n * 1.0 / a) 计算出购买铅笔的最小花费,然后在 l 数组中保存这个值。接着,我们遍历 l 数组,找到其中的最小值并将其输出。
需要注意的是,由于可能存在整数除法向下截断的问题,因此需要将 n 转换成浮点数,即 n * 1.0 / a,这样才能保证计算结果是正确的。
如果问题已经解决,请设置最佳答案
|
-
|