czb08191314 2023-08-26 04:33 采纳率: 88.5%
浏览 2
已结题

c语言pat基础题0826L1056

img

img


#include<stdio.h>
struct person{
    int num;
    char name[8];
}p[10000];
int main(){
    int N,sum=0,bav,min;
    int flag;
    scanf("%d\n",&N);
    for(int i=0;i<N;i++){
        scanf("%s %d\n",p[i].name,&p[i].num);
    }
    for(int i=0;i<N;i++){
        sum+=p[i].num;
    }
    bav=sum/(2*N);
    int dv[N];
    for(int i=0;i<N;i++){
        dv[i]=p[i].num-bav;
    }
    min=dv[0];
    for(int i=1;i<N;i++){
        if(min>dv[i]){
            min=dv[i];
            flag=i;
        }
    }
    printf("%d %s\n",bav,p[flag].name);
}

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

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-08-26 15:40
    关注

    修改如下,供参考:

    #include <stdio.h>
    #include <stdlib.h>  // 修改
    struct person{
        char name[8];
        int  num;
    }p[10001];    // 修改
    int main()
    {
        int N,sum=0,min,flag;
        float bav;
        scanf("%d", &N); //scanf("%d\n",&N); 修改
        for(int i = 0;i < N; i++){
            scanf("%s %d", p[i].name, &p[i].num);
            //scanf("%s %d\n",p[i].name,&p[i].num); 修改
            sum += p[i].num;
        }
        //for(int i=0;i<N;i++){ // 修改
        //    sum+=p[i].num;
        //}
        bav = sum/(2.0 * N); // 修改
        int dv = abs(bav - p[0].num);   //int dv[N];
        flag = 0;            // 修改
        for(int i = 1;i < N; i++){
            //dv[i]=p[i].num-bav;
            if (dv > abs(bav - p[i].num)){ // 修改
                dv = abs(bav - p[i].num);
                flag = i;
            }
        }
        //min=dv[0];           // 修改
        //for(int i=1;i<N;i++){
        //    if(min>dv[i]){
        //        min=dv[i];
        //        flag=i;
        //    }
        //}
        printf("%d %s\n",(int)bav,p[flag].name);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月5日
  • 已采纳回答 8月28日
  • 创建了问题 8月26日

悬赏问题

  • ¥15 yolo v5中labelimg的作用
  • ¥30 VBA网抓application/json的网抓怎么写!
  • ¥15 国赛c题2021,没有理解这一串代码的意思,这样报错该怎么解决(语言-matlab)
  • ¥15 一、执行完中断程序后如何继续运行,二、中断结束后如何跳过中断触发前的点位(LOW点不要继续运行,可以运行UP点)(关键词-程序运行)
  • ¥15 if为什么跳过if 直接执行else 中文
  • ¥200 解决登录微信老版本限制封号问题
  • ¥15 mysql中时间处理问题
  • ¥20 讲解此音频放大电路原理及关键部分
  • ¥15 rtsp 转 m3u8 执行后卡在Decoding VUI
  • ¥20 微信小程序转发链接问题,已禁止转发仍能转发的场景