| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 407 人关注过本帖
标题:求这道程序题~~~*-*
只看楼主 加入收藏
yjj598889481
Rank: 1
等 级:新手上路
帖 子:57
专家分:2
注 册:2011-4-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
求这道程序题~~~*-*
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。要求在定义数组的同时对数组进行初始化,然后用户输入数值,将此数按原来的规律插入到数组之中后再把数组输出。
搜索更多相关主题的帖子: 用户 
2011-04-05 20:49
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:2 
什么叫原来的规律?是用户一时半会摸不出来的规律吗?

反正甭管什么规律,说到底就是个偏序关系。一般就是插入排序的思想呗。
2011-04-05 23:33
jiangkunhgnc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:76
专家分:185
注 册:2010-8-21
收藏
得分:2 
既然是排好序的数组,那么要么降序要么升序,用二分法找到这个数在数组中应该的位置,重新声明一个数组,角标比原来大一位,然后比较,如果应该在你数字的前面,就将数字存入新数组,如果不是就将你输入的数字输入到新数组,然后其他的数字依次存入新的数组中就好了!!!
2011-04-05 23:52
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
楼主也许这样的意思。
程序代码:

root@~ #cat 1.c
#include <stdio.h>

int main (void) {

        int a[10]={ 1,3,5,6,8,9,10,10,19,20 };  //是个排序好的数组
        int i,j,n;
//打印源数组
        for(i=0;i<10;i++) { printf ("%i ",a[i]); };printf ("\n");
        scanf ("%i",&n);
//输入插入的数值n
//遍历数组, 看n与元素比较, 放入合适的位置
//插入的话需要移动数组
//大于的话直接追加在数组后面。
        for(i=0;i<10;i++) {
//如果等于
                if(a[i]==n) {
                        for(j=9;j>=i;j--) {
                                a[j+1]=a[j];
                        }
                        a[i+1]=n;
                        break;
                }
//如果在两个元素之间
                if(a[i]<n&&a[i+1]>n) {
                        for(j=9;j>=i;j--) {
                                a[j+1]=a[j];
                        }
                        a[i+1]=n;
                        break;
                }
//如果小于0号元素
                if(a[i]>n) {
                        for(j=9;j>=i;j--) {
                                a[j+1]=a[j];
                        }
                        a[i]=n;
                        break;
                }
        }
//如果大于最后的元素
                if(a[9]<n) {
                        a[10]=n;
                }

//打印插入后的数组
        for(i=0;i<11;i++) { printf ("%i ",a[i]); };printf ("\n");
        return 0;

}

root@~ #

测试:
root@~ #./1
1 3 5 6 8 9 10 10 19 20
1
1 1 3 5 6 8 9 10 10 19 20
root@~ #./1
1 3 5 6 8 9 10 10 19 20
18
1 3 5 6 8 9 10 10 18 19 20
root@~ #./1
1 3 5 6 8 9 10 10 19 20
21
1 3 5 6 8 9 10 10 19 20 21
root@~ #./1
1 3 5 6 8 9 10 10 19 20
-12
-12 1 3 5 6 8 9 10 10 19 20
root@~ #./1
1 3 5 6 8 9 10 10 19 20
5
1 3 5 5 6 8 9 10 10 19 20
root@~ #./1
1 3 5 6 8 9 10 10 19 20
7
1 3 5 6 7 8 9 10 10 19 20
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-06 00:00
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:2 
楼上的很厉害哦

                                         
===========深入<----------------->浅出============
2011-04-06 10:57
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用laoyang103在2011-4-6 10:57:02的发言:

楼上的很厉害哦

⊙﹏⊙b汗, ,就是效率太低下啦!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-06 11:02
水晰
Rank: 3Rank: 3
来 自:新疆
等 级:论坛游侠
帖 子:39
专家分:113
注 册:2011-4-6
收藏
得分:2 
挺厉害的!我们还要学习!
2011-04-06 13:10
yjj598889481
Rank: 1
等 级:新手上路
帖 子:57
专家分:2
注 册:2011-4-4
收藏
得分:0 
回复 4楼 ansic
谢谢哈~
2011-04-06 18:41
快速回复:求这道程序题~~~*-*
数据加载中...
 
   



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

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