| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:【初学者】   一道有关数组的题求指点。
只看楼主 加入收藏
hypocrisy
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-7
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:5 
【初学者】   一道有关数组的题求指点。
Description
 
已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
 
Input
 
第一行,原始数列。
第二行,需要插入的数字。
 
Output
 
排序后的数列
 
Sample Input
 
1 7 8 17 23 24 59 62 101
50
Sample Output
 
1
7
8
17
23
24
50
59
62
101
Source

我编的答案:

#include<stdio.h>
int main()
{
    int a[10];
    int i,n;
    for(i=0;i<=8;i++)
    {
        scanf("%d",&a[i]);}
    scanf("%d",&n);
    for(i=0;i<=8;i++)
        if(a[i+1]>n&&n>a[i])
        {
            
            a[i+2]=a[i+1];a[i+1]=n;
            
        }
        for(i=0;i<=9;i++)
        {printf("%d",a[i]);
        printf("\n");}
        return 0;
}

运行结果不正确,求指教
搜索更多相关主题的帖子: include 元素 
2012-11-07 17:36
紫衣016
Rank: 1
等 级:新手上路
帖 子:10
专家分:9
注 册:2012-10-25
收藏
得分:5 
你在插入前,需要先将插入位置之后的数向后移动,然后再插入。
2012-11-07 19:48
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:5 
试试这段行不
程序代码:
#include<stdio.h>
main()
{
    int a[9],b[10];
    int i,n,m;
    static j;
    for(i=0;i<9;i++)
    {
        scanf("%d",&a[i]);

    }
    for(i=0;i<9;i++)
    printf("%d\t",a[i]);
    scanf("%d",&n);
    for(j=0;j<9;j++)
    {
        if(a[j]<n)b[j]=a[j];
        else
        { b[j]=n;
        break;}
    }j++;
    for(;j<10;j++)
    b[j]=a[j-1];
    for(i=0;i<10;i++)
    printf("%d\t",b[i]);
    return 0;}
for(i=0;i<=8;i++)
        if(a[i+1]>n&&n>a[i])
        {
            
            a[i+2]=a[i+1];a[i+1]=n;
            
        }
你的这段程序有问题啊, 首先i的最大值是8,那你最后的数组岂不是要丢一个数?
第二满足if条件的情况只有一次,那么满足if条件之后呢???怎么办??剩下的数组元素会原封不动的保存下来,那么第一个大于n的数不是没了吗?

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-07 20:28
未名湖的云
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:130
专家分:190
注 册:2012-10-11
收藏
得分:5 
//相信楼主求救的题应该是各个数不想等吧~~~
//这是我个人的见解~~~,不知对楼主有帮助么?~~
#include<stdio.h>
#define N 5
void main()
{
    int a[N+1];//这是声明一个插入后的数组  N+1   增加了一个元素嘛
    int i,j,n;
    printf("请输入5个数(要排好序的哦~~~):\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("请输入要插入的数:\n");
    scanf("%d",&n);
    for (i=0;i<N;i++)//对数组里的是循环
    {
        if (n<a[i]&&i==0)//如若输入的数比a[0]小,则原来的数组里的数都要向后移动一下,方法是从a[n-1]开始
        {
            for (j=N;j>0;j--)
            {
                a[j]=a[j-1];
            }
            a[i]=n;
            break;//跳出循环
        }
         if ((a[i+1]>n)&&(a[i]<n))//这个就是在头和尾之间的数
        {
            for (j=N;j>i+1;j--)
            {
                a[j]=a[j-1];
            }
            a[i+1]=n;
            break;//跳出循环
        }
        if(i==N-1)//如果要插入的数是最大的,则直接插入最后一位
        {
            a[N]=n;
            break;//跳出循环
        }
    }
        printf("输入要插入的数后新的数组为:\n");
        for(i=0;i<=N;i++)
        {
            printf("%d",a[i]);
            printf("\n");
        }
}
2012-11-07 21:12
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:5 
等你学了链表后这个问题就不是问题了

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-07 21:19
未名湖的云
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:130
专家分:190
注 册:2012-10-11
收藏
得分:0 
回复 楼主 hypocrisy
//相信楼主求救的题应该是各个数不想等吧~~~
//这是我个人的见解~~~,不知对楼主有帮助么?~~
#include<stdio.h>
#define N 5
void main()
{
    int a[N+1];//这是声明一个插入后的数组  N+1   增加了一个元素嘛
    int i,j,n;
    printf("请输入5个数(要排好序的哦~~~):\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("请输入要插入的数:\n");
    scanf("%d",&n);
    for (i=0;i<N;i++)//对数组里的是循环
    {
        if (n<a[i]&&i==0)//如若输入的数比a[0]小,则原来的数组里的数都要向后移动一下,方法是从a[n-1]开始
        {
            for (j=N;j>0;j--)
            {
                a[j]=a[j-1];
            }
            a[i]=n;
            break;//跳出循环
        }
         if ((a[i+1]>n)&&(a[i]<n))//这个就是在头和尾之间的数
        {
            for (j=N;j>i+1;j--)
            {
                a[j]=a[j-1];
            }
            a[i+1]=n;
            break;//跳出循环
        }
        if(i==N-1)//如果要插入的数是最大的,则直接插入最后一位
        {
            a[N]=n;
            break;//跳出循环
        }
    }
        printf("输入要插入的数后新的数组为:\n");
        for(i=0;i<=N;i++)
        {
            printf("%d",a[i]);
            printf("\n");
        }
}
2012-11-07 21:31
快速回复:【初学者】   一道有关数组的题求指点。
数据加载中...
 
   



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

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