标题:有序数组插入
只看楼主
编程吗
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2018-3-13
结帖率:33.33%
已结贴  问题点数:5 回复次数:2 
有序数组插入
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
     int b[20],num[20];
    int i,x,a,n,k;
     scanf("%d",&n);
     for(i=0;i<n;i++)
     {
         scanf("%d",&num[i]);
    }
     scanf("%d",&x);
     for(i=0;i<n+1;i++)
    {   
        if(x>=num[i])
        b[i]=num[i];
        else if(x<num[i])
        {
        k=i;
        b[i]=x;
        b[i+1]=num[i];
        break;
        }
    }
    for(i=n;i>k+1;i--)
    {
        b[i]=num[i-1];
    }
    for(i=0;i<n+1;i++)
    {
        printf("%d ",b[i]);
    }
    return 0;
}
题目:已有一个按升序排序的数组,含n个元素。输入整数x,将x插入数组中,使数组元素仍按升序排列。请使用数组实现。
输入
输入包含三行:
第一行是数组元素个数n(1 < n < 20)。
第二行是数组n个元素,相邻两项之间用一个空格隔开。
第三行是待插入的元素x。
输出
输出插入后数组的所有元素,相邻两项之间用一个空格隔开。

问题:大佬们这个代码为什么没有满分
搜索更多相关主题的帖子: 插入 num for 数组 元素 
2018-05-01 20:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
#include <stdio.h>
int main(int argc, char *argv[])
{
    int num[20];
    int i,n,x;
    scanf("%d",&n);
    for(i=0; i<n; i++)
        scanf("%d",&num[i]);
    scanf("%d",&x);
    for(i=n; i>0&&num[i-1]>x; --i)
            num[i]=num[i-1];
    num[i]=x;
    for(i=0; i<n+1; ++i)
        printf("%d ",num[i]);
    return 0;
}
2018-05-01 21:52
woshewlcab
Rank: 1
等 级:新手上路
帖 子:2
专家分:8
注 册:2018-5-2
得分:3 
#include <stdio.h>
int main(){
    int num[30];//添加一点预留空间
    int len=0,i,x;
    while(len<1||len>20)scanf("%d",&len);    //限制,输入错误时无法进入下一步
    for(i=0;i<len;i++)
     {
         scanf("%d",&num[i]);
     }
     //printf("数组输入完成/n");//预留,防止输入错误
    scanf("%d",&x);
    //思路是,从数组的最后面开始检索,直到遇见合适的位置.意外情况是插入的值==最小
    for(i=len-1;i>=0;i--){
        num[i+1]=num[i];
        if(num[i]=<x){
            num[i]=x;
            break;
        }
    }
    if(i==0)num[i]=x;
    len++;
    //输出
    for(i=0;i<len;i++){
        printf("%d",num[i]);
    }
    printf("\n");
    return 0;
}
//按照楼上的思路写出来的,用了好长时间
//
2018-05-02 16:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486544-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.170133 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved