c语言pat基础题0828L1069

img

img

img


#include<stdio.h>
int main(){
    int arr[4],lowpress,tv;
    int dv1,dv2,t,cnt=0,dv_flag,cnt_flag,arr1[4];
    //扫描数组和其他元素
    for(int i=0;i<4;i++){
        scanf("%d ",&arr[i]);
    }
    scanf("%d %d\n",&lowpress,&tv);
    //数组赋值给新数组,以便未来排序打乱后,计算轮胎位置
    for(int i=0;i<4;i++){
        arr1[i]=arr[i];
    }
    //计算低于最低胎压的轮胎数,如果存在一个,记录他的胎数
    for(int i=0;i<4;i++){
        if(arr[i]<lowpress){
            cnt++;
            if(cnt==1){
                cnt_flag=i+1;
            }
        }
    }
    //数组值递增排序
    for(int i=0;i<4;i++){
        for(int j=i+1;j<4;j++){
            if(arr[i]>arr[j]){
                t=arr[i];
                arr[i]=arr[j];
                arr[j]=t;
            }
        }
    }
    //求第一大差值和第二大差值
    dv1=arr[3]-arr[0];
    dv2=arr[3]-arr[1];
    //根据最大差值寻找轮胎序数
    for(int i=0;i<4;i++){
        if(arr1[i]==arr[0]){
            dv_flag=i+1;
        }
    }
    /*
    第一大差值小于阈值且低于最低气压轮胎数为零则正常;
    差值:第一大差值大于阈值,且第二大差值小于阈值,输出差值对应的轮胎序数;
    
    */
    if(dv1<tv&&cnt==0){
        printf("Normal");
    }else if(dv1>tv&&dv2<=tv){
        printf("Warning: please check #%d!",dv_flag);
    }else if(cnt==1){
        printf("Warning: please check #%d!",cnt_flag);
    }else if((dv1>tv&&dv2>tv)||cnt>=2){
        printf("Warning: please check all the tires!");
    }
}

我的代码出现问题,本题希望可以得到大家的指导,谢谢你的帮助!

供参考 :

#include <stdio.h>
int main()
{
    int i, TP[4], minalm_TP, TP_th, TP_max, ans, flg;
    for (i = 0; i < 4; i++) {
        scanf("%d", &TP[i]);
        if (i == 0 || TP_max < TP[i])
            TP_max = TP[i];
    }
    scanf("%d %d", &minalm_TP, &TP_th);
    for (i = 0, ans = 0, flg = 0; i < 4; i++) {
        if (TP_max - TP[i] > TP_th || TP[i] < minalm_TP) {
            ans++;
            flg = i;
        }
    }
    if (ans == 0)
        printf("Normal");
    else if (ans == 1)
        printf("Warning: please check #%d!", flg + 1);
    else if (ans >= 2)
        printf("Warning: please check all the tires!");
    return 0;
}

【以下回答由 GPT 生成】

这段C语言代码的功能是根据输入的指定条件来判断轮胎的状态。它的运行逻辑如下:

  1. 声明了一些变量:arr[4]是一个整型数组用来存储轮胎的气压值,lowpresstv是两个整型变量分别表示最低气压和阈值,dv1dv2是两个整型变量用来存储差值,tcnt是两个临时变量,dv_flagcnt_flag是两个整型变量用来存储轮胎的序号,arr1[4]是一个整型数组,用于未来的排序和计算轮胎的位置。

  2. 使用for循环遍历输入,将指定数量的轮胎气压值存储到arr数组中。

  3. 输入最低气压值lowpress和阈值tv

  4. arr数组的值复制给arr1数组。

  5. 使用for循环计算低于最低气压的轮胎数量cnt,如果存在一个,则记录它的序号cnt_flag

  6. 使用嵌套的for循环对arr数组进行递增排序。

  7. 计算第一大差值dv1和第二大差值dv2

  8. 使用for循环查找轮胎序号dv_flag

  9. 利用条件分支语句进行判断:

  10. 如果第一大差值dv1小于阈值tv且低于最低气压轮胎数为零,则输出"Normal"。
  11. 如果第一大差值dv1大于阈值tv且第二大差值dv2小于阈值tv,则输出差值对应的轮胎序号dv_flag

  12. 返回0表示程序正常结束。

以上是该代码的功能和运行逻辑的解释。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^