C语言问题:小马买冰淇淋

这一天,阳光明媚,风和日丽,小马想去买一堆冰淇淋带回家,老板和他说,我们家的冰淇淋最近正在做活动,A元一个,B元m个
小马想至少买n个冰淇淋,但是又想花最少的钱,你能帮助他写个程序算出他最少要花多少钱呢
输入格式
第一行是T表示有T组数据
接下来t行,每一行分别是n,m,A,B
输出格式
你要对每次结果算出买n个冰淇淋最少要花多少钱
输入样例 复制
2
5 2 2 3
6 2 2 3
输出样例 复制
8
9
数据范围与提示
T<=100
0≤A,B≤1000000,0≤n,m≤1000
对于5 2 2 3 意思是要买5个冰淇淋 A类型冰淇淋2元一个 B类型冰淇淋是3元2个 那么买五个最合适的方式是先买2种B类型 再买1种A类型
6 2 2 3 意思是要买6个冰淇淋 A类型冰淇淋2元一个 B类型冰淇淋是3元2个 那么买6个最合适的方式是先买3种B类型

用这个公式计算
sum = n / m * b + n % m * a

你题目的解答代码如下:

#include<stdio.h>
int main()
{
    int i,t,n,m,a,b,sum;
    scanf("%d", &t);
    for(i=0;i<t;i++){
        scanf("%d%d%d%d", &n,&m,&a,&b);
        sum = n / m * b + n % m * a;
        printf("%d\n",sum);
    }
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img


#define MAX_T 100
#include<stdio.h>
int main()
{
    int arr[MAX_T][4] = { 0 }; int i = 0; int sum = 0;
    int T = 0;
    do
    {
        scanf("%d", &T);
        
    } while (T > MAX_T||T<=0);
    
    again:
    for (i = 0; i < T; i++)
    {
        int j = 0;
        for (j = 0; j < 4; j++)
        {
            scanf("%d", &arr[i][j]);
            if (arr[i][j] < 0 || arr[i][0]>1000000 || arr[i][1]>1000000 || arr[i][2]>1000 || arr[i][3] > 1000 || arr[i][0] < arr[i][1])
                goto again;
            
        }
    }
    
    for (i = 0; i < T; i++)
    {
        sum =( arr[i][0] / arr[i][1] * arr[i][3] )+ (arr[i][0] % arr[i][1] * arr[i][2]);
        printf("%d\n", sum);
    }
    
    

    return 0;
}

希望对你有用,感谢你的采纳


#include<stdio.h>
#include <stdlib.h>
int main()
{
    int i,t,n,m,a,b,sum,*op;
    scanf("%d", &t);
    if (t <= 0)
    {
        return -1;
    }

    op = (int *)malloc(sizeof(int) * t);
    for(i=0;i<t;i++){
        scanf("%d%d%d%d", &n,&m,&a,&b);
        sum = n / m * b + n % m * a;

        op[i] = sum;
    }

    for(i=0;i<t;i++){
        printf("%d\n",op[i]);
    }
    free(op);
    return 0;
}

运行结果

img