!{*(O^O)*}! 2024-12-03 13:16 采纳率: 88.5%
浏览 36
已结题

数组增加元素 时间限制:C/C++ 1000MS 内存限制:C/C++ 256MB

描述

班里转来一位新同学,班主任安排这位同学的座位,请你输出安排好新同学座位后每位同学的学号。

输入描述

四行。
第一行为一个整数n(0<n<60)代表班级的同学人数;
第二行为n个整数代表班级里每位学生的学号;
第三行为一个整数m代表新来同学的学号;
第四行两个整数,第一个整数p,第二个整数位q,若p为1,则新同学坐在第q个同学的前面,若p不为1,则新同学坐在第q个同学的后面。

输出描述

一行,新同学安排好后,班级里每位同学的学号。

样例输入 1

5
7 1 3 14 5
56
0 2
样例输出 1

7 1 56 3 14 5
提示

【数据规模与约定】
对于100%的数据,满足0<n<60。

  • 写回答

1条回答 默认 最新

  • 梦幻精灵_cq 2024-12-04 14:16
    关注

    我只会点python ,尝试用python 做了一遍:

    img


    img


    python题解脚本

    #!/usr/bin/env python3
    
    date = '''5
    7 1 3 14 5
    56
    0 2''' # 输出 7 1 56 3 14 5
    print(
             f"\n\n{' 数组增加元素 ':*^36}"
          f"\n\n输入样例:\n{date}") 
    
    # 数据梳理 #
    date = date.split('\n')
    n = int(date[0]) # 班级同学人数0 < n < 60
    students = list(map(int, date[1].split())) # 班级同学列表(学号列表)
    new_stu = int(date[2])
    p, q = map(int, date[-1].split()) # p,新同学排位前后“开关”;q,新同学排位入口
    print(
             f"\n数据梳理:"
             f"\n{n = }\n{students = }"
             f"\n{new_stu = }\n{p = }, {q = }"
             )
    
    # 新同学排位 #
    new_index = q-1 if p == 1 else q # 确认新同学排位入口
    print(f"\n{new_index = }")
    students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)
    students = ' '.join(map(str, students))
    print(
             f"\n输出:"
             f"\n{students = }"
             f"\n\n{'':=^42}"
             )
    
    
    
    
    # 精细解题 #
    
    def data_input() -> tuple:
        ''' 数据输入 '''
        print(f"\n\n{' 数组增加元素 ':*^36}") 
        
        try:
            n = int(input(
                         f"\n输入班级同学人数"
                         f"\n{'(0 < n < 60):':>15}"))
        except ValueError:
            raise ValueError(f"{' 请输入整数 ':-^37}")
        
        if not (0 < n < 60):
            raise ValueError(f"\n{' 班级同学人数必须在0到60之间 ':-^30}")
        
        students = list(map(int, input(f"输入班级同学学号:\n{'如7 1 3 14 5':>27}\n{'':>18}").strip().split())) # 班级同学列表(学号列表)
    
        if len(students) != n:
            raise ValueError(f"\n{' 输入的学号数量与班级人数不符 ':-^28}")
        
        try:
            new_stu = int(input('输入新同学学号:'))
        except ValueError as e:
            raise ValueError(f"{' 请输入整数 ':-^37}")
        
        try:
            p, q = map(int, input(f"输入p和q的值,用空格分隔\n{'(q为大于等于1的整数)':>10}").strip().split())
        except ValueError as e:
            raise ValueError(f"{' 请输入两个整数':-^35}")
        if q < 1:
            raise ValueError(f"{' q的值必须大于等于1 ':-^34}")
        
        return n, students, new_stu, p, q
    
    
    def in_date():
        ''' 递归数据输入函数 '''
        try:
            return data_input()
        except ValueError as e:
            print(
                      f"\n{e}"
                      f"\n\n{' 请根据提示重新输入 ':.^33}"
                      )
            return in_date()
    
    # 调用递归函数并获取数据
    n, students, new_stu, p, q = in_date()
    
    # 根据q的值插入新同学
    new_index = q-1 if p == 1 else q # 保证当p不是1时,在q之后安排新同学入座
    students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)
    
    # 打印结果
    print(
             f"\n输出:"
             f"\n{' '.join(map(str, students))}"
             f"\n\n{'':=^42}"
             )
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 创建了问题 12月3日