aaasdfgzzy 2022-03-31 10:54 采纳率: 79.4%
浏览 66
已结题

定义长度为10的有序数组,已有其中5个数值分别为1 3 5,7,9根据用户的输入依次插到有序数组的正确位置上,当输入-1时,停止插入操作,输出实现数据。

//前面的数据都正确,插入第五个数据时插入位置正确,但是数值变为0了,求改错

#include<stdio.h>
int main()
{
    int k=0,x,a[10]={1,3,5,7,9},i,j,c;
    printf("原来的数组为:\n");
    for(i=0;i<5;i++)
        printf("%d ",a[i]);
    printf("\n");
    for(k=0;k<5;)
        for(i=0;i<5;i++)
        {
            printf("请输入一个数值:\n");
            scanf("%d",&x);
            k++;
            if(x==-1)
            {
                printf("停止插入操作\n");
                return 0;
            }
            else for(j=0;j<5+k;j++)
            {
                if(a[j]>=x) 
                {
                    for(c=5+k;c>j;c--)
                        a[c]=a[c-1];
                    a[j]=x;
                    break;
                }
            }
        printf("插入后的数据为:\n");
        for(i=0;i<5+k;i++)
            printf("%d ",a[i]);
        printf("\n");
        }
    return 0;
}


  • 写回答

3条回答 默认 最新

  • Dana_ranmo 2022-03-31 11:14
    关注

    22-28行只判断了在数组头和中间插入的情况,没有考虑在末尾插入的情况
    在28行后面插入:

    if (j == 5+k-1) {
                        a[j] = x;
                    }
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月14日
  • 创建了问题 3月31日

悬赏问题

  • ¥20 VM虚拟机崩溃,重新登录故障,移除加密访问。
  • ¥15 双VSG并网系统,matlab,稳态工作点求解
  • ¥15 关于#Stata#的问题:数据是面板数据,SPSS里面不能控制年份和时间,所以只能用Stata做
  • ¥20 基于基于NioEventLoop线程阻塞问题
  • ¥20 我需要"hill48屈服模型 等向强化 非线性硬化"的abaqus本构子程序(umat或者vumat)对应的理论推导过程。
  • ¥15 基于ucc28019的pfc电路中芯片一直不工作
  • ¥15 yolov8在3588板子端c++推理报错
  • ¥50 unitywebrequest分段下载导致报错,如何解决?
  • ¥15 错误使用 gretna_GUI_PreprocessInterface>RunBtn_Callback
  • ¥15 WPF如何用Chart绘画出Y轴的左边数据