快乐打码 2023-02-24 11:08 采纳率: 69%
浏览 24
已结题

请问我这么写为什么是错的,这样写有说明问题吗

本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。

输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。

输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7


#include<stdio.h>
int main(){
    int n,a[22],x,i,j;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    for(i=0;i<n;i++){
        if(x<a[i]){ 
            for(j=n-1;j>=i;j--){
                a[j+1]=a[j];
            }
            a[j]=x;
            break;
        }
    }
    if(i==n)
        a[n]=x;
    for(i=0;i<n;i++){
        printf("%d ",a[i]);
    }
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 於黾 2023-02-24 11:23
    关注

    你自己的代码,自己不知道先运行一下试试看吗
    例题里给的输入,你的代码输出结果是1 3 4 4 5
    你这代码问题多了,插入了一个数,n不自增,还是5,那怎么可能对呢
    插入的位置也不对

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 专家已采纳回答 2月27日
  • 创建了问题 2月24日